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

Derek Herman
Derek Herman
Joe Medley
Joe Medley

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

เช่น

/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 มีไว้สำหรับระบุตัวแปลงรหัสเสียงและวิดีโอตามลำดับ

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

วิดีโอ

ตัวแปลงรหัส ส่วนขยาย คลัง
av1 WebM, mkv libaom-av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

เสียง

ตัวแปลงรหัส ส่วนขยาย คลัง
aac MP4 aac
opus WebM libopus
vorbis WebM libvorbis

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