Я использую следующий код для перекодирования высококачественной 1280x720 H264 mp4 со скоростью 10 Мбит / с в низкую H264 mp4 с нашим логотипом на видео.
ffmpeg.exe -i test.mp4 -i watermark.png -filter_complex overlay = "(main_w)-(overlay_w):(main_h)-(overlay_h)" -c:v libx264 -profile:v main -preset slow -b:v 400k -r 30 -c: libvo_aacenc -b: быстрый запуск 128k -s 1280x720 -movflags -f mp4 "test-done.mp4"
Эти настройки работают замечательно, и после большого количества настроек, чтобы получить этот код, он производит четкое, четкое видео для высокого действия, фотографии, много разных цветов и т.д.
Проблема в том, что в первые несколько секунд видео поток очень блокируется. Затем, примерно через 3-5 секунд, поток "исправляет" себя, и видео становится четким и чистым. Замедление времени рендеринга путем изменения пресета на "veryslow" лишь незначительно улучшает первые несколько секунд, но значительно увеличивает время рендеринга.
Как я могу сказать ffmpeg уделять больше внимания началу видео? Нужно ли прибегать к двухпроходному кодированию? Я не хочу почти удваивать время рендеринга, потому что только первые несколько секунд видео имеют эту проблему. Может ли кто-нибудь изменить мой код, чтобы обеспечить лучшую кодировку в начале файла?
Для справки, оригинальные mp4s 10 Мбит / с закодированы Premiere 5.0 и не имеют блочности в начале. Это то, что я видел только после ffmpeg после транскодирования.