Why does FFMPEG report the wrong duration?
ffmpeg, video
Solution
You should not rely on the stderr.
The stderr output is not intended to be machine parsed: it is for informational purposes only and prone to breakage.
Parse it with
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
30.024000
You can also use ffmpeg to get the duration by fully decoding the file.
ffmpeg -i input.webm -f null -
...
frame=206723 fps=1390 q=-0.0 Lsize=N/A time=00:57:28.87 bitrate=N/A speed=23.2x
For detail refer to Format (container) duration
Problem
I have an oldish build of FFmpeg that I can't easily change. We use FFmpeg to find the duration of video and sound files. So far it has been working wonderfully. Recently on an uploaded file, FFmpeg has reported a 30 second file as being 5 minutes 30 seconds in length. Could it be something wrong with the file rather than FFmpeg? If I use FFmpeg to convert to another file, the duration is restored. In case it matters, ffmpeg -i 'path to the file' produces: ``` FFmpeg version Sherpya-r15618, Copyright (c) 2000-2008 Fabrice Bellard, et al. libavutil 49.11. 0 / 49.11. 0 libavcodec 52. 0. 0 / 52. 0. 0 libavformat 52.22. 1 / 52.22. 1 libavdevice 52. 1. 0 / 52. 1. 0 libswscale 0. 6. 1 / 0. 6. 1 libpostproc 51. 2. 0 / 51. 2. 0 built on Oct 14 2008 23:43:47, gcc: 4.2.5 20080919 (prerelease) [Sherpya] Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'H:\path\to\file.mov': Duration: 00:05:35.00, start: 0.000000, bitrate: 1223 kb/s Stream #0.0(eng): Audio: aac, 44100 Hz, stereo, s16 Stream #0.1(eng): Video: h264, yuv420p, 720x576, 25.00 tb(r) Must supply at least one output file ``` It's that very command I use to then extract the duration with RegEx. Does anyone have a nice application that can do what I'm trying above but get it right 100% of the time?