Supposons que nous ayons un fichier vidéo some_video.
Comment puis-je obtenir sa longueur à partir d'un script shell (avec mplayer / transcode / gstreamer / vlc / ffmpeg / que ce soit)?
VIDEO_LENGTH_IN_SECONDS=`ffmpeg .... -i some_video ... | grep -o .....`
Quelque chose de similaire à:
Cela fournira:
HH:MM:SS.ms
. Vous pouvez également utiliserffprobe
, qui est fourni avec la plupart des installations FFmpeg:… ou:
Pour convertir en secondes (et conserver les millisecondes), canalisez en:
Pour le convertir en millisecondes, canalisez en:
Si vous voulez juste les secondes sans les millisecondes, dirigez-vous vers:
Exemple:
la source
ffprobe
, un outil conçu pour exactement ce genre de fins qui est fourni avecffmpeg
:ffprobe -show_format input | sed -n '/duration/s/.*=//p'
(ouffprobe -show_format input | grep duration | sed 's/.*=//'
). Peut-être que @slhck peut le modifier directement dans la réponse.Si vous n'y avez pas accès
ffprobe
, vous pouvez utilisermediainfo
.la source
jq
ettr
:mediainfo --Output="General;%Duration/String%" input
X s YYY ms
versusX.YYY
. Assez facile à régler| sed -e 's/ s /./' -e 's/ ms//'
si vous souhaitez emprunter cette route et que vous n'y avez pas accèsjq
.mediainfo --Output="General;%Duration/String3%" input
en sortie00:01:48.501
au lieu de1 min 48 s
.