back

eXport-it FFmpeg

Какво е библиотеката FFmpeg?

FFmpeg (https://www.ffmpeg.org/) е цялостно, междуплатформено решение за запис, конвертиране и поточно предаване на аудио и видео. FFmpeg е водещата мултимедийна рамка, способна да декодира, кодира, транскодира, мултиплициране, демуксиране, поточно предаване, филтриране и възпроизвеждане на почти всичко, което хората и машините са създали. Той поддържа най-неизвестните древни формати до най-новите. Без значение дали са проектирани от някакъв комитет по стандартите, общността или корпорация.

Също така е много преносим: FFmpeg компилира, изпълнява и предава нашата тестова инфраструктура FATE в Linux, Mac OS X, Microsoft Windows, BSD, Solaris и т.н.... в голямо разнообразие от среди за изграждане, машинни архитектури, и конфигурации.

Самата библиотека FFmpeg е под LGPL 2.1 лиценз. Активирането на определени външни библиотеки (като libx264) променя лиценза да бъде GPL 2 или по-нова версия.

Как е интегрирана тази библиотека в приложението за Android

Използвах скрипта ffmpeg-android-maker (сътрудници: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va), за да компилирам библиотеките. Този скрипт изтегля изходния код на FFmpeg от https://www.ffmpeg.org и изгражда библиотеката и я сглобява за Android. Скриптът създава споделени библиотеки (*.so файлове), както и заглавни файлове (*.h файлове).

Основният фокус на ffmpeg-android-maker е да подготви споделени библиотеки за безпроблемна интеграция в проект за Android. Скриптът подготвя директорията `output`, която е предназначена за използване. И това не е единственото, което прави този проект. Изходният код на ffmpeg-android-maker е достъпен под лиценза на MIT. Вижте файла LICENSE.txt за повече подробности на https://github.com/Javernaut/ffmpeg-android-maker/ Библиотеките eXport-it FFmpeg просто са компилирани с libaom, libdav1d, liblame, libopus и libtwolame...но не всички свързани библиотеки.

За да разработя поддръжката на Java за FFmpeg и да я стартирам на Android 7.1 до 12, започнах от проекта MobileFFmpeg, документиран на https://github.com/tanersener/mobile-ffmpeg/ от Taner Sener, който вече не се поддържа ... и е лицензиран под LGPL 3.0 ...

Накрая подготвих JNI проект за Android Studio с библиотеките, включвах файлове и код за поддръжка на Java и генерирах .aar файл с библиотека, който да се интегрира като допълнителна библиотека в съществуващите ми проекти.


<

Как да стартирам мултикаст канал

За да стартирате канал за множествено предаване, е необходимо да използвате клиент, за достъп до UPnP сървър във вашата локална мрежа (Wi-Fi) с поддръжка на FFmpeg. Този сървър трябва да отговори със списъка с файловете, които експортира. Ако този сървър поддържа FFmpeg, малък текст "Като канал" трябва да се покаже в червено в края на горния ред на страницата със списък. Когато текстът е "червен", щракването върху бутона "игра" работи както преди с UPnP протокол. Ако щракнете върху текста, той трябва да стане „зелен“ и щракването върху бутона „възпроизвеждане“, след като изберете видео или аудио файлове, трябва да стартира „канал“.

Избраните медийни файлове се възпроизвеждат очевидно по същия начин, както през UPnP, с изключение на това, че забавянето при стартиране е по-дълго поради допълнителни задачи. Трябва да поддържате този клиент да възпроизвежда медийните файлове, за да поддържате канала активен.

Използване на тази тръба на други устройства

IP multicast не работи през интернет, работи само в локална мрежа, следователно основно в Wi-Fi. Канал за данни за множествено предаване може да се споделя от много клиенти едновременно. Изпращате поток от медийни данни във вашата Wi-Fi мрежа и показвате тези данни на свързани устройства, почти синхронно, само разликата в забавянето.

С UPnP или HTTP поточно предаване всяко устройство изисква честотната лента на показания видеоклип, а глобалната честотна лента е сумата от двата трафика. С мултикаст стрийминг изпращаме един поток от данни в LAN, който се споделя между множество клиенти.

Ако използвате друг клиент в мрежата си след стартиране на канал, трябва да видите допълнителен ред в главния прозорец на клиента. Само щракване върху този ред трябва да започне шоуто.

Възможно е също така да използвате други продукти като VLC, SMplayer, ... за показване на видео или слушане на музика, разпространена по канал за множествено предаване, само като се използва URL адресът „UDP“, показан на клиента за eXport-it.

p>

За да спрете канал за множествено предаване

Добрият начин за спиране на канал за множествено предаване е да го спрете на клиента, на който сте го стартирали, защото този канал се контролира там. Възпроизвеждането до края на предаваните поточно медийни файлове също трябва да доведе до края на шоуто.

Практически съображения

За стартиране на канал за множествено предаване е необходима специфична клиентска част от това приложение, същата като клиента за eXport-it на другите ми актуални продукти. Използването на работещ мултикаст канал може да стане с клиента на приложението или с други продукти като VLC, SMPlayer, ..., работещи на други платформи или на Android. Когато използвате VLC, URL адресът за използване на канал за мултикаст е плавно различен, като udp://@239.255.147.111:27192... само с допълнително "@". При UDP Multicast канал медийните данни се изпращат само веднъж, за да бъдат показани на множество клиенти, но няма реална синхронизация и забавянето може да бъде секунди в зависимост от буферирането и характеристиките на устройството.

Слушането на аудио канал за множествено предаване може да се направи и с други продукти, но конкретният клиент показва изображения, също изпратени по IP мултикаст. Ако искате да изпратите конкретни снимки с музика, можете да използвате опцията от менюто „Страница 2“ на сървъра, за да изберете само изображенията, които искате, да премахнете избора от всички изображения с едно щракване, след което изберете тези, които искате...

Всеки протокол има предимства и неудобства. UPnP и Multicast каналът могат да се използват само в локална мрежа (главно Wi-Fi), HTTP стриймингът работи локално, но също и през Интернет и използвайте уеб браузър като клиент. UPnP и Multicast каналът нямат сигурен начин за контрол на достъпа и всяко устройство, свързано към Wi-Fi мрежата, може да използва работещия сървър. С HTTP протокола можете да дефинирате потребителски имена и пароли и да задавате файлове в категории за достъп (групи), ограничавайки достъпа до някои медийни файлове за конкретни потребители. Настройките на сървъра позволяват да се ограничи кои файлове се разпространяват и да се зададе име на категория за файл, ако е необходимо.

back