Здесь нет особо нового вопроса, но я пробовал то, что было предложено там без большой удачи. Итак, моя история:
У меня есть кусок 15 секунд прямолинейного видео, из которого я хочу извлечь конкретный фрагмент, который я могу определить по времени начала и времени остановки в секундах. Я начал, пытаясь сделать то, что я назову "извлечение копии": чтобы получить секунды с 9 по 12,
ffmpeg -i test.mov -vcodec copy -acodec copy -ss 9 -to 12 test-copy.mov
Это было неплохое начало, но в начале и конце клипа есть черные кадры, которых я не могу - это должно быть чистое редактирование из оригинала. Итак, я попробовал перекодировать оригинал в новый обрезанный клип:
ffmpeg -i test.mov -ss 00:00:09 -t 00:00:03 test-out.mov
Это лучше, но не совсем: в начале клипа больше нет черных кадров, но они все еще там в конце.
После некоторого просмотра и чтения я тогда подозревал, что проблема в том, что ffmpeg не может найти правильные точки из-за отсутствия ключевых кадров в исходном видео. Поэтому я перекодировал исходное видео (предположительно), добавляя ключевые кадры несколькими способами. Поскольку я хочу, чтобы иметь возможность выбирать видео на границах секунды ( "от 9 секунд до 12 секунд" ), я пытался, копируя различные предложения по сети,
ffmpeg -i test.mov -force_key_frames "expr:gte(t, n_forced)" test-forced.mp4
и
ffmpeg -i test.mov -g 1 test-g-inserted.mp4
(Я построил их как mp4 на основе некоторых комментариев о контейнере mp4, который необходим для поддержки поиска ключевого кадра, но я, честно говоря, просто взламываю здесь.) Затем я попробовал извлечение, как и раньше, но на этих новых видео, которые предположительно теперь в них есть ключевые кадры. Не повезло - оба кажутся примерно одинаковыми; начало в порядке, но в конце все еще есть черные кадры. (FWIW, как test-forced.mp4, так и test-g-insert.mp4 также имеют завершающие черные кадры.)
Итак: я все еще застрял, и мне бы этого не хотелось. Какие-нибудь идеи о том, что я делаю неправильно? Я чувствую, что я рядом, но мне действительно нужно избавиться от этих задних черных кадров....