FFmpeg / avidemux: แก้ไขการบีบอัดเฟรม B


12

ฉันกำลังแปลงรหัสวิดีโอ mpeg4 เก่าของฉัน (ในคอนเทนเนอร์ avi) เป็น h.264 ด้วย FFmpeg เป็นพื้น

ffmpeg -i input.avi -c:v libx264 [x264 settings] -c:a libfdk_aac [aac settings] output.mp4

เมื่อทำเช่นนั้นให้mpeg4ออกคำเตือนต่อไปนี้

วิดีโอใช้วิธีที่ไม่ได้มาตรฐานและสิ้นเปลืองในการจัดเก็บเฟรม B ('บรรจุเฟรม B') พิจารณาใช้เครื่องมือเช่น VirtualDub หรือ avidemux เพื่อแก้ไข

ฉันรู้ว่าฉันยังสามารถแปลงรหัสได้สำเร็จ แต่จากคำเตือนมันไม่ชัดเจนสำหรับฉันว่าคุณภาพของวิดีโอ h.264 ที่ได้รับจะได้รับผลกระทบหรือไม่

ดังนั้น,

  • เนื่องจากฉันสนใจเฉพาะคุณภาพ (และขนาดฉันต้องการลดขนาดสำหรับอุปกรณ์มือถือของฉันซึ่งเป็นสาเหตุที่ฉันใช้พรีveryslowเซต) ของวิดีโอเอาต์พุต h.264 ฉันควรสนใจ B- ที่บรรจุไว้ เฟรม?

  • ถ้าฉันควรฉันจะแก้ไขด้วย avidemux ได้อย่างไร (ฉันลองอ่านผ่านคู่มือไปแล้ว)

คำตอบ:


15

B-frames เป็นประเภทเฟรมที่ใช้ในการบีบอัดวิดีโอเพื่อแสดงเฟรมของวิดีโอ เฟรม B สามารถใช้ข้อมูลจากทั้งเฟรมก่อนหน้าและอนาคตเพื่อเป็นตัวแทนเฟรมวิดีโอแต่ละเฟรม

วิดีโอที่เข้ารหัส DivX รุ่นเก่ามักใช้วิธีการที่น่าเกลียดที่เรียกว่าบิตสตรีมซึ่งทำให้เฟรมวิดีโอหลายเฟรมเป็น AVI อันก้อนเดียว บิตสตรีมแบบแพ็คไม่ใช่ MPEG-4 มาตรฐานใช้พื้นที่เพิ่มขึ้นต้องใช้พลังงาน CPU มากขึ้นในการเข้ารหัส / ถอดรหัสและ (ที่สำคัญที่สุด) อาจทำให้เกิดปัญหาหากคัดลอกลงในคอนเทนเนอร์ประเภทอื่น นี่คือเหตุผลหลักสำหรับคำเตือน

เนื่องจากคุณเข้ารหัสวิดีโออีกครั้งแทนที่จะเพียงแค่คัดลอกคุณควรจะดี หากคุณต้องการที่จะเก็บวิดีโอต้นฉบับ แต่คัดลอกลงในประเภทของภาชนะอื่น (พูด MP4 หรือ MKV) ก็ต้องการจะดีที่สุดที่จะแกะ mpeg4_unpack_bframesB-เฟรมแรกที่ใช้ตัวกรอง

คุณสามารถแกะเฟรม B ด้วยสิ่งที่ง่าย ๆ ได้

ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.