1

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

Я использовал эту строку кода:

for %F in (*.mp4) do ffmpeg -sseof -20 -i "%F" -map 0:v -map 0:a -c:v copy -c:a copy "%~nF_trimmed.mp4"

Обрезка идет хорошо, но есть проблема с аудио. Эта ошибка появляется без отмены процесса обрезки, хотя я считаю, что это не имеет ничего общего с моей проблемой:

[mp4 @ 0000025740443740] track 1: codec frame size is not set
[mp4 @ 0000025740443740] track 2: codec frame size is not set

И когда я помещаю обрезанные файлы в программное обеспечение для редактирования видео, это видно:

Скриншот редактора

Вторая аудиодорожка длиннее, чем видеодорожка.

Команда -shortest не добилась цели . Может я просто неправильно его использую?

1 ответ1

2

Я возился с -shortest и у меня были проблемы с более длинной звуковой дорожкой, не урезанной до длины видео. Вот как я пытался это использовать:

ffmpeg -i INPUT -c copy -shortest OUTPUT

После прочтения документации по варианту чуть внимательнее:

Завершите кодирование, когда закончится самый короткий входной поток .

С помощью приведенной выше команды FFmpeg существует только один входной поток. Итак, следующая команда наконец заработала:

ffmpeg -i INPUT -i INPUT -c copy -shortest -map 0:v -map 1:a OUTPUT

где оба INPUT - это один и тот же файл.

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