ก่อนอื่นคุณควรเข้าใจความแตกต่างระหว่างการใช้โปรไฟล์ FFmpeg และตัวเลือกบรรทัดคำสั่งโดยตรง -vpre
ใช้.ffpreset
ไฟล์ที่อยู่ใน/usr/share/ffmpeg/
หรือที่ใดก็ตามที่ติดตั้ง ffmpeg เป็นชุดของ คู่ตัวเลือก = ค่าและในกรณีของคุณคุณจะต้องกำหนดด้วยตัวคุณเอง (อย่างน้อยฉันก็ไม่ทราบbaseline
ค่าที่ตั้งไว้ล่วงหน้าที่ส่งมาพร้อมกับ ffmpeg)
ฉันจะแนะนำไม่ให้ใช้การตั้งค่าล่วงหน้าเว้นแต่คุณจะสร้างขึ้นเองและรู้ว่าตัวเลือกบรรทัดคำสั่งนั้นมีไว้เพื่ออะไร ฉันใช้ ffmpeg มาหลายปีแล้วและฉันไม่เคยใช้สถานีที่ตั้งไว้ล่วงหน้า - ฉันไม่เคยต้อง
บรรทัดคำสั่งทั่วไปสำหรับการสร้างวิดีโอ H.264 ที่เข้ากันได้กับอุปกรณ์ส่วนใหญ่จะเป็น:
ffmpeg -i <input> \
-c:v libx264 -crf 23 -profile:v baseline -level 3.0 -pix_fmt yuv420p \
-c:a aac -ac 2 -b:a 128k \
-movflags faststart \
output.mp4
หมายเหตุบางส่วน:
H.264 / AAC เป็นชุดค่าผสมที่ดีที่สุดสำหรับการสนับสนุนใน HTML5 เบราว์เซอร์ที่ไม่มีตัวถอดรหัส H.264 อย่างไรก็ตามจะต้องใช้วิดีโอ VP8 / Vorbis เช่นกัน สำหรับตัวอย่างบรรทัดคำสั่งให้ดูคำตอบนี้ ดูหน้าสนับสนุนเบราว์เซอร์ของ Wikipedia สำหรับตัวแปลงสัญญาณอื่น ๆ
H.264 ยังใช้งานได้ดีกับอุปกรณ์มือถือ
-profile:v baseline
และ-level 3.0
ตัวเลือกที่มีความจำเป็นเพียงสำหรับอุปกรณ์มือถือเก่าที่ไม่สามารถจัดการกับคุณสมบัติ CPU สูงของ H.264 -profile:v main
คุณมักจะสามารถออกจากเหล่านี้ออกหรือใช้แทน
CRF ตั้งค่าคุณภาพ (18–28 เป็นช่วงที่เหมาะสมลดลงหมายถึงคุณภาพที่ดีขึ้น) แน่นอนคุณสามารถใช้อัตราบิตคงที่ด้วย-b:v 1000k
หรือคล้ายกัน เลือกบิตเรตที่ตรงกับความละเอียดของวิดีโอ อุปกรณ์ที่ใช้พลังงานต่ำบางตัวอาจไม่สามารถจัดการบิตเรตที่สูงเกินความจำเป็นได้
-movflags faststart
ตัวเลือกที่เป็นสิ่งจำเป็นสำหรับการสตรีมเพราะมันย้ายข้อมูลเมตาภาชนะที่เริ่มต้นของแฟ้มแทนการทิ้งไว้ในตอนท้าย วิธีนี้จะช่วยให้การเล่นเริ่มต้นทันทีแทนที่จะต้องรอให้โหลดไฟล์ทั้งหมด
อย่างไรก็ตามทุกอย่างลงมาเพื่อค้นหาตัวส่วนร่วมที่ต่ำที่สุดสำหรับอุปกรณ์ทั้งหมดที่คุณกำหนดเป้าหมายซึ่งอาจไม่มีอยู่จริง แน่นอนว่าคุณไม่ต้องการใช้ตัวแปลงสัญญาณอื่น ๆ (นั่นคือแย่กว่า ) กว่า H.264 ในความเป็นจริงมันก็ไม่ควรที่จะเสนอวิดีโอที่เข้ารหัสพื้นฐานให้กับลูกค้าซึ่งสามารถถอดรหัสโปรไฟล์หลักหรือโปรไฟล์สูง คุณจะแลกเปลี่ยนคุณภาพกับความซับซ้อนของการถอดรหัสที่ลดลง
จากประสบการณ์ของฉันอุปกรณ์ Android สามารถเล่น Baseline H.264 พร้อมเสียง AAC-LC ในคอนเทนเนอร์ MP4 ได้ดี ฉันไม่เคยมีปัญหากับมัน ในความเป็นจริงอุปกรณ์บางอย่างอาจเล่นโปรไฟล์ที่สูงกว่าเช่นกันแม้ว่าจะไม่ได้รับการสนับสนุนอย่างเป็นทางการ โดยทั่วไปแล้ว iOS ยังรองรับ Baseline H.264 แต่คุณสามารถใช้โปรไฟล์หลักในอุปกรณ์บางอย่างได้เช่นกัน ดูโพสต์นี้ (ซึ่งค่อนข้างล้าสมัย) สำหรับคำแนะนำบางอย่าง
หากคุณมีผู้ใช้ที่มีปัญหาการเล่นคุณจะต้องค้นหาว่าวิดีโอใดเป็นสาเหตุของปัญหาและรับรายละเอียดเพิ่มเติมเกี่ยวกับซอฟต์แวร์และฮาร์ดแวร์ของผู้เล่นที่พวกเขากำลังใช้ จากนั้นเราสามารถพูดคุยเกี่ยวกับการแก้ไขปัญหาเฉพาะกรณี