При обрезке файла WMV используется следующий синтаксис:

ffmpeg -i 'INPUTFILE.wmv' -acodec copy -vcodec copy -ss 00:00:45 -t 00:00:15 'OUTPUTFILE.wmv '

Один кадр файла OUTPUTFILE.wmv отображается в течение первой или двух секунд (в течение этого времени звук воспроизводится нормально), а затем воспроизведение возобновляется. Отображаемый "замороженный кадр" - это тот, с которого фактически начинается движение (а не 1-2 предшествующие ему секунды), то есть не происходит "скачка" при переходе от замороженного кадра к рабочему видео. Вместо этого я как будто не делаю паузу в видео.

Даже если я увеличу длину выходного клипа до одной минуты, он все равно будет отображаться примерно секунду (так что это не доля от общей длины видео).

Что вызывает это, и как я могу это исправить?

1 ответ1

1

Проблема в том, что вы просто копируете из одного файла в другой. Если вы не начнете точно с одного из ключевых кадров, будет задержка, пока он не достигнет ключевого кадра.

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

Если вы хотите избежать этой паузы, вам нужно будет декодировать и перекодировать каждый кадр индивидуально, чтобы первый кадр выходного файла был ключевым кадром.

Звуковые рамки не страдают от такого рода проблем, поэтому звук воспроизводится, а видео - нет.

Actually На самом деле все гораздо сложнее, но пока это достаточно близко.

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