Выход FFMPEG блочный

Я пытаюсь извлечь отдельные кадры из необработанного видеопотока AVC. Я делаю это с помощью следующей команды ffmpeg:ffmpeg -q 1 -i video_test.avc -f image2 frames/frames_%04d.jpg

Проблема, с которой я сталкиваюсь, заключается в том, что первые несколько кадров выглядят хорошо. Я включаю пример ниже.Пример хорошей рамы

Затем извлеченные кадры становятся все хуже, и к тому времени, когда я добираюсь до 17-го кадра, они становятся действительно блочными.Пример блочного изображения

Вы получаете сырое видео по этой ссылке .

Есть ли вариант, который я упускаю? Я заметил, что FFMPEG на моем Mac работает должным образом и генерирует хорошие кадры, но FFMPEG на моем рабочем сервере с Ubuntu демонстрирует эту проблему.

Улучшается ли он каждый раз, когда достигается ключевой кадр, или он продолжает ухудшаться бесконечно?
Как только он попадает в блочное состояние, он остается в этом блочном состоянии на неопределенный срок. Это не становится хуже.
Вы пробовали разные версии FFMPEG, чтобы убедиться, что это просто ошибка в конкретной версии? Извините, просто выбрасываю случайные мысли по устранению неполадок. Я не знаю ничего конкретного об этой проблеме.
Я использую двоичные файлы из репозитория, указанного на ffmpeg.org/download.html . Это обновляется довольно часто, и последнее обновление было 15 июля. Я попробую собрать его из исходников завтра и посмотрю, изменит ли это что-нибудь.

Ответы (1)

Размещение опционов имеет значение

Есть ли вариант, который я упускаю?

Нет, но размещение опций имеет значение. Параметры перед вводом применяются к вводу, а параметры перед выводом обычно применяются к выводу. Исключение составляют глобальные опции. См. краткий обзор FFmpeg и описание FFmpeg для получения более подробной информации о размещении параметров.

Следовательно, вы должны переместить свой вариант -q(псевдоним для ):-qscale

ffmpeg -i video_test.avc -q:v 2 frames/frames_%04d.jpg
  • -f image2здесь излишен, так как ffmpeg знает, что ваши выходные данные являются изображениями.
  • Нормальный диапазон для -q:vэнкодера mjpeg2-5; ниже - выше качество.
  • Рекомендуется явно указать, к какому потоку вы хотите применить -q, поскольку ffmpeg не может знать, следует ли его применять к видео или аудио, поэтому в вашем случае используйте -q:v. Это хорошая практика, хотя это не имеет значения для вашего ввода, поскольку у вас нет звука.

Поддельный "ffmpeg"

Я заметил, что FFMPEG на моем Mac работает должным образом и генерирует хорошие кадры, но FFMPEG на моем рабочем сервере с Ubuntu демонстрирует эту проблему.

Ubuntu больше не использует FFmpeg:

Поскольку я не использую вилку, мой ответ может вам не подойти.

Получение ffmpeg

Разработка FFmpeg очень активна, и всегда полезно использовать последнюю версию. Два основных способа его получения:

Это было размещение, -q 1что сделало это. Спасибо.