เข้ารหัส h264 ด้วย FFMPEG ที่ทำงานได้กับทุกเบราว์เซอร์และอุปกรณ์ (windows / mac / iOs / Android)


2

ฉันต้องการเข้ารหัสภาพด้วย FFMPEG เป็นไฟล์วิดีโอ h264 ที่จะทำงานบน Windows Browsers และ Mac Browsers และอุปกรณ์ iOS / Android เพื่อแสดงใน HTML5 มีวิธีทำอย่างนั้นหรือไม่โดยใช้ไฟล์ที่เข้ารหัสหนึ่งไฟล์? ขณะนี้สตริง ffmpeg ของฉันเข้ารหัสเฉพาะ windows / android เท่านั้น

นี่คือรหัส ffmpeg ปัจจุบันของฉัน:

และนี่คือรหัสที่แสดง HTML5 ของฉัน:

ffmpeg -y -r 25 -i ./images/video%04d.png -i  music.wav -shortest -vcodec libx264 -s  720x480 -strict experimental -acodec aac video_file.mp4

<video width="640" height="480"  controls="" preload="" poster="../poster.jpg">
    <source src="video.mp4" type="video/mp4">
    Your browser does not support the video tag.
</video>

ถ้าฉันเปลี่ยน -vcodec เป็น mpeg4 แทนที่จะเป็น libx264 มันใช้ได้กับ iOs / MAC แต่ไม่ใช่ windows! ซึ่งทำให้สับสนจริงๆ!

ใช้ ffmpeg เวอร์ชั่น 3.0.1- คงที่http://johnvansickle.com/ffmpeg/ลิขสิทธิ์ (c) 2000 - 2559 นักพัฒนา FFmpeg

คำตอบ:


1

เนื่องจากคุณใช้ ffmpeg รุ่นล่าสุดให้ใช้คำสั่งด้านล่าง

ffmpeg -y -i ./images/video%04d.png -i music.wav -profile:v baseline -shortest -vcodec libx264 -s  720x480 -acodec aac -movflags +faststart video_file.mp4

profileถูกตั้งค่าเป็นตัวหารร่วมที่ต่ำที่สุดbaselineสำหรับความเข้ากันได้ในวงกว้าง กล่อง MOOV ถูกเลื่อนไปที่ส่วนหัวของไฟล์ดังนั้นไม่จำเป็นต้องดาวน์โหลด MP4 ทั้งหมดก่อนที่จะเริ่มเล่น

โดยค่าเริ่มต้น ffmpeg กำหนดอัตราเฟรม 25 ถึงลำดับภาพเว้นแต่จะระบุไว้เป็นอย่างอื่น ตั้งแต่ธันวาคม 2558 ตัวเข้ารหัส AAC ดั้งเดิมไม่ได้ถูกทำเครื่องหมายว่าเป็นการทดลองอีกต่อไป

ทั้งค่าขนาด 720x480 และขนาดวิดีโอ HTML5 - 640x480 ทำให้ฉันคิดว่าคุณกำลังจัดการกับแหล่งข้อมูล NTSC ถ้าเป็นเช่นนั้นใช้

ffmpeg -y -framerate 30000/1001 -i ./images/video%04d.png -i music.wav -vf "scale=640x480,setsar=1' -profile:v baseline -shortest -vcodec libx264 -acodec aac -movflags +faststart video_file.mp4
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.