Извлечение кадров из MP4 / FLV? - PullRequest
34 голосов
/ 27 ноября 2011

Я знаю, что это возможно с FFMPEG, но что делать, если у меня есть частичный файл (как без начала и конца). Можно ли извлечь из него несколько кадров?

Ответы [ 2 ]

79 голосов
/ 15 декабря 2011

Команда

ffmpeg -ss 00:00:25 -t 00:00:00.04 -i YOURMOVIE.MP4 -r 25.0 YOURIMAGE%4d.jpg

будет извлекать кадры

  • начало со второй 25 [-ss 00:00:25]
  • остановка через 0,04 секунды [-t 00: 00: 00.04]
  • чтение из входного файла YOURMOVIE.MP4
  • с использованием только 25,0 кадров в секунду, т.е. е. один кадр каждые 1/25 секунды [-r 25,0]
  • как изображения JPEG с именами YOURIMAGE% 04d.jpg, где% 4d - это 4-значный номер автоинкремента с ведущими нулями

Проверьте свой фильм на частоту кадров, прежде чем применять опцию [-r], то же самое применимо для [-t], если вы не хотите извлекать кадры с пользовательской скоростью.

Никогда не пробовал это с обрезанным (поврежденным?) Входным файлом. Стоит попробовать.

2 голосов
/ 20 декабря 2011

Это может быть ОЧЕНЬ сложно. Формат файла MP4 включает атом «moov», который имеет указатели на «сэмплы» аудио и видео. Если у вашего файла mp4 нет атома moov, ваша работа будет намного сложнее. Вам нужно было бы разработать логику для изучения атома mdat (который содержит все аудио и видео образцы) и использовать образованные догадки, чтобы найти границы аудио и видео.

Еще хуже, без атома moov у вас не будет SPS и PPS, необходимых для декодирования срезов. Вы должны были бы синтезировать замены; если вы знаете кодек, использованный для создания MP4, то вы можете скопировать SPS и PPS из файла с одинаковым кодированием; в противном случае это может быть болезненный процесс проб и ошибок, поскольку синтаксис срезов (изображения в кодировке H.264) зависит от значений, указанных в SPS и PPS.

...