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?
Use the -t option to specify a time limit: `-t duration' Restrict the transcoded/captured video sequence to the duration specified in seconds. hh:mm:ss[.
FFmpeg is a powerful tool that can do almost anything you can imagine with multimedia files.
Check it with a newer version of ffmpeg (you don't have to replace your build), and if it gives the same duration you can probably blame the file.
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
You can try tcprobe, part of transcode pack.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With