FFMPEG добавить ключевые кадры без перекодирования

9672
Zoltán

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

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

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

1

2 ответа на вопрос

9
evilsoup

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

Ты не можешь

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

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

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

1
Nick van Tilborg

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

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

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

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

это сделал больший файл с неправильным качеством. :( так нет пути без перекодирования? Zoltán 11 лет назад 0
Правда, файл больше, поскольку I-кадры на самом деле являются JPEG-изображениями (вроде). Другие ключевые кадры - это прогнозы для создания изображения, чтобы уменьшить размер файла. И нет, вы ДОЛЖНЫ перекодировать, если измените размер GOP. Если вы видите потерю качества, вы должны отрегулировать коэффициент качества. Это единственный случай, когда вы можете использовать параметр `-sameq`, потому что вы будете использовать тот же кодек. Nick van Tilborg 11 лет назад 0
Причина, по которой эта команда даст плохие результаты, заключается в ужасных настройках ffmpeg по умолчанию. Если вы используете `-c: v libx264 -crf 22` или что-то подобное, вы получите приличную картинку (для получения дополнительной информации см. Ссылки в моем ответе) evilsoup 11 лет назад 0
@NickvanTilborg IIRC, более новые версии явно отключили `-sameq`, так как он был ошибочно принят за« то же качество ». Вы знаете, что замена в более новых версиях? Alvin Wong 11 лет назад 0
@AlvinWong Не существует замены для `-sameq`, потому что большинство людей злоупотребляли им, и он никогда не работал должным образом. Смотрите: [Что такое опция «sameq» или «same_quant» в FFmpeg? Означает ли это «такое же качество»?] (Http://superuser.com/questions/478549/what-is-the-sameq-or-same-quant-option-in-ffmpeg-does-it-mean-same- качественный) slhck 11 лет назад 0

Похожие вопросы