หากต้องการรองรับหลายเบราว์เซอร์ คุณจะต้องใช้ FFmpeg เพื่อแปลงไฟล์ .mov
เป็น 2 คอนเทนเนอร์ที่แตกต่างกัน ได้แก่ คอนเทนเนอร์ MP4 และคอนเทนเนอร์ WebM ในทางปฏิบัติจริง คุณอาจระบุตัวแปลงรหัสพร้อมกันด้วย ในระหว่างนี้ เราจะให้ FFmpeg ใช้ค่าเริ่มต้น
หากแนวคิดเหล่านี้เป็นเรื่องใหม่สำหรับคุณ คุณควรอ่านข้อมูลเบื้องต้นเกี่ยวกับไฟล์สื่อก่อนดำเนินการต่อ นอกจากนี้ หากคุณยังไม่ได้ติดตั้ง FFmpeg โปรดอ่านข้อมูลเบื้องต้นเกี่ยวกับแอปพลิเคชันสื่อเพื่อตั้งค่ากับ Docker
เราใช้การติดตั้ง Docker ที่แนะนำและไฟล์ glocken.mov จากเตรียมไฟล์สื่อสำหรับเว็บที่เพิ่มภายในไดเรกทอรี media
เราใช้ FFmpeg เวอร์ชัน 4.3.2 สำหรับคำสั่งทั้งหมดในส่วนนี้
คอนเทนเนอร์
ก่อนอื่นเราต้องสร้างคอนเทนเนอร์ 2 รายการจากไฟล์ .mov
ที่มีนามสกุลไฟล์ .mp4
และ .webm
ซึ่งมีทั้งสตรีมเสียงและวิดีโอภายในไฟล์
อ่านข้อมูลเบื้องต้นเกี่ยวกับไฟล์สื่อเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับคอนเทนเนอร์และสตรีม หากไม่ทราบว่าคอนเทนเนอร์และสตรีมแตกต่างกันอย่างไร
MP4
/media # ffmpeg -i glocken.mov glocken.mp4
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
มีไว้สำหรับระบุตัวแปลงรหัสเสียงและวิดีโอตามลำดับ
หน้าการเปลี่ยนรูปแบบสื่อจะแสดงรายการคำสั่งที่จำเป็นในการแปลงโค้ดคิว ตารางด้านล่างแสดงสรุปไลบรารีที่ใช้ใน 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 |
ต่อไป เราจะแสดงวิธีเปลี่ยนอัตราบิตของไฟล์ที่สร้างใหม่