FFmpeg/avidemux: исправление упакованных B-кадров
Я транскодирую некоторые из моих старых видео 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? (Я уже пробовал просмотреть руководство.)
1 ответ
B-кадры - это тип кадров, используемый при сжатии видео для представления кадров видео. B-кадры могут использовать информацию из предыдущих и будущих кадров для представления каждого видеокадра.
В старых видео в формате DivX обычно используется уродливый метод, называемый упакованным потоком битов, который помещает несколько видеокадров в один блок AVI. Упакованный поток битов не является стандартом MPEG-4, занимает больше места, требует больше ресурсов процессора для кодирования / декодирования и (что наиболее важно) может вызвать проблемы при копировании в контейнер другого типа. Это основная причина предупреждения.
Поскольку вы перекодируете видео, а не просто копируете его, все будет в порядке. Если вы хотите сохранить исходное видео, но скопировать его в контейнер другого типа (скажем, MP4 или MKV), лучше сначала распаковать B-кадры, используя фильтр FFmpeg. mpeg4_unpack_bframes
,
Вы можете распаковать B-кадры с чем-то простым, как
ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi