[FFmpeg-user] How to get video duration in a script using ffmpeg?
Bo Berglund
bo.berglund at gmail.com
Wed Jan 19 13:23:07 EET 2022
This is on Linux:
I have tried in various ways to limit the output of ffmpeg/ffprobe to the line
holding the duration but it seems impossible...
I have a need to display the video duration as h:m:s on a listing of videos in a
directory.
So I want to create a small script to be called with the video file as argument
and the output should be the video duration formatted as hh:mm:ss
So I have tried various ways of using ffmpeg and ffprobe to extravt the data
without much success.
Whatever I do seems to create too much output like this following a
StackExchange suggestion:
ffprobe -hide_banner -i input.mp4 | grep Duration
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.45.100
Duration: 00:43:26.38, start: 0.000000, bitrate: 452 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 852x480
[SAR 640:639 DAR 16:9], 348 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo,
fltp, 94 kb/s (default)
Metadata:
handler_name : SoundHandler
I had assumed that the output would be limited to the requested duration but it
seems like it spews out all other data no matter what I do.
The 7th line only is what I expected out of grep but by some mysterious reason a
lot more clobbers the output.
What do I need to just get that output I want?
--
Bo Berglund
Developer in Sweden
More information about the ffmpeg-user
mailing list