back

eXport-it FFmpeg

Ano ang FFmpeg library?

Ang FFmpeg (https://www.ffmpeg.org/) ay isang kumpletong, cross-platform na solusyon upang mag-record, mag-convert at mag-stream ng audio at video. Ang FFmpeg ay ang nangungunang multimedia framework, magagawang mag-decode, mag-encode, mag-transcode, mux, demux, mag-stream, mag-filter at maglaro ng halos anumang bagay na nilikha ng mga tao at makina. Sinusuportahan nito ang pinaka hindi kilalang mga sinaunang format hanggang sa pinakadulo. Hindi mahalaga kung ang mga ito ay dinisenyo ng ilang komite ng pamantayan, komunidad o isang korporasyon.

Ito rin ay lubos na portable: Ang FFmpeg ay nagko-compile, nagpapatakbo, at pumasa sa aming pagsubok na imprastraktura FATE sa buong Linux, Mac OS X, Microsoft Windows, ang mga BSD, Solaris, atbp... sa ilalim ng maraming uri ng build environment, mga arkitektura ng makina, at mga pagsasaayos.

Ang FFmpeg library mismo ay nasa ilalim ng LGPL 2.1 na lisensya. Ang pagpapagana ng ilang mga panlabas na library (tulad ng libx264) ay magbabago sa lisensya upang maging GPL 2 o mas bago.

Paano isinama ang library na ito sa Android application

Ginamit ko ang script ng ffmpeg-android-maker (mga nag-ambag: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) para i-compile ang mga library. Dina-download ng script na ito ang source code ng FFmpeg mula sa https://www.ffmpeg.org at bumuo ng library at binuo ito para sa Android. Gumagawa ang script ng mga shared library (*.so file) pati na rin ang mga header file (*.h file).

Ang pangunahing pokus ng ffmpeg-android-maker ay ang maghanda ng mga nakabahaging aklatan para sa tuluy-tuloy na pagsasama sa isang proyekto sa Android. Inihahanda ng script ang direktoryo ng `output` na dapat gamitin. At hindi lang ito ang ginagawa ng proyektong ito. Ang source code ng ffmpeg-android-maker ay available sa ilalim ng lisensya ng MIT. Tingnan ang LICENSE.txt file para sa higit pang mga detalye sa https://github.com/Javernaut/ffmpeg-android-maker/ Ang mga library ng eXport-it FFmpeg ay pinagsama-sama lang sa libaom, libdav1d, liblame, libopus at libtwolame...ngunit hindi lahat ng nauugnay na library.

Upang bumuo ng suporta sa Java para sa FFmpeg at patakbuhin ito sa Android 7.1 hanggang 12, nagsimula ako sa proyektong MobileFFmpeg na nakadokumento sa https://github.com/tanersener/mobile-ffmpeg/ ni Taner Sener, na hindi na pinapanatili ... at lisensyado sa ilalim ng LGPL 3.0 ...

Sa wakas, naghanda ako ng proyekto ng JNI Android Studio kasama ang mga aklatan, kasama ang mga file at Java support code, at bumuo ng .aar Library file na isasama bilang karagdagang library sa aking mga kasalukuyang proyekto.


Paano magsimula ng multicast channel

Upang magsimula ng isang multicast Channel ay nangangailangan na gumamit ng isang kliyente, upang ma-access ang isang UPnP server sa iyong lokal na network (Wi-Fi) na may suporta sa FFmpeg. Dapat sagutin ng server na ito kasama ng listahan ang mga file na ini-export nito. Kung ang server na ito ay may suporta sa FFmpeg, isang maliit na text na "Bilang isang channel" ay dapat ipakita sa pula sa dulo ng tuktok na linya ng pahina ng listahan. Kapag ang text ay "pula", ang pag-click sa "play" na buton ay gumagana tulad ng dati gamit ang UPnP protocol. Kung magki-click ka sa text, dapat itong maging "berde" at ang pag-click sa "play" na button, pagkatapos pumili ng mga video o audio file, dapat magsimula ng "channel."

Ang mga media file na napili ay tila nilalaro sa parehong paraan kaysa sa pamamagitan ng UPnP, maliban kung ang pagkaantala sa pagsisimula ay mas matagal dahil sa mga karagdagang gawain. Dapat mong panatilihing naglalaro ang kliyenteng ito ng mga media file upang mapanatiling aktibo ang pipe.

Paggamit ng pipe na ito sa iba pang mga device

Ang IP multicast ay hindi gumagana sa Internet, ito ay gumagana lamang sa Local Area Network kaya pangunahin sa Wi-Fi. Ang isang multicast data channel ay maaaring ibahagi ng maraming kliyente nang sabay-sabay. Nagpapadala ka ng daloy ng data ng media sa iyong Wi-Fi network at ipinapakita ang data na ito sa mga nakakonektang device, halos sabay-sabay, ang pagkakaiba lang ng latency sa pagkaantala.

Sa UPnP o HTTP streaming, ang bawat device ay nangangailangan ng bandwidth ng video na ipinapakita at ang global bandwidth ay ang kabuuan ng parehong trapiko. Sa multicast streaming, nagpapadala kami ng isang daloy ng data sa LAN na ibinabahagi sa pagitan ng maraming kliyente.

Kung gumagamit ka ng isa pang kliyente sa iyong network pagkatapos magsimula ng isang channel, dapat kang makakita ng karagdagang linya sa pangunahing window ng kliyente. Ang pag-click lamang sa linyang ito ay dapat magsimula ng palabas.

Maaari ding gumamit ng iba pang mga produkto tulad ng VLC, SMplayer, ... para magpakita ng video o makinig sa musikang ipinamahagi sa isang multicast channel gamit lang ang "UDP" na URL na ipinapakita sa eXport-it client.

Upang ihinto ang isang multicast channel

Ang magandang paraan para ihinto ang isang multicast na Channel ay ihinto ito sa kliyente kung saan mo ito sinimulan dahil ang channel na ito ay kinokontrol doon. Ang pag-play hanggang sa dulo ng mga naka-stream na media file ay dapat ding magbigay ng pagtatapos ng palabas.

Mga praktikal na pagsasaalang-alang

Upang magsimula ng multicast channel ay nangangailangan ng isang partikular na bahagi ng kliyente ng application na ito, kapareho ng eXport-it na kliyente ng aking iba pang napapanahon na mga produkto. Upang gumamit ng tumatakbong multicast channel ay maaaring gawin sa application client o sa iba pang mga produkto tulad ng VLC, SMPlayer, ... na tumatakbo sa iba pang mga platform o sa Android. Kapag gumagamit ng VLC ang URL upang gumamit ng Multicast channel ay maayos na naiiba tulad ng udp://@239.255.147.111:27192... na may dagdag na "@". Sa isang channel ng UDP Multicast, isang beses lang ipinapadala ang data ng media upang ipakita sa maraming kliyente, ngunit walang tunay na pag-synchronize, at ang pagkaantala ay maaaring mga segundo depende sa buffering at mga katangian ng device.

Ang pakikinig sa isang audio multicast channel ay maaaring gawin sa iba pang mga produkto ngunit ang partikular na kliyente ay nagpapakita ng mga larawang ipinadala rin sa IP multicast. Kung gusto mong magpadala ng mga partikular na larawan na may kasama kang musika, maaari mong gamitin ang opsyon sa menu na "Pahina 2" sa server, upang piliin lamang ang mga larawang gusto mo, alisin sa pagkakapili ang lahat ng mga larawan sa isang pag-click, pagkatapos ay piliin ang mga ito na gusto mo...

May mga pakinabang at abala sa bawat protocol. Magagamit lamang ang channel ng UPnP at Multicast sa lokal na network (pangunahin ang Wi-Fi), gumagana ang HTTP streaming sa lokal ngunit gayundin sa Internet at gumamit ng Web browser bilang kliyente. Ang UPnP at Multicast channel ay walang secure na paraan upang makontrol ang access, at anumang device na nakakonekta sa Wi-Fi network ay maaaring gumamit ng tumatakbong server. Gamit ang HTTP protocol, maaari mong tukuyin ang mga username at password, at magtakda ng mga file sa mga kategorya ng access (mga grupo), na nililimitahan ang pag-access sa ilang media file para sa mga partikular na user. Pinahihintulutan ng mga setting ng server na limitahan kung aling mga file ang ipapamahagi at magtakda ng pangalan ng kategorya bawat file kung kinakailangan.

back