1

Как добавить ключевые кадры для файлов FLV без перекодирования? Я пытаюсь использовать эту команду, но ничего не делаю:

ffmpeg -i file.flv  -vcodec copy -acodec copy -g 0 -y tmp.flv && yamdi -i tmp.flv -o out.flv

Результат (источник и это) нельзя найти с помощью флеш-плеера. У меня много flv для "ремонта".

2 ответа2

9

Как добавить ключевые кадры для файлов FLV без перекодирования?

Ты не можешь

Ключевой кадр, или I-кадр, - это кадр, который стоит сам по себе - для декодирования не требуется никаких кадров до или после. Другими кадрами являются P-кадры (которые требуют декодирования одного или нескольких предыдущих кадров и основывают свое содержимое на изменениях, сделанных в предыдущем кадре, а не на формировании полного изображения отдельно) и B-кадры (такие же, как P-кадры, но опорные кадры как до, так и после них).

Чтобы изменить P- или B-кадр на I-кадр, необходимо декодировать, а затем перезаписать видеопоток. Таким образом, вы не можете добавлять ключевые кадры без перекодирования.

Взгляните на руководство по кодированию x264 в википедии ffmpeg, где вы найдете несколько советов о том, как получить красивый код.

1

Когда вы делаете -vcodec copy , вы полностью копируете видеокодек. Тогда никакие параметры не могут повлиять на видео, поэтому размер GOP снова не анализируется.

Попробуйте просто использовать gopsize без копии видеокодека:

ffmpeg -i file.flv -acodec copy -g 1 -sameq -y tmp.flv

Обратите внимание, что параметр -sameq означает тот же квантователь, который следует использовать только при декодировании и кодировании с использованием одного и того же кодека (например, MPEG-2 - MPEG-2), как в вашем случае, когда вы не хотите менять кодек.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .