2

Я смотрел на различные инструменты командной строки для резки видео для Linux, и я не могу найти ни одного, который бы поддерживал операцию вырезания видео с конца.

Например, у меня есть 10 видео переменной длины. Мне нужно получить последние 3 секунды каждого видео.

Я посмотрел в ffmpeg и mpgtx, но безрезультатно.

Может кто-нибудь сказать мне инструмент / команду, чтобы вырезать видео из конечного положения?

Буду признателен за любую оказанную помощь.

1 ответ1

4

Следующее может быть не самым элегантным способом сделать это, но это работает.

Вставьте имя файла в переменную для удобства:

file="yourvideo.avi"

Получить длительность видео -3 секунды (-3 задается в команде sed - мы ID_LENGTH= и добавляем -3 в конце):

start=$(mplayer -identify -vo dummy -ao dummy -really-quiet "$file" 2>/dev/null | sed -n '/ID_LENGTH=/s/ID_LENGTH=\(.*\)/\1-3/p' | bc)

Вы можете сделать то же самое с avprobe или ffprobe (которые поставляются с avconv или ffmpeg):

start=$(avprobe -i "$file" -show_format 2> /dev/null | sed -n '/duration=/s/duration=\(.*\)/\1-3/p' | bc)

Вырезать с помощью FFmpeg (ffmpeg) или Libav (avconv) с начальной позицией $start:

avconv -ss $start -t 3 -i $file -vcodec copy -acodec copy end_${file}

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