Saya mendapatkan ribuan peringatan ini dengan penyandian khusus. Saya menurunkan video 1080p menjadi 480p. Pada titik edit, di mana ada beberapa video yang cerdik karena cacat pada laserdisc sumber, pesan-pesan ini mulai muncul dan kemudian muncul untuk, saya pikir, setiap frame sesudahnya. Mereka terus dan terus, seperti kutipan singkat ini:
Past duration 0.901115 too large= 535031kB time=00:54:15.06 bitrate=1346.5kbits/s dup=0 drop=19 speed=1.15x
Last message repeated 31 times
Past duration 0.901115 too large= 535031kB time=00:54:15.62 bitrate=1346.3kbits/s dup=0 drop=19 speed=1.15x
Last message repeated 34 times
Past duration 0.901115 too large= 535031kB time=00:54:16.21 bitrate=1346.0kbits/s dup=0 drop=19 speed=1.15x
Last message repeated 36 times
Past duration 0.901115 too large= 535338kB time=00:54:16.83 bitrate=1346.5kbits/s dup=0 drop=19 speed=1.15x
Last message repeated 39 times
Doa ffmpeg asli adalah ini:
ffmpeg -i input.mp4 -s 720x480 -c:v libx264 -preset slower -crf 17 -c:a copy -y output.mkv
Mengikuti saran di sini saya pertama kali menambahkan -framerate 60000/1001 ke input. Itu tidak memperbaiki apa pun. Saya mempertahankan -framerate dan menambahkan -r 60000/1001 ke output. Itu masih tidak meningkatkan apa pun. Mempertahankan keduanya akhirnya saya tambahkan -async 1 -vsync 1. Hal ini mengakibatkan saya menerima satu peringatan, dan hanya itu. Doa itu adalah:
ffmpeg -i input.mp4 -framerate 60000/1001 -s 720x480 -c:v libx264 -preset slower -crf 17 -c:a copy -y output.mkv -r 60000/1001 -async 1 -vsync 1
Satu-satunya perbedaan yang saya temukan dalam dump terperinci dari MediaInfo adalah penghapusan baris ini yang ditemukan dalam doa asli tetapi tidak pada yang kedua:
Delay relative to video : -33ms
Namun, saya memeriksa sinkronisasi A / V di dekat bagian awal file dan di dekat bagian akhir, dan tidak ada perbedaan yang terlihat dalam sinkronisasi antara kedua file. Waktu berlari mereka juga sama, tetapi itu hanya diukur ke detik terdekat, di VLC. Jadi saya memeriksa jumlah frame menggunakan ffmpeg seperti:
ffmpeg -i output.mkv -map 0:v:0 -c copy -f null -
dan mencari "frame = #" di dekat akhir output.
Ternyata sumber video panjangnya 375226 frame, doa asli menghasilkan 375195 frame, dan doa kedua menghasilkan 375200. Jadi doa kedua, dengan pesan peringatan yang jauh lebih sedikit juga turun 5 frame lebih sedikit.
Pengujian selanjutnya menunjukkan bahwa -framerate dan -r tidak perlu, dan hanya menggunakan dua flag sinkronisasi sudah cukup. Ini menghasilkan hasil yang identik dengan doa kedua di atas, jadi doa ketiga dan paling sederhana yang saya temukan untuk menyelesaikan masalah adalah ini:
ffmpeg -i input.mp4 -s 720x480 -c:v libx264 -preset slower -crf 17 -c:a copy -y output.mkv -async 1 -vsync 1
Dan file lain kemudian menghasilkan banyak peringatan ini bahkan dengan flag sinkronisasi, tetapi menambahkan kembali flag rate "memperbaiki" itu (hanya menghasilkan dua bukannya ribuan peringatan). Jadi kadang-kadang doa kedua bekerja ketika yang ketiga tidak. Untuk tujuan langsung saya, saya akan menyelesaikan doa kedua dan berharap itu memperbaiki sebagian besar masalah ini.
Ini semua dengan ffmpeg versi 4.0.