FFmpeg (https://www.ffmpeg.org/) е комплетно, меѓуплатформско решение за снимање, конвертирање и проследување аудио и видео. FFmpeg е водечка мултимедијална рамка, способна да декодира, кодира, транскодира, mux, demux, проследува, филтрира и репродуцира речиси сè што луѓето и машините создале. Ги поддржува најнејасните антички формати до најсовремена. Без разлика дали се дизајнирани од некој комитет за стандарди, заедница или корпорација.
Исто така е многу пренослив: FFmpeg ја компајлира, извршува и ја пренесува нашата инфраструктура за тестирање FATE преку Linux, Mac OS X, Microsoft Windows, BSD, Solaris, итн... под широк спектар на средини за градење, машински архитектури, и конфигурации.
Самата библиотека FFmpeg е под лиценца LGPL 2.1. Овозможувањето на одредени надворешни библиотеки (како libx264) ја менува лиценцата да биде GPL 2 или понова.
Ја користев скриптата ffmpeg-android-maker (соработници: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) за да ги составам библиотеките. Оваа скрипта го презема изворниот код на FFmpeg од https://www.ffmpeg.org и ја гради библиотеката и ја составува за Android. Скриптата произведува споделени библиотеки (*.so датотеки) како и датотеки со заглавија (*.h датотеки).
Главниот фокус на ffmpeg-android-maker е да подготви споделени библиотеки за беспрекорна интеграција во проект за Android. Скриптата го подготвува директориумот „излезен“ што треба да се користи. И тоа не е единственото нешто што го прави овој проект. Изворниот код на 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/ од Танер Сенер, кој повеќе не се одржува ... и е лиценцирана под LGPL 3.0 ...
Конечно, подготвив проект JNI Android Studio со библиотеките, вклучив датотеки и код за поддршка на Java и генерирав датотека .aar Library за да се интегрира како дополнителна библиотека во моите постоечки проекти.
За да започнете повеќекратен канал потребно е користење на клиент, за пристап до UPnP сервер на вашата локална мрежа (Wi-Fi) со поддршка за FFmpeg. Овој сервер треба да одговори со списокот на датотеките што ги извезува. Ако овој сервер има поддршка за FFmpeg, мал текст „Како канал“ мора да биде прикажан со црвено на крајот од горната линија на страницата со список. Кога текстот е „црвен“, кликнувањето на копчето „play“ функционира како порано со користење на протоколот UPnP. Ако кликнете на текстот, тој треба да стане „зелен“ и со кликнување на копчето „play“, откако ќе изберете видео или аудио датотеки, треба да започне „канал“.
Избраните медиумски датотеки се репродуцираат очигледно на ист начин како преку UPnP, освен што доцнењето на стартувањето е подолго поради дополнителни задачи. Мора да продолжите со овој клиент да ги репродуцира медиумските датотеки за да ја задржите цевката активна.
IP multicast не работи преку Интернет, работи само на локална мрежа, а со тоа главно на Wi-Fi. Каналот за повеќекаст податоци може да биде споделен од многу клиенти истовремено. Испраќате проток на медиумски податоци на вашата Wi-Fi мрежа и ги прикажувате овие податоци на поврзаните уреди, речиси синхроно, само разликата во доцнењето на латентноста.
Со UPnP или HTTP стриминг, секој уред бара пропусниот опсег на прикажаното видео и глобалниот пропусен опсег е збир на двата сообраќајни. Со мултикаст стриминг, испраќаме еден проток на податоци на LAN кој се дели помеѓу повеќе клиенти.
Ако користите друг клиент на вашата мрежа откако ќе започнете канал, треба да видите дополнителна линија на главниот прозорец на клиентот. Само со кликнување на оваа линија треба да започне шоуто.
Исто така е изводливо да се користат други производи како VLC, SMplayer, ... за прикажување видео или слушање музика дистрибуирана преку мултикаст канал само со користење на URL-адресата „UDP“ прикажана на клиентот eXport-it. стр>
Добриот начин за запирање на повеќекратен канал е да го запрете на клиентот на кој сте го започнале бидејќи овој канал се контролира таму. Репродукцијата до крај на стримуваните медиумски датотеки исто така треба да даде крај на шоуто.
За да започнете повеќекратен канал потребен е специфичен клиент дел од оваа апликација, ист како клиентот eXport-it на моите други ажурирани производи. Да се користи активен мултикаст канал може да се направи со клиентот на апликацијата или со други производи како VLC, SMPlayer, ... кои работат на други платформи или на Android. Кога користите VLC, URL-адресата за користење Multicast канал е непречено различна како udp://@239.255.147.111:27192... само со дополнително „@“. Со UDP Multicast канал, медиумските податоци се испраќаат само еднаш за да се прикажат на повеќе клиенти, но нема вистинска синхронизација, а доцнењето може да биде секунди во зависност од баферот и карактеристиките на уредот.
Слушањето аудио мултикаст канал може да се врши со други производи, но конкретниот клиент прикажува слики испратени и преку IP мултикаст. Ако сакате да испраќате одредени фотографии со музика, можете да ја користите опцијата од менито „Страница 2“ на серверот, да ги изберете само сликите што ги сакате, да ги отселектирате сите слики со еден клик, а потоа да ги изберете оние што ги сакате... стр>
Постојат предности и непријатности со секој протокол. UPnP и Multicast каналот може да се користат само на локална мрежа (главно Wi-Fi), HTTP стримингот работи локално, но исто така и преку Интернет и користи веб-прелистувач како клиент. UPnP и Multicast каналот немаат безбеден начин за контрола на пристапот и секој уред поврзан на Wi-Fi мрежата може да го користи серверот што работи. Со протоколот HTTP, можете да дефинирате кориснички имиња и лозинки и да поставувате датотеки во категории за пристап (групи), ограничувајќи го пристапот до некои медиумски датотеки за одредени корисници. Поставките на серверот дозволуваат да се ограничат кои датотеки се дистрибуираат и да се постави име на категорија по датотека доколку е потребно.