FFmpeg (https://www.ffmpeg.org/) бул аудио жана видеону жаздыруу, конвертациялоо жана агым үчүн толук, кайчылаш платформа чечими. FFmpeg - бул адамдар жана машиналар жараткан нерселердин бардыгын чечмелей, коддоо, транскоддоштуруу, мух, демукс, агым, чыпкалоо жана ойнотууга жөндөмдүү алдыңкы мультимедиялык алкак. Ал эң түшүнүксүз байыркы форматтарды эң акыркы чекке чейин колдойт. Алар кандайдыр бир стандарттар комитети, коомчулук же корпорация тарабынан иштелип чыкканбы, айырмасы жок.
Ошондой эле абдан портативдик: FFmpeg Linux, Mac OS X, Microsoft Windows, BSDs, Solaris ж. жана конфигурациялар.
FFmpeg китепканасынын өзү LGPL 2.1 лицензиясынын астында. Айрым тышкы китепканаларды иштетүү (мисалы, libx264) лицензияны GPL 2 же андан кийинки версияга өзгөртөт.
Мен китепканаларды компиляциялоо үчүн ffmpeg-android-мейкер скриптин (салымдар: Александр Бережной Жавернаут + codacy-badger Codacy Badger + A2va) колдондум. Бул скрипт FFmpeg булак кодун https://www.ffmpeg.org сайтынан жүктөп алып, китепкананы куруп, аны Android үчүн чогултат. Скрипт жалпы китепканаларды (*.so файлдары) жана баш файлдарды (*.h файлдары) чыгарат.
ffmpeg-android-мейкеринин негизги багыты Android долбооруна үзгүлтүксүз интеграциялоо үчүн жалпы китепканаларды даярдоо болуп саналат. Скрипт колдонууга арналган `output` каталогун даярдайт. Жана бул долбоордун кылганы жалгыз эмес. ffmpeg-android жасоочунун булак коду MIT лицензиясы астында жеткиликтүү. https://github.com/Javernaut/ffmpeg-android-maker/ дареги боюнча кененирээк маалымат алуу үчүн LICENSE.txt файлын караңыз. eXport-it FFmpeg китепканалары жөн эле libaom, libdav1d, liblame, libopus жана libtwolame менен түзүлөт...бирок бардык байланышкан китепканалар эмес.
FFmpeg үчүн Java колдоосун иштеп чыгуу жана аны Android 7.1ден 12ге чейин иштетүү үчүн, мен Танер Сенер тарабынан https://github.com/tanersener/mobile-ffmpeg/ документтештирилген MobileFFmpeg долбоорунан баштадым. ... жана LGPL 3.0 астында лицензияланган ...
Акыры, китепканалар менен JNI Android Studio долбоорун даярдадым, файлдарды жана Java колдоо кодун камтып, учурдагы долбоорлорума кошумча китепкана катары интеграциялоо үчүн .aar Library файлын түздүм.
Мультикаст каналды баштоо үчүн кардарды колдонуу, FFmpeg колдоосу менен жергиликтүү тармагыңыздагы (Wi-Fi) UPnP серверине кирүү керек. Бул сервер экспорттогон файлдардын тизмеси менен жооп бериши керек. Бул сервер FFmpeg колдоосуна ээ болсо, тизме бетинин жогорку саптын аягында кызыл түстө "Канал катары" деген кичинекей текст көрсөтүлүшү керек. Текст "кызыл" болгондо, "ойноо" баскычын басуу UPnP протоколун колдонуудан мурункудай иштейт. Эгер сиз текстти чыкылдатсаңыз, ал "жашыл" болуп, "ойнотуу" баскычын чыкылдатуу менен видео же аудио файлдарды тандагандан кийин "каналды" баштоо керек.
Тандалган медиа файлдар, сыягы, UPnP аркылуу ойнотулгандай эле ойнотулат, бирок кошумча тапшырмалардан улам ишке киргизүү кечигүүсү узагыраак болот. Түтүктүн активдүү болушу үчүн бул кардарды медиа файлдарды ойнотуп турушуңуз керек.
IP мультикаст Интернет аркылуу иштебейт, ал жергиликтүү тармакта гана иштейт, ошону менен негизинен Wi-Fi. Көптөгөн маалымат каналын бир эле учурда көптөгөн кардарлар бөлүшө алат. Сиз Wi-Fi тармагыңызда медиа берилиштер агымын жөнөтүп жатасыз жана бул дайындарды туташкан түзмөктөрдө дээрлик синхрондуу түрдө көрсөтүңүз, болгону күтүү убакытынын айырмасы гана.
UPnP же HTTP агымы менен ар бир түзмөк көрсөтүлгөн видеонун өткөрүү жөндөмдүүлүгүн талап кылат жана глобалдык өткөрүү жөндөмдүүлүгү эки трафиктин суммасы болуп саналат. Мультикаст агымы менен биз LANга бир маалымат агымын жөнөтөбүз, ал бир нече кардарлардын ортосунда бөлүштүрүлөт.
Эгер сиз каналды баштагандан кийин тармагыңызда башка кардарды колдонсоңуз, анда кардардын негизги терезесинде кошумча линияны көрүшүңүз керек. Бул сызыкты чыкылдатуу менен шоу башталышы керек.
Ошондой эле VLC, SMplayer сыяктуу башка өнүмдөрдү ... eXport-it кардарында көрсөтүлгөн "UDP" URL аркылуу эле мультикаст каналы аркылуу таратылган музыканы угуу же видео көрсөтүү үчүн колдонууга болот. б>
Мультикастрациялуу Каналды токтотуунун жакшы жолу - аны сиз баштаган кардарда токтотуу, анткени бул канал ошол жерде көзөмөлдөнөт. Агылган медиа файлдарды аягына чейин ойнотуу да көрсөтүүнүн аягына чыгышы керек.
Мультикаст каналды баштоо үчүн менин башка заманбап өнүмдөрүмдүн 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 протоколунун жардамы менен сиз колдонуучунун атын жана сырсөзүн аныктай аласыз жана белгилүү бир колдонуучулар үчүн кээ бир медиа файлдарына кирүү мүмкүнчүлүгүн чектеп, кирүү категорияларына (группаларына) файлдарды орното аласыз. Сервердин жөндөөлөрү кайсы файлдардын бөлүштүрүлүшүн чектөөгө жана керек болсо ар бир файлга категория атын коюуга уруксат берет.