FFmpeg / avidemux: memperbaiki B-frame yang dikemas

12

Saya transcoding beberapa video mpeg4 lama saya (dalam wadah avi) ke h.264 dengan FFmpeg. Pada dasarnya

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

Saat melakukannya, mpeg4berikan peringatan berikut

Video menggunakan cara yang tidak standar dan boros untuk menyimpan B-frame ('B-frames dikemas'). Pertimbangkan untuk menggunakan alat seperti VirtualDub atau avidemux untuk memperbaikinya.

Saya tahu saya masih bisa berhasil transcode, tetapi dari peringatan itu tidak jelas bagi saya apakah kualitas video h.264 yang dihasilkan akan terpengaruh .

Begitu,

  • Mengingat bahwa saya hanya peduli pada kualitas (dan ukuran, saya ingin meminimalkan ukuran untuk perangkat seluler saya, itulah sebabnya saya juga menggunakan veryslowpreset) dari output video h.264, haruskah saya peduli dengan B- yang dikemas? bingkai?

  • Jika saya harus, bagaimana cara memperbaikinya dengan avidemux? (Saya sudah mencoba membaca sepintas manual.)

4ae1e1
sumber

Jawaban:

15

B-frame adalah jenis bingkai yang digunakan dalam kompresi video untuk mewakili bingkai video. B-frame dapat menggunakan informasi dari frame sebelumnya dan yang akan datang untuk mewakili setiap frame video.

Video yang dikodekan dengan DivX lama biasanya menggunakan metode jelek yang disebut bitstream dikemas yang menempatkan beberapa frame video ke dalam satu potongan AVI. Bitstream yang dikemas bukan standar MPEG-4, menggunakan lebih banyak ruang, membutuhkan lebih banyak daya CPU untuk menyandikan / mendekode, dan (yang paling penting) dapat menyebabkan masalah jika disalin ke jenis wadah lain. Inilah alasan utama peringatan itu.

Karena Anda menyandikan ulang video alih-alih hanya menyalinnya, Anda seharusnya baik-baik saja. Jika Anda ingin menyimpan video asli, tetapi menyalinnya ke jenis wadah lain (katakanlah MP4 atau MKV), yang terbaik adalah membongkar frame-B terlebih dahulu menggunakan filter FFmpeg mpeg4_unpack_bframes.

Anda dapat membongkar B-frame dengan sesuatu yang sederhana seperti

ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
xiii1408
sumber