Подтвердить что ты не робот

Извлечение кадров из MP4/FLV?

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

4b9b3361

Ответ 1

Команда

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

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

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