Não existe essa opção no ffmpeg.
Você precisa analisar a duração usando ffprobe
e, em seguida, calcular o deslocamento necessário usando um script. Para obter a duração total:
ffprobe -loglevel error input.mp4 \
-show_format -show_entries format=duration -of compact=p=0:nk=1
Isso mostra a saída em s.msec
. Você também pode usar a opção -sexagesimal
para imprimir HH:MM:SS.msec
, mas isso dificulta o cálculo do seu deslocamento.
Script bash simples para fazer isso:
#!/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"
Observe que você deseja -to
em vez de -t
. O primeiro cortará o fluxo até o ponto especificado, enquanto que com -t
, você terminará com um fluxo do tamanho especificado .