back

eXport-it FFmpeg

Was ist die FFmpeg-Bibliothek?

FFmpeg (https://www.ffmpeg.org/) ist eine vollständige, plattformübergreifende Lösung zum Aufnehmen, Konvertieren und Streamen von Audio und Video. FFmpeg ist das führende Multimedia-Framework, das so ziemlich alles decodieren, codieren, transcodieren, muxen, demuxen, streamen, filtern und wiedergeben kann, was Menschen und Maschinen erstellt haben. Es unterstützt die obskursten alten Formate bis hin zu den modernsten. Egal, ob sie von einem Standardkomitee, der Community oder einem Unternehmen entworfen wurden.

Es ist auch sehr portabel: FFmpeg kompiliert, führt aus und übergibt unsere Testinfrastruktur FATE über Linux, Mac OS X, Microsoft Windows, die BSDs, Solaris usw. unter einer Vielzahl von Build-Umgebungen, Maschinenarchitekturen, und Konfigurationen.

Die FFmpeg-Bibliothek selbst steht unter der LGPL 2.1-Lizenz. Das Aktivieren bestimmter externer Bibliotheken (wie libx264) ändert die Lizenz auf GPL 2 oder höher.

Wie wird diese Bibliothek in die Android-Anwendung integriert

Ich habe das ffmpeg-android-maker-Skript (Beitragende: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) verwendet, um die Bibliotheken zu kompilieren. Dieses Skript lädt den Quellcode von FFmpeg von https://www.ffmpeg.org herunter und erstellt die Bibliothek und assembliert sie für Android. Das Skript erstellt gemeinsam genutzte Bibliotheken (*.so-Dateien) sowie Header-Dateien (*.h-Dateien).

Das Hauptaugenmerk von ffmpeg-android-maker liegt auf der Vorbereitung gemeinsam genutzter Bibliotheken für die nahtlose Integration in ein Android-Projekt. Das Skript bereitet das `output`-Verzeichnis vor, das verwendet werden soll. Und das ist nicht das einzige, was dieses Projekt tut. Der Quellcode des ffmpeg-Android-Herstellers ist unter der MIT-Lizenz verfügbar. Siehe die LICENSE.txt-Datei für weitere Details auf https://github.com/Javernaut/ffmpeg-android-maker/ Die eXport-it FFmpeg-Bibliotheken sind nur mit libaom, libdav1d, liblame, libopus und libtwolame kompiliert ... aber nicht mit allen zugehörigen Bibliotheken.

Um die Java-Unterstützung für FFmpeg zu entwickeln und auf Android 7.1 bis 12 auszuführen, habe ich mit dem MobileFFmpeg-Projekt begonnen, das auf https://github.com/tanersener/mobile-ffmpeg/ von Taner Sener dokumentiert ist und nicht mehr gepflegt wird ... und ist lizenziert unter LGPL 3.0 ...

Schließlich habe ich ein JNI-Android-Studio-Projekt mit den Bibliotheken vorbereitet, Dateien und Java-Unterstützungscode eingeschlossen und eine .aar-Bibliotheksdatei generiert, um sie als zusätzliche Bibliothek in meine bestehenden Projekte zu integrieren.


So starten Sie einen Multicast-Kanal

Um einen Multicast-Kanal zu starten, müssen Sie einen Client verwenden, um auf einen UPnP-Server in Ihrem lokalen Netzwerk (Wi-Fi) mit FFmpeg-Unterstützung zuzugreifen. Dieser Server sollte mit der Liste der Dateien antworten, die er exportiert. Wenn dieser Server über die FFmpeg-Unterstützung verfügt, muss am Ende der obersten Zeile der Listenseite ein kleiner Text „As a channel“ in Rot angezeigt werden. Wenn der Text "rot" ist, funktioniert das Klicken auf die Schaltfläche "Play" wie zuvor mit dem UPnP-Protokoll. Wenn Sie auf den Text klicken, sollte er "grün" werden und ein Klick auf die Schaltfläche "Play", nachdem Sie Video- oder Audiodateien ausgewählt haben, sollte einen "Kanal" starten.

Die ausgewählten Mediendateien werden anscheinend auf die gleiche Weise wie über UPnP abgespielt, außer dass die Startverzögerung aufgrund zusätzlicher Aufgaben länger ist. Sie müssen diesen Client die Mediendateien abspielen lassen, damit die Pipe aktiv bleibt.

Diese Pipe auf anderen Geräten verwenden

IP-Multicast funktioniert nicht über das Internet, es funktioniert nur im Local Area Network, also hauptsächlich über Wi-Fi. Ein Multicast-Datenkanal kann von vielen Clients gleichzeitig gemeinsam genutzt werden. Sie senden einen Mediendatenstrom über Ihr Wi-Fi-Netzwerk und zeigen diese Daten auf verbundenen Geräten nahezu synchron an, nur die Latenzverzögerungsdifferenz.

Bei UPnP- oder HTTP-Streaming benötigt jedes Gerät die Bandbreite des angezeigten Videos und die globale Bandbreite ist die Summe aus beiden Datenverkehr. Beim Multicast-Streaming senden wir einen Datenfluss über das LAN, der von mehreren Clients geteilt wird.

Wenn Sie nach dem Starten eines Kanals einen anderen Client in Ihrem Netzwerk verwenden, sollten Sie eine zusätzliche Zeile im Hauptfenster des Clients sehen. Ein Klick auf diese Zeile sollte die Show starten.

Es ist auch möglich, andere Produkte wie VLC, SMplayer, ... zu verwenden, um ein Video anzuzeigen oder Musik zu hören, die über einen Multicast-Kanal verteilt wird, indem einfach die "UDP"-URL verwendet wird, die auf dem eXport-it-Client angezeigt wird.

p>

Um einen Multicast-Kanal zu stoppen

Die beste Methode zum Stoppen eines Multicast-Kanals besteht darin, ihn auf dem Client zu stoppen, auf dem Sie ihn gestartet haben, da dieser Kanal dort gesteuert wird. Das Abspielen bis zum Ende von gestreamten Mediendateien sollte auch das Ende der Show anzeigen.

Praktische Überlegungen

Um einen Multicast-Kanal zu starten, ist ein bestimmter Client-Teil dieser Anwendung erforderlich, genau wie der eXport-it-Client meiner anderen aktuellen Produkte. Die Verwendung eines laufenden Multicast-Kanals kann mit dem Anwendungsclient oder mit anderen Produkten wie VLC, SMPlayer, ... erfolgen, die auf anderen Plattformen oder auf Android ausgeführt werden. Bei Verwendung von VLC unterscheidet sich die URL zur Verwendung eines Multicast-Kanals nahtlos wie udp://@239.255.147.111:27192 ... nur mit einem zusätzlichen "@". Bei einem UDP-Multicast-Kanal werden die Mediendaten nur einmal gesendet, um auf mehreren Clients angezeigt zu werden, aber es gibt keine echte Synchronisation, und die Verzögerung kann je nach Pufferung und Geräteeigenschaften Sekunden betragen.

Das Abhören eines Audio-Multicast-Kanals kann mit anderen Produkten erfolgen, aber der spezifische Client zeigt Bilder, die auch über IP-Multicast gesendet werden. Wenn Sie bestimmte Fotos mit Ihrer Musik senden möchten, können Sie die Menüoption "Seite 2" auf dem Server verwenden, um nur die gewünschten Bilder auszuwählen, alle Bilder mit einem Klick abzuwählen und dann die gewünschten auszuwählen ...

Bei jedem Protokoll gibt es Vor- und Nachteile. UPnP- und Multicast-Kanal können nur im lokalen Netzwerk (hauptsächlich Wi-Fi) verwendet werden, HTTP-Streaming funktioniert lokal, aber auch über das Internet und verwendet einen Webbrowser als Client. UPnP- und Multicast-Kanal haben keine sichere Möglichkeit, den Zugriff zu kontrollieren, und jedes Gerät, das mit dem Wi-Fi-Netzwerk verbunden ist, kann den laufenden Server verwenden. Mit dem HTTP-Protokoll können Sie Benutzernamen und Kennwörter definieren und Dateien in Zugriffskategorien (Gruppen) festlegen, wodurch der Zugriff auf einige Mediendateien für bestimmte Benutzer eingeschränkt wird. Die Einstellungen des Servers erlauben es, einzuschränken, welche Dateien verteilt werden, und bei Bedarf einen Kategorienamen pro Datei festzulegen.

back