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

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% จากต้นฉบับเท่านั้น คุณดูข้อมูลนี้ได้ด้วยตัวเอง โดยใช้คำสั่ง 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

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

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

วิดีโอ

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

เสียง

ตัวแปลงรหัส ส่วนขยาย คลัง
AAC MP4 AAC
โอปัส WebM Libopus
Vorbis WebM libvorbis

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