คอนเทนเนอร์และตัวแปลงรหัส

เดเร็ก เฮอร์แมน
เดเร็ก เฮอร์แมน
โจ เมดเลย์
โจ เมดเลย์

หากต้องการรองรับหลายเบราว์เซอร์ คุณจะต้องใช้ FFmpeg เพื่อแปลงไฟล์ .mov เป็นคอนเทนเนอร์ 2 รายการ ได้แก่ คอนเทนเนอร์ MP4 และคอนเทนเนอร์ WebM ในความเป็นจริง คุณอาจจะระบุตัวแปลงรหัสไปพร้อมๆ กัน ตอนนี้เราจะให้ FFmpeg ใช้ค่าเริ่มต้น

หากคุณยังไม่คุ้นเคยกับแนวคิดเหล่านี้ คุณควรอ่านข้อมูลเบื้องต้นเกี่ยวกับไฟล์สื่อก่อนที่จะดำเนินการต่อ นอกจากนี้ หากคุณไม่ได้ติดตั้ง FFmpeg ไว้ โปรดอ่านข้อมูลเบื้องต้นเกี่ยวกับแอปพลิเคชันสื่อเพื่อตั้งค่าด้วย Docker

เรากำลังใช้การติดตั้ง Docker ที่แนะนำและไฟล์ glocken.mov จากหัวข้อเตรียมไฟล์สื่อสำหรับเว็บที่เพิ่มไว้ภายในไดเรกทอรี media เราใช้ FFmpeg เวอร์ชัน 4.3.2 สำหรับคำสั่งทั้งหมดในส่วนนี้

คอนเทนเนอร์

ก่อนอื่น เราต้องสร้างคอนเทนเนอร์ 2 รายการจากไฟล์ .mov ที่มีนามสกุลไฟล์ .mp4 และ .webm ซึ่งมีทั้งสตรีมเสียงและวิดีโออยู่ภายในไฟล์ อ่านข้อมูลพื้นฐานเกี่ยวกับไฟล์สื่อเพื่อให้ทราบเพิ่มเติมเกี่ยวกับคอนเทนเนอร์และสตรีมหากไม่ทราบความแตกต่าง

  1. MP4

    /media # ffmpeg -i glocken.mov glocken.mp4
    
  2. WebM

    /media # ffmpeg -i glocken.mov glocken.webm
    

WebM ใช้เวลาสร้างนานกว่า MP4 จึงไม่น่าแปลกใจเมื่อคุณดูผลลัพธ์ แม้ว่า MP4 จะบีบอัดเป็นขนาดประมาณ 83% ของขนาดไฟล์ต้นฉบับ แต่ WebM จะลดขนาดลงเป็น 78% ของขนาดต้นฉบับ แต่มีขนาดเล็กกว่ามากได้ ผลลัพธ์จะแตกต่างกันไป โปรดทราบว่า FFmpeg 4.2.2 ได้ตั้งค่าอัตราบิตเริ่มต้นของวิดีโอเป็น 200k และใน 4.3.2 ไม่ได้ตั้งค่าอัตราบิตเริ่มต้น ดังนั้น วิดีโอดังกล่าวจึงไม่ได้เป็นเพียง4%วิดีโอต้นฉบับอีกต่อไป คุณดูข้อมูลนี้ได้ด้วยตนเองโดยใช้คำสั่ง Bash ls -a ในโฟลเดอร์ที่มีไฟล์สื่ออยู่

เช่น

/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root   9503301 Mar 7 18:30 glocken.webm

หากต้องการไฟล์ขนาดเล็ก คุณต้องทำดังนี้

/media # ffmpeg -i glocken.mov -b:v 200k glocken.webm
...
frame=  300 fps=3.6 q=0.0 Lsize=     483kB time=00:00:10.01 bitrate= 395.0kbits/s speed=0.121x
video:359kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.356068%
/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root    494497 Mar 7 18:45 glocken.webm

ตรวจสอบงานของคุณ

หากต้องการยืนยันผลลัพธ์ ให้ใช้ FFmpeg และ Shaka Packager ตามที่แสดงในพื้นฐานแอปพลิเคชันสื่อดังนี้

/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4

ตัวแปลงรหัส

ต่อไป ตัวแปลงรหัส ตามที่ระบุไว้ในข้อมูลพื้นฐานเกี่ยวกับไฟล์สื่อ ตัวแปลงรหัสไม่ใช่สิ่งที่เหมือนกับคอนเทนเนอร์ (ประเภทไฟล์) ไฟล์ 2 ไฟล์ประเภทเดียวกันคอนเทนเนอร์ อาจเก็บข้อมูลที่บีบอัดโดยใช้ตัวแปลงรหัสที่ต่างกัน เช่น รูปแบบ WebM ช่วยให้เข้ารหัสเสียงได้โดยใช้ Vorbis หรือ Opus ในการเปลี่ยนตัวแปลงรหัส เราใช้ FFmpeg เช่น คำสั่งนี้ส่งออกไฟล์ .mkv ที่มีตัวแปลงรหัสเสียง vorbis และตัวแปลงรหัสวิดีโอ av1

/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv

ในตัวอย่างนี้ แฟล็ก -c:a และ -c:v มีไว้สำหรับระบุตัวแปลงสัญญาณเสียงและวิดีโอตามลำดับ

หน้า Conversion สื่อจะแสดงคำสั่งที่จำเป็นในการแปลงตัวแปลงรหัส ตารางด้านล่างจะสรุปไลบรารีที่ใช้ใน FFmpeg เพื่อทำการแปลงตัวแปลงรหัสสำหรับไฟล์ WebM และ MP4 รูปแบบเหล่านี้คือรูปแบบที่แนะนำสำหรับ DASH และ HLS ตามลำดับ

วิดีโอ

ตัวแปลงรหัส ส่วนขยาย ห้องสมุด
av1 WebM, mkv Libaom-Av1
h264 MP4 libx264
vp9 WebM Libvpx-Vp9

เสียง

ตัวแปลงรหัส ส่วนขยาย ห้องสมุด
AC MP4 AC
บทประพันธ์ WebM Libopus
Vorbis WebM Libvorbis

ต่อไป เราจะแสดงวิธีเปลี่ยนอัตราบิตของไฟล์ที่สร้างขึ้นใหม่