back

eXport-it FFmpeg

Co je knihovna FFmpeg?

FFmpeg (https://www.ffmpeg.org/) je kompletní řešení pro více platforem pro záznam, převod a streamování zvuku a videa. FFmpeg je přední multimediální framework, který je schopen dekódovat, kódovat, transkódovat, muxovat, demuxovat, streamovat, filtrovat a přehrávat téměř cokoli, co vytvořili lidé a stroje. Podporuje ty nejobskurnější starověké formáty až po nejmodernější. Bez ohledu na to, zda je navrhl nějaký výbor pro standardy, komunita nebo korporace.

Je také vysoce přenosný: FFmpeg kompiluje, spouští a předává naši testovací infrastrukturu FATE napříč Linuxem, Mac OS X, Microsoft Windows, BSD, Solaris atd... v širokém spektru sestavovacích prostředí, strojových architektur, a konfigurace.

Samotná knihovna FFmpeg je pod licence LGPL 2.1. Povolením určitých externích knihoven (jako je libx264) se licence změní na GPL 2 nebo novější.

Jak je tato knihovna integrována do aplikace pro Android

K kompilaci knihoven jsem použil skript ffmpeg-android-maker (přispěvatelé: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va). Tento skript stáhne zdrojový kód FFmpeg z https://www.ffmpeg.org a vytvoří knihovnu a sestaví ji pro Android. Skript vytváří sdílené knihovny (soubory *.so) a také hlavičkové soubory (soubory *.h).

Hlavním cílem ffmpeg-android-maker je připravit sdílené knihovny pro bezproblémovou integraci do projektu Android. Skript připraví adresář `output`, který má být použit. A není to jediná věc, kterou tento projekt dělá. Zdrojový kód ffmpeg-android-maker je dostupný pod licencí MIT. Další podrobnosti naleznete v souboru LICENSE.txt na https://github.com/Javernaut/ffmpeg-android-maker/ Knihovny eXport-it FFmpeg jsou právě zkompilovány s libaom, libdav1d, liblame, libopus a libtwolame...ale ne se všemi přidruženými knihovnami.

Pro vývoj podpory Java pro FFmpeg a její spuštění na Androidu 7.1 až 12 jsem začal z projektu MobileFFmpeg zdokumentovaného na https://github.com/tanersener/mobile-ffmpeg/ od Tanera Senera, který již není udržován ... a je licencován podle LGPL 3.0 ...

Nakonec jsem připravil projekt JNI Android Studio s knihovnami, včetně souborů a podpůrného kódu Java a vygeneroval soubor .aar Library pro integraci jako další knihovnu do mých stávajících projektů.


Jak spustit vícesměrový kanál

Spuštění kanálu vícesměrového vysílání vyžaduje použití klienta pro přístup k serveru UPnP ve vaší místní síti (Wi-Fi) s podporou FFmpeg. Tento server by měl odpovědět se seznamem souborů, které exportuje. Pokud má tento server podporu FFmpeg, musí být na konci horního řádku stránky seznamu červeně zobrazen malý text „Jako kanál“. Když je text "červený", kliknutí na tlačítko "play" funguje jako před použitím protokolu UPnP. Pokud kliknete na text, měl by se stát „zeleným“ a kliknutím na tlačítko „přehrát“ po výběru video nebo audio souborů by se měl spustit „kanál“.

Vybrané mediální soubory se přehrávají zjevně stejným způsobem než prostřednictvím UPnP, s tím rozdílem, že zpoždění při spuštění je delší kvůli dalším úkolům. Musíte nechat tohoto klienta přehrávat mediální soubory, aby kanál zůstal aktivní.

Použití tohoto kanálu na jiných zařízeních

IP multicast nefunguje přes internet, funguje pouze v místní síti, tedy hlavně na Wi-Fi. Vícesměrový datový kanál může být sdílen mnoha klienty současně. Odesíláte datový tok médií ve své síti Wi-Fi a zobrazujete tato data na připojených zařízeních téměř synchronně, pouze rozdíl ve zpoždění latence.

Při streamování UPnP nebo HTTP vyžaduje každé zařízení šířku pásma zobrazeného videa a globální šířka pásma je součtem obou přenosů. Při multicastovém streamování posíláme jeden datový tok v síti LAN, který je sdílen mezi více klienty.

Pokud po spuštění kanálu používáte ve své síti jiného klienta, měli byste v hlavním okně klienta vidět další řádek. Pouhým kliknutím na tento řádek byste měli spustit show.

Je také možné použít další produkty, jako je VLC, SMplayer, ... k zobrazení videa nebo poslechu hudby distribuované přes vícesměrový kanál pouze pomocí adresy URL „UDP“ zobrazené na klientovi eXport-it.

p>

Zastavení kanálu vícesměrového vysílání

Dobrým způsobem, jak zastavit kanál vícesměrového vysílání, je zastavit jej na klientovi, na kterém jste jej spustili, protože tento kanál je ovládán tam. Přehrání až do konce streamovaných mediálních souborů by také mělo znamenat konec pořadu.

Praktické úvahy

Spuštění vícesměrového kanálu vyžaduje specifickou klientskou část této aplikace, stejnou jako klient eXport-it mých dalších aktuálních produktů. Chcete-li použít běžící kanál vícesměrového vysílání, lze provést s klientem aplikace nebo s jinými produkty, jako je VLC, SMPlayer, ... běžící na jiných platformách nebo na Androidu. Při použití VLC je adresa URL pro použití kanálu Multicast hladce odlišná jako udp://@239.255.147.111:27192... jen se znakem „@“ navíc. U kanálu UDP Multicast jsou mediální data odeslána pouze jednou, aby byla zobrazena na více klientech, ale nedochází k žádné skutečné synchronizaci a zpoždění může být sekund v závislosti na vyrovnávací paměti a vlastnostech zařízení.

Poslech zvukového multicastového kanálu lze provádět pomocí jiných produktů, ale konkrétní klient zobrazuje obrázky také odeslané přes IP multicast. Chcete-li odeslat konkrétní fotografie s hudbou, můžete na serveru použít možnost nabídky „Strana 2“ a vybrat pouze obrázky, které chcete, jedním kliknutím zrušit výběr všech obrázků a vybrat ty, které chcete...

Každý protokol má své výhody a nevýhody. Kanál UPnP a Multicast lze používat pouze v místní síti (hlavně Wi-Fi), streamování HTTP funguje lokálně, ale také přes internet a jako klienta použijte webový prohlížeč. UPnP a kanál Multicast nemají žádný bezpečný způsob řízení přístupu a běžící server může používat jakékoli zařízení připojené k síti Wi-Fi. Pomocí protokolu HTTP můžete definovat uživatelská jména a hesla a nastavit soubory v přístupových kategoriích (skupinách), čímž omezíte přístup k některým mediálním souborům pro konkrétní uživatele. Nastavení serveru umožňuje omezit distribuované soubory a v případě potřeby nastavit název kategorie pro soubor.

back