back

eXport-it FFmpeg

ไลบรารี FFmpeg คืออะไร

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 หรือใหม่กว่า

ไลบรารีนี้รวมเข้ากับแอปพลิเคชัน Android อย่างไร

ฉันใช้สคริปต์ 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 คือการหยุดบนไคลเอนต์ที่คุณเริ่มต้นเพราะช่องนี้ถูกควบคุมที่นั่น การเล่นจนจบไฟล์สื่อที่สตรีมควรทำให้การแสดงจบลงด้วย

ข้อควรพิจารณาในทางปฏิบัติ

ในการเริ่มช่องสัญญาณมัลติคาสต์จำเป็นต้องมีส่วนไคลเอ็นต์เฉพาะของแอปพลิเคชันนี้ เช่นเดียวกับไคลเอ็นต์ eXport-it ของผลิตภัณฑ์ที่อัปเดตอื่นๆ ของฉัน ในการใช้ช่องสัญญาณมัลติคาสต์ที่รันอยู่นั้นสามารถทำได้ด้วยแอพพลิเคชั่นไคลเอนต์หรือกับผลิตภัณฑ์อื่น ๆ เช่น VLC, SMPlayer, ... ที่ทำงานบนแพลตฟอร์มอื่นหรือบน Android เมื่อใช้ VLC URL เพื่อใช้ช่อง Multicast จะแตกต่างกันอย่างราบรื่นเช่น udp://@239.255.147.111:27192... เพียงแค่มี "@" พิเศษ ด้วยช่องสัญญาณ UDP Multicast ข้อมูลสื่อจะถูกส่งเพียงครั้งเดียวเพื่อแสดงบนไคลเอนต์หลายเครื่อง แต่ไม่มีการซิงโครไนซ์ที่แท้จริง และความล่าช้าอาจเป็นวินาทีขึ้นอยู่กับบัฟเฟอร์และลักษณะของอุปกรณ์

การฟังช่องสัญญาณมัลติคาสต์เสียงสามารถทำได้กับผลิตภัณฑ์อื่น แต่ไคลเอ็นต์เฉพาะจะแสดงภาพที่ส่งผ่านมัลติคาสต์ IP ด้วย หากคุณต้องการส่งรูปภาพเฉพาะพร้อมกับเพลง คุณสามารถใช้ตัวเลือกเมนู "หน้า 2" บนเซิร์ฟเวอร์ เพื่อเลือกเฉพาะรูปภาพที่คุณต้องการ ยกเลิกการเลือกรูปภาพทั้งหมดได้ด้วยคลิกเดียว จากนั้นเลือกรูปภาพที่คุณต้องการ...

มีข้อดีและความไม่สะดวกในแต่ละโปรโตคอล ช่อง UPnP และ Multicast สามารถใช้ได้บนเครือข่ายท้องถิ่นเท่านั้น (ส่วนใหญ่เป็น Wi-Fi) การสตรีม HTTP ทำงานในพื้นที่ แต่ยังใช้อินเทอร์เน็ตและใช้เว็บเบราว์เซอร์เป็นไคลเอนต์ ช่อง UPnP และ Multicast ไม่มีวิธีที่ปลอดภัยในการควบคุมการเข้าถึง และอุปกรณ์ใดๆ ที่เชื่อมต่อกับเครือข่าย Wi-Fi ก็สามารถใช้เซิร์ฟเวอร์ที่ทำงานอยู่ได้ ด้วยโปรโตคอล HTTP คุณสามารถกำหนดชื่อผู้ใช้และรหัสผ่าน และตั้งค่าไฟล์ในประเภทการเข้าถึง (กลุ่ม) จำกัดการเข้าถึงไฟล์สื่อบางไฟล์สำหรับผู้ใช้เฉพาะ การตั้งค่าของเซิร์ฟเวอร์อนุญาตให้จำกัดไฟล์ที่จะแจกจ่ายและตั้งชื่อหมวดหมู่ต่อไฟล์หากต้องการ

back