2

Я пытался заставить это работать, и я действительно близок, но что-то все еще не правильно.

У меня есть 14-секундный клип, который я пытаюсь вырезать из более длинного видео в формате mp4. Я получил видео, чтобы вырезать в нужное место с этой командой:

ffmpeg -ss 00:05:13.0 -i ~/videos/trim_me.mp4 -vcodec h264 -acodec copy -t 00:00:14.0 ~/videos/trimmed.mp4

Если я не указал -vcodec он начинался с «I-Frame» (я думаю) и был не в том месте. Звук также начинается с этого места, поэтому я попытался установить -acodec таким же образом:

ffmpeg -ss 00:05:13.0 -i ~/videos/trim_me.mp4 -vcodec h264 -acodec aac -ac 2 -ab 225k -ar 48000 -strict -2 -t 00:00:14.0 ~/videos/trimmed.mp4

Что не очень помогает. Установка -async 1 делает это дольше, и затем звук совпадает, но не раньше, чем через 4 секунды в видео. :/

В идеале я не хотел бы устанавливать что-либо еще и иметь решение для командной строки для этого.

1 ответ1

1

h264 должен работать как кодек, но обычно по умолчанию используется libx264 . В идеале vcodec должен быть заменен на устаревший c:v .

Рабочая команда была

ffmpeg -i ~/videos/trim_me.mp4 -c:v libx264 -c:a aac -ac 2 -b:a 255k -ar 48000 \
-async 1 -strict -2 -y \
-ss 00:05:13.0 -t 00:00:14.0 ~/videos/trimmed.mp4

Перемещение флага -ss в качестве флага вывода обеспечит транскодирование всего видео, но вывод начнется только в точке, указанной -ss . В противном случае, когда -ss находится перед -i , FFmpeg просто будет искать начальную точку, которая может быть неточной.

Исправление флага -vcodec и помещение в -async 1 работали, но только если делались вместе.

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