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) เช่นเดียวกับไฟล์ส่วนหัว (ไฟล์ *.h)
จุดสนใจหลักของ ffmpeg-android-maker คือการเตรียมไลบรารีที่แชร์สำหรับการรวมเข้ากับโปรเจ็กต์ Android อย่างราบรื่น สคริปต์เตรียมไดเร็กทอรี `output' ที่ตั้งใจจะใช้ และไม่ใช่สิ่งเดียวที่โครงการนี้ทำ ซอร์สโค้ดของ 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/ โดย Taner Sener ซึ่งไม่ได้รับการดูแลอีกต่อไป ... และได้รับอนุญาตภายใต้ LGPL 3.0 ...
สุดท้ายนี้ ฉันได้เตรียมโปรเจ็กต์ JNI Android Studio พร้อมไลบรารี รวมไฟล์และโค้ดสนับสนุน Java และสร้างไฟล์ .aar Library เพื่อรวมเป็นไลบรารีเพิ่มเติมในโปรเจ็กต์ที่มีอยู่ของฉัน
ในการเริ่มต้น multicast Channel จำเป็นต้องใช้ไคลเอนต์ เพื่อเข้าถึงเซิร์ฟเวอร์ UPnP บนเครือข่ายท้องถิ่นของคุณ (Wi-Fi) ด้วยการสนับสนุน FFmpeg เซิร์ฟเวอร์นี้ควรตอบด้วยรายการไฟล์ที่ส่งออก หากเซิร์ฟเวอร์นี้รองรับ FFmpeg ข้อความขนาดเล็ก "As a channel" จะต้องแสดงเป็นสีแดงที่ท้ายบรรทัดบนสุดของหน้ารายการ เมื่อข้อความเป็น "สีแดง" ให้คลิกที่ปุ่ม "เล่น" เหมือนเดิมโดยใช้โปรโตคอล UPnP หากคุณคลิกที่ข้อความ ข้อความควรกลายเป็น "สีเขียว" และคลิกที่ปุ่ม "เล่น" หลังจากเลือกไฟล์วิดีโอหรือไฟล์เสียงแล้ว ควรเริ่ม "ช่อง"
ไฟล์สื่อที่เลือกจะเล่นในลักษณะเดียวกันกับผ่าน UPnP อย่างเห็นได้ชัด ยกเว้นการหน่วงเวลาการเริ่มต้นระบบจะนานขึ้นเนื่องจากมีงานเพิ่มเติม คุณต้องให้ไคลเอนต์นี้เล่นไฟล์สื่อเพื่อให้ไปป์ใช้งานได้
IP multicast ไม่ทำงานบนอินเทอร์เน็ต แต่ใช้งานได้เฉพาะบน Local Area Network ซึ่งส่วนใหญ่ทำงานบน Wi-Fi ลูกค้าหลายรายสามารถแชร์ช่องข้อมูลแบบหลายผู้รับพร้อมกันได้ คุณกำลังส่งข้อมูลสื่อบนเครือข่าย Wi-Fi และแสดงข้อมูลเหล่านี้ในอุปกรณ์ที่เชื่อมต่อ เกือบจะซิงโครไนซ์ เพียงความแตกต่างของความล่าช้าในการตอบสนอง
ด้วยการสตรีม UPnP หรือ HTTP อุปกรณ์แต่ละเครื่องต้องการแบนด์วิดท์ของวิดีโอที่แสดง และแบนด์วิดท์ทั่วโลกคือผลรวมของการรับส่งข้อมูลทั้งสอง ด้วยการสตรีมแบบหลายผู้รับ เราส่งหนึ่งโฟลว์ข้อมูลบน LAN ซึ่งใช้ร่วมกันระหว่างไคลเอนต์หลายเครื่อง
หากคุณใช้ไคลเอ็นต์อื่นในเครือข่ายของคุณหลังจากเริ่มช่อง คุณควรเห็นบรรทัดเพิ่มเติมในหน้าต่างหลักของไคลเอ็นต์ เพียงแค่คลิกที่บรรทัดนี้ก็จะเริ่มการแสดง
นอกจากนี้ยังมีความเป็นไปได้ที่จะใช้ผลิตภัณฑ์อื่นๆ เช่น VLC, SMplayer, ... เพื่อแสดงวิดีโอหรือฟังเพลงที่เผยแพร่ผ่านช่องมัลติคาสต์โดยใช้ URL "UDP" ที่แสดงบนไคลเอ็นต์ eXport-it
p>วิธีที่ดีในการหยุด multicast Channel คือการหยุดบนไคลเอนต์ที่คุณเริ่มต้นเพราะช่องนี้ถูกควบคุมที่นั่น การเล่นจนจบไฟล์สื่อที่สตรีมควรทำให้การแสดงจบลงด้วย