แปลง FLV เป็น MP4 โดยใช้ FFMPEG และรักษาคุณภาพ


26

ฉันพยายามใช้ ffmpeg เพื่อแปลงไฟล์ flv ของฉันเป็น mp4 เพื่อเล่นบนอุปกรณ์ iOS แต่วิดีโอที่แปลงแล้วนั้นมีคุณภาพที่แย่กว่าเดิมมาก

นี่คือคำสั่งที่ฉันใช้:

ffmpeg -i input.flv -ar 22050 output.mp4

ฉันจะขอบคุณจริง ๆ ถ้ามีคนให้การตั้งค่าที่ดีที่สุดสำหรับการแปลง flv เป็น mp4

ffmpeg  flv  mp4 

คำตอบ:


42

ทั้งนี้ขึ้นอยู่กับตัวแปลงสัญญาณที่ใช้ใน FLV ของคุณคุณอาจจะสามารถออกไปได้ด้วยการห่อใหม่ในคอนเทนเนอร์ mp4 คุณจะต้องการH.264หรือMPEG4 simple profileวิดีโอและAACเสียง คุณสามารถค้นหาข้อมูลบางอย่างในไฟล์ต้นฉบับของคุณด้วยffmpeg -i input.flv

ฉันไม่แน่ใจว่าเพียงแค่มี H.264 / MPEG4 Simple + AAC นั้นดีพอหรือว่ามีตัวเลือกเฉพาะสำหรับตัวแปลงสัญญาณที่รองรับ ง่ายพอที่จะทดสอบ:

ลองใช้ดู

ffmpeg -i input.flv -c copy -copyts output.mp4

-copytsเป็นcopy timestampsก็จะช่วยให้การซิงค์เสียง

หากวิธีนี้ใช้ไม่ได้ให้ลองบังคับใช้ตัวแปลงสัญญาณเสียงและวิดีโอ นี่จะเข้ารหัสไฟล์อีกครั้ง:

ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a libfaac -q:a 100 output.mp4

ในการปรับปรุงคุณภาพวิดีโอคุณสามารถใช้ค่า CRF ที่ต่ำกว่าเช่นอะไรก็ได้จนถึง 18 ในการรับไฟล์ที่เล็กลงให้ใช้ CRF ที่สูงขึ้น แต่โปรดทราบว่าสิ่งนี้จะทำให้คุณภาพลดลง

ในการปรับปรุงคุณภาพเสียงให้ใช้ค่าคุณภาพที่สูงขึ้น สำหรับ FAAC 100เป็นค่าเริ่มต้น


ต่อไปนี้เป็นแนวคิดสองสามข้อสำหรับคำสั่ง ffmpeg ที่แนะนำในคำถาม

-arหมายถึงอัตราตัวอย่างเสียง ฉันจะแนะนำไม่ยุ่งกับสิ่งนี้จนกว่าคุณจะเข้าใจสิ่งที่ดีกว่า หากคุณต้องการเล่นด้วยการเข้ารหัสเสียงให้ปรับบิตเรต (เช่น-b:a 128k) และให้ตัวเข้ารหัสเลือกสิ่งที่ต้องทำตามนั้น

หากคุณจบลงที่ถนนสายนี้ ...

คุณภาพซีดีคือการสุ่มตัวอย่าง 44100Hz; วิดีโอทั่วไปใช้ 48000Hz

คุณอาจทราบว่า 22050 ในตัวอย่างของคำถามเดิมคือ 1/2 อัตราตัวอย่างคุณภาพซีดี หากคุณกำลังปรับเปลี่ยนวัสดุซีดีนี่เป็นทางเลือกที่ดี หากคุณเริ่มต้นด้วยแหล่งที่มา 48KHz (ซึ่งคุณอาจเป็นอีกครั้งนี่เป็นเรื่องธรรมดามากกว่า 44100 ในไฟล์วิดีโอ) ฉันจะใช้ 24Khz แทน มันอาจจะไม่สำคัญมากนัก แต่มันอาจจะฟังดูดีขึ้นเล็กน้อยและใช้ CPU น้อยกว่านี้เล็กน้อยในการทำการแปลง


อ่านคำตอบของฉันอีกครั้ง ... นอกเหนือจากบรรทัดคำสั่งที่ฉันให้ไว้ข้างต้นคุณสามารถคัดลอกวิดีโอหรือเสียงเท่านั้นและเข้ารหัสอีกครั้ง ตัวอย่าง ... libfaac มีคุณภาพไม่ดี แต่ใช้งานได้
Dan Pritts

เกี่ยวกับคำสั่งบังคับให้ตัวแปลงสัญญาณเสียง / วิดีโอ: ณ สิ้นเดือนกันยายน 2019 พบว่ายกเลิกการสนับสนุน ffmpeg libaacคำถามนี้แสดงให้เห็นว่าทั้งสองใช้การffmpegเข้ารหัส AAC ดั้งเดิมผ่าน -c:a aacหรือตัวแปลงสัญญาณ Fraunhofer FDK AAC ผ่าน -c:a libfdk_aac (ซึ่งต้องรวบรวมffmpegด้วยการสนับสนุนlibfdk_aac)
aresnick
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.