В ffmpeg такой опции нет.
Вы должны проанализировать длительность с помощью ffprobe
, а затем рассчитать необходимое смещение с помощью скрипта. Чтобы получить общую продолжительность:
ffprobe -loglevel error input.mp4 \
-show_format -show_entries format=duration -of compact=p=0:nk=1
Это показывает вывод в s.msec
. Вы также можете использовать опцию -sexagesimal
чтобы она печатала HH:MM:SS.msec
, но это немного усложняет вычисление смещения.
Простой скрипт bash для этого:
#!/bin/bash
input=/path/to/your/file.mp4
start="30"
offset="60"
duration="$(ffprobe -loglevel error "$input" -show_format -show_entries format=duration -of compact=p=0:nk=1)"
end=$(echo "$duration - $offset" | bc)
echo ffmpeg -ss "$start" -i "$input" -c copy -to "$end"
Обратите внимание, что вы хотите -to
вместо -t
. Первый будет обрезать поток до указанной точки, в то время как с -t
вы получите поток указанной длины .