FFmpeg (https://www.ffmpeg.org/) çareseriyek bêkêmasî, cross-platform e ku ji bo tomarkirin, veguheztin û kişandina deng û vîdyoyê ye. FFmpeg çarçoweya multîmedya ya pêşeng e, ku dikare hema her tiştê ku mirov û makîneyan afirandiye deşîfre bike, şîfre bike, veguherîne, mux, demux, biherikîne, fîlter bike û bilîze. Ew formatên kevnar ên herî nezelal heya kêleka jêbir piştgirî dike. Ne girîng e ku ew ji hêla hin komîteya standardan, civak an pargîdaniyek ve hatine sêwirandin.
Ew jî pir veguhêz e: FFmpeg binesaziya meya ceribandinê FATE li Linux, Mac OS X, Microsoft Windows, BSD, Solaris, hwd... di bin cûrbecûr hawîrdorên çêkirinê, mîmariya makîneyê de berhev dike, dimeşîne û derbas dike, û veavakirin.
Pirtûkxaneya FFmpeg bixwe di bin LGPL 2.1 lîsansa de ye. Çalakkirina hin pirtûkxaneyên derve (wek libx264) lîsansê diguherîne ku bibe GPL 2 an nûtir.
Min skrîpta ffmpeg-android-maker (hevkar: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) ji bo berhevkirina pirtûkxaneyan bikar anî. Ev skrîpt koda çavkaniyê ya FFmpeg ji https://www.ffmpeg.org dadixe û pirtûkxaneyê ava dike û ji bo Android-ê dicivîne. Nivîsar pirtûkxaneyên hevpar (pelên *.so) û her weha pelên sernavê (pelên *.h) çêdike.
Armanca sereke ya ffmpeg-android-maker amadekirina pirtûkxaneyên hevpar e ji bo entegrasyona bêkêmasî di projeyek Android de. Skrîpt pelrêça `derketî` ya ku tê xwestin were bikar anîn amade dike. Û ev ne tenê tiştê ku ev proje dike ye. Koda çavkaniyê ya ffmpeg-android-maker di bin lîsansa MIT de heye. Ji bo bêtir agahdarî li ser https://github.com/Javernaut/ffmpeg-android-maker/, Pelê LICENSE.txt bibînin Pirtûkxaneyên eXport-it FFmpeg tenê bi libaom, libdav1d, liblame, libopus û libtwolame...lê ne hemî pirtûkxaneyên têkildar têne berhev kirin.
Ji bo pêşvebirina piştgirîya Java ji bo FFmpeg û meşandina wê li ser Android 7.1 heta 12, min ji projeya MobileFFmpeg ya ku li https://github.com/tanersener/mobile-ffmpeg/ ji hêla Taner Sener ve hatî belgekirin dest pê kir, ku êdî nayê domandin. ... û di bin LGPL 3.0 ...
de ye.Di dawiyê de, min bi pirtûkxaneyan re projeyek JNI Android Studio amade kir, pelan û koda piştgirîya Java-yê tê de cih girt, û pelek Pirtûkxaneya .aar hilberand da ku wekî pirtûkxaneyek zêde tev li projeyên xwe yên heyî bikim.
Ji bo destpêkirina kanalek pirzimanî pêdivî ye ku meriv xerîdarek bikar bîne, da ku bi piştgirîya FFmpeg bigihîje serverek UPnP li ser tora xweya herêmî (Wi-Fi). Divê ev server bi navnîşa pelên ku ew hinarde dike bersiv bide. Ger ev server piştgirîya FFmpeg hebe, divê nivîsek piçûk "Wek kanalek" di dawiya rêza jorîn a rûpelê navnîşê de bi rengê sor were xuyang kirin. Dema ku nivîs "sor" be, tikandina bişkoka "lîstin" wekî berê protokola UPnP bikar tîne dixebite. Ger hûn li ser nivîsê bitikînin, divê ew bibe "kesk" û klîkkirina li ser bişkoka "lîstin"ê, piştî hilbijartina pelên vîdyoyî an dengî, divê "kanalek" dest pê bike.
Pelên medyayê yên hilbijartî bi UPnP-ê bi heman awayî têne lîstin, ji bilî ku derengiya destpêkirinê ji ber karên zêde dirêjtir e. Divê hûn vê muwekîlê pelên medyayê bihêlin da ku boriyê çalak bihêlin.
IP multicast li ser Înternetê naxebite, ew tenê li ser Tora Herêmî ya Herêmî dixebite, bi vî rengî bi giranî li ser Wi-Fi. Kanalek daneya multicast dikare ji hêla gelek xerîdar ve di heman demê de were parve kirin. Hûn herikîna daneya medyayê li ser tora xweya Wi-Fi dişînin û van daneyan li ser cîhazên girêdayî nîşan didin, hema hema hemdem, tenê cûdahiya derengiya derengiyê.
Bi weşana UPnP an jî HTTP re, her amûrek band firehiya vîdyoya ku tê xuyang kirin hewce dike û bandfirehiya gerdûnî berhevoka her du seyrûseferê ye. Bi weşana multicast re, em yek herikîna daneyê li ser LAN-ê dişînin ku di navbera gelek xerîdar de tê parve kirin.
Heke hûn piştî destpêkirina kanalekê li ser tora xwe xerîdarek din bikar bînin, divê hûn li ser pencereya sereke ya xerîdar xetek zêde bibînin. Tenê li ser vê rêzê bikirtînin divê pêşandan dest pê bike.
Di heman demê de gengaz e ku meriv hilberên din ên mîna VLC, SMplayer, ... bikar bîne da ku vîdyoyek nîşan bide an jî guhdarîkirina muzîka ku li ser kanalek pirzimanî hatî belav kirin tenê bi karanîna URL-ya "UDP" ya ku li ser xerîdar eXport-it hatî xuyang kirin bikar bîne. p>
Rêya baş a rawestandina Kanalek pirzimanî ev e ku meriv wê li ser muwekîlê ku we dest pê kiriye rawestîne ji ber ku ev kanal li wir tê kontrol kirin. Pêdivî ye ku heya dawiya pelên medyayê yên hatine lîstin dawiya pêşandanê jî bide.
Ji bo destpêkirina kanalek pirzimanî pêdivî ye ku beşek xerîdar a taybetî ya vê serîlêdanê hebe, mîna muwekîlê eXport-it ya hilberên min ên din ên nûjen. Bikaranîna kanalek pirzimanî ya xebitandinê dikare bi muwekîlê serîlêdanê an bi hilberên din ên mîna VLC, SMPlayer, ... li ser platformên din an li ser Android-ê têne xebitandin were kirin. Dema ku VLC bikar tîne, URL-ya ku kanalek Multicast bikar bîne bi hêsanî cûda ye mîna udp://@239.255.147.111:27192... tenê bi "@"ek zêde. Bi kanalek UDP Multicast, daneyên medyayê tenê carekê têne şandin da ku li ser gelek xerîdar werin xuyang kirin, lê hevdengiyek rastîn tune, û dereng li gorî tampon û taybetmendiyên cîhazê dikare saniyeyan be.
Guhdarîkirina kanaleke dengî ya pirzimanî dikare bi hilberên din re were kirin lê xerîdarek taybetî wêneyên ku bi IP-ya pir-kast jî hatine şandin nîşan dide. Heke hûn dixwazin wêneyên taybetî bi muzîka xwe re bişînin, hûn dikarin vebijarka menuya "Rûpel 2" ya li ser serverê bikar bînin, tenê wêneyên ku hûn dixwazin hilbijêrin, bi yek klîk hemî wêneyan rakin, dûv re vana ku hûn dixwazin hilbijêrin... p>
Di her protokolê de awantaj û nerehetî hene. Kanala UPnP û Multicast tenê dikare li ser tora herêmî (bi piranî Wi-Fi) were bikar anîn, weşana HTTP herêmî lê di heman demê de li ser Înternetê jî dixebite û gerokek Webê wekî xerîdar bikar tîne. Kanala UPnP û Multicast ji bo kontrolkirina gihîştinê rêyek ewle nîne, û her amûrek ku bi tora Wi-Fi ve girêdayî ye dikare servera xebitandinê bikar bîne. Bi protokola HTTP, hûn dikarin navên bikarhêner û şîfreyan diyar bikin, û pelan di kategoriyên gihîştinê (koman) de bicîh bikin, gihandina hin pelên medyayê ji bo bikarhênerên taybetî sînordar bikin. Mîhengên serverê destûrê dide ku pelên ku têne belav kirin sînordar bike û heke hewce bike navek kategorî ji her pelê re were danîn.