Suponha que tenhamos um arquivo de vídeo some_video.
Como posso obter seu comprimento de um script de shell (com mplayer / transcode / gstreamer / vlc / ffmpeg / o que for)?
VIDEO_LENGTH_IN_SECONDS=`ffmpeg .... -i some_video ... | grep -o .....`
ffprobe -i some_video -show_entries format=duration -v quiet -of csv="p=0"
retornará a duração do vídeo em segundos.
Algo semelhante a:
Isso vai entregar:
HH:MM:SS.ms
. Você também pode usarffprobe
, que é fornecido com a maioria das instalações do FFmpeg:… Ou:
Para converter em segundos (e reter os milissegundos), canalize para:
Para convertê-lo em milissegundos, canalize para:
Se você deseja apenas os segundos sem os milissegundos, insira:
Exemplo:
fonte
ffprobe
, uma ferramenta projetada exatamente para esse tipo de finalidade que é fornecida comffmpeg
:ffprobe -show_format input | sed -n '/duration/s/.*=//p'
(ouffprobe -show_format input | grep duration | sed 's/.*=//'
). Talvez o @slhck possa editar isso diretamente na resposta.Caso você não tenha acesso
ffprobe
, você pode usarmediainfo
.fonte
jq
etr
:mediainfo --Output="General;%Duration/String%" input
X s YYY ms
versusX.YYY
. Fácil de ajustar,| sed -e 's/ s /./' -e 's/ ms//'
se você quiser seguir esse caminho e não tiver acessojq
.mediainfo --Output="General;%Duration/String3%" input
a saída em00:01:48.501
vez de1 min 48 s
.