FFmpeg (https://www.ffmpeg.org/) គឺជាដំណោះស្រាយឆ្លងវេទិកាពេញលេញដើម្បីថត បំប្លែង និងចាក់សំឡេង និងវីដេអូ។ FFmpeg គឺជាក្របខ័ណ្ឌពហុមេឌៀឈានមុខគេ អាចឌិកូដ អ៊ិនកូដ បំប្លែងកូដ mux demux ស្ទ្រីម ត្រង និងលេងអ្វីៗគ្រប់យ៉ាងដែលមនុស្ស និងម៉ាស៊ីនបានបង្កើត។ វាគាំទ្រទម្រង់បុរាណដែលមិនច្បាស់លាស់បំផុតរហូតដល់គែមកាត់។ មិនថាពួកគេត្រូវបានរចនាឡើងដោយគណៈកម្មាធិការស្តង់ដារមួយចំនួន សហគមន៍ ឬសាជីវកម្មទេ។
វាក៏អាចចល័តបានខ្ពស់ផងដែរ៖ FFmpeg ចងក្រង ដំណើរការ និងឆ្លងកាត់ហេដ្ឋារចនាសម្ព័ន្ធសាកល្បងរបស់យើង FATE នៅទូទាំង Linux, Mac OS X, Microsoft Windows, BSDs, 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 files) ក៏ដូចជាឯកសារបឋមកថា (*.h files)។
ការផ្តោតសំខាន់របស់អ្នកបង្កើត ffmpeg-android គឺដើម្បីរៀបចំបណ្ណាល័យចែករំលែកសម្រាប់ការរួមបញ្ចូលយ៉ាងរលូនទៅក្នុងគម្រោង Android ។ ស្គ្រីបរៀបចំថត 'លទ្ធផល' ដែលមានន័យថាត្រូវប្រើ។ ហើយវាមិនមែនជារឿងតែមួយគត់ដែលគម្រោងនេះធ្វើនោះទេ។ កូដប្រភពរបស់អ្នកបង្កើត ffmpeg-android មាននៅក្រោមអាជ្ញាប័ណ្ណ 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 មិនដំណើរការលើអ៊ីនធឺណិតទេ វាដំណើរការតែលើ Local Area Network ដូច្នេះភាគច្រើននៅលើ Wi-Fi។ ឆានែលទិន្នន័យពហុខាសអាចត្រូវបានចែករំលែកដោយអតិថិជនជាច្រើនក្នុងពេលដំណាលគ្នា។ អ្នកកំពុងផ្ញើលំហូរទិន្នន័យមេឌៀនៅលើបណ្តាញ Wi-Fi របស់អ្នក ហើយបង្ហាញទិន្នន័យទាំងនេះនៅលើឧបករណ៍ដែលបានភ្ជាប់ ស្ទើរតែធ្វើសមកាលកម្ម គ្រាន់តែជាភាពខុសគ្នានៃការពន្យាពេល latency ប៉ុណ្ណោះ។
ជាមួយ UPnP ឬ HTTP streaming ឧបករណ៍នីមួយៗទាមទារកម្រិតបញ្ជូននៃវីដេអូដែលបានបង្ហាញ ហើយកម្រិតបញ្ជូនសកលគឺជាផលបូកនៃចរាចរណ៍ទាំងពីរ។ ជាមួយនឹងការស្ទ្រីមពហុខាស យើងផ្ញើលំហូរទិន្នន័យមួយនៅលើ LAN ដែលត្រូវបានចែករំលែករវាងអតិថិជនច្រើន។
ប្រសិនបើអ្នកប្រើម៉ាស៊ីនភ្ញៀវផ្សេងទៀតនៅលើបណ្តាញរបស់អ្នកបន្ទាប់ពីចាប់ផ្តើមឆានែល អ្នកគួរតែឃើញបន្ទាត់បន្ថែមនៅលើបង្អួចមេរបស់អតិថិជន។ គ្រាន់តែចុចលើបន្ទាត់នេះគួរតែចាប់ផ្តើមកម្មវិធី។
វាក៏អាចប្រើផលិតផលផ្សេងទៀតដូចជា VLC, SMplayer, ... ដើម្បីបង្ហាញវីដេអូ ឬស្តាប់តន្ត្រីចែកចាយតាមឆានែលច្រើនដោយគ្រាន់តែប្រើ "UDP" URL ដែលបង្ហាញនៅលើម៉ាស៊ីនភ្ញៀវ eXport-it។ ទំ >
មធ្យោបាយដ៏ល្អសម្រាប់ការបញ្ឈប់ប៉ុស្តិ៍ពហុខាសគឺបញ្ឈប់វានៅលើម៉ាស៊ីនភ្ញៀវដែលអ្នកបានចាប់ផ្តើមវា ពីព្រោះប៉ុស្តិ៍នេះត្រូវបានគ្រប់គ្រងនៅទីនោះ។ ការលេងដល់ចុងបញ្ចប់នៃឯកសារមេឌៀដែលបានផ្សាយក៏គួរតែផ្តល់ការបញ្ចប់នៃកម្មវិធីផងដែរ។
ដើម្បីចាប់ផ្តើមឆានែលពហុខាស ទាមទារផ្នែកអតិថិជនជាក់លាក់នៃកម្មវិធីនេះ ដូចគ្នានឹងអតិថិជន eXport-it នៃផលិតផលថ្មីៗផ្សេងទៀតរបស់ខ្ញុំ។ ដើម្បីប្រើឆានែលពហុខាសដែលកំពុងដំណើរការអាចត្រូវបានធ្វើជាមួយម៉ាស៊ីនភ្ញៀវកម្មវិធីឬជាមួយផលិតផលផ្សេងទៀតដូចជា VLC, SMPlayer, ... ដែលដំណើរការនៅលើវេទិកាផ្សេងទៀតឬនៅលើប្រព័ន្ធប្រតិបត្តិការ Android ។ នៅពេលប្រើ VLC URL ដើម្បីប្រើឆានែលពហុខាសគឺខុសគ្នាយ៉ាងរលូនដូចជា udp://@239.255.147.111:27192... ដោយគ្រាន់តែមាន "@" បន្ថែម។ ជាមួយនឹងឆានែល UDP Multicast ទិន្នន័យមេឌៀត្រូវបានផ្ញើតែម្តងគត់ ដើម្បីបង្ហាញនៅលើម៉ាស៊ីនភ្ញៀវច្រើន ប៉ុន្តែមិនមានការធ្វើសមកាលកម្មពិតប្រាកដទេ ហើយការពន្យារពេលអាចមានរយៈពេលប៉ុន្មានវិនាទី អាស្រ័យលើការបណ្ដោះអាសន្ន និងលក្ខណៈឧបករណ៍។
ការស្តាប់ឆានែលពហុខាសអូឌីយ៉ូអាចធ្វើឡើងជាមួយនឹងផលិតផលផ្សេងទៀត ប៉ុន្តែអតិថិជនជាក់លាក់បង្ហាញរូបភាពដែលបានផ្ញើតាម IP multicast ផងដែរ។ ប្រសិនបើអ្នកចង់ផ្ញើរូបថតជាក់លាក់ជាមួយតន្ត្រីអ្នក អ្នកអាចប្រើជម្រើសម៉ឺនុយ "ទំព័រ 2" នៅលើម៉ាស៊ីនមេ ដើម្បីជ្រើសរើសតែរូបភាពដែលអ្នកចង់បាន ដកការជ្រើសរើសរូបភាពទាំងអស់ដោយចុចមួយបន្ទាប់មកជ្រើសរើសរូបភាពទាំងនេះដែលអ្នកចង់... ទំ >
មានអត្ថប្រយោជន៍ និងការរអាក់រអួលជាមួយពិធីការនីមួយៗ។ ប៉ុស្តិ៍ UPnP និង Multicast អាចប្រើបានតែលើបណ្តាញមូលដ្ឋាន (ជាចម្បង Wi-Fi) ការស្ទ្រីម HTTP ដំណើរការក្នុងមូលដ្ឋាន ប៉ុន្តែក៏មានអ៊ីនធឺណិត និងប្រើកម្មវិធីរុករកតាមអ៊ីនធឺណិតជាម៉ាស៊ីនភ្ញៀវ។ ប៉ុស្តិ៍ UPnP និង Multicast មិនមានវិធីសុវត្ថិភាពក្នុងការគ្រប់គ្រងការចូលប្រើទេ ហើយឧបករណ៍ណាមួយដែលបានភ្ជាប់នៅលើបណ្តាញ Wi-Fi អាចប្រើម៉ាស៊ីនមេដែលកំពុងដំណើរការ។ ជាមួយនឹងពិធីការ HTTP អ្នកអាចកំណត់ឈ្មោះអ្នកប្រើប្រាស់ និងពាក្យសម្ងាត់ ហើយកំណត់ឯកសារក្នុងប្រភេទចូលប្រើ (ក្រុម) ដោយកំណត់ការចូលប្រើឯកសារមេឌៀមួយចំនួនសម្រាប់អ្នកប្រើប្រាស់ជាក់លាក់។ ការកំណត់របស់ម៉ាស៊ីនមេអនុញ្ញាតឱ្យកំណត់ឯកសារណាមួយដែលត្រូវបានចែកចាយ និងកំណត់ឈ្មោះប្រភេទមួយក្នុងមួយឯកសារប្រសិនបើចាំបាច់។