[FFmpeg-user] FFprobe should not return a duration if the file is a JPEG picture

Carl Zwanzig cpz at tuunq.com
Sun Aug 18 21:57:11 EEST 2019


On 8/18/2019 3:49 AM, August Johansson wrote:
>> It would useful to tell us more about what you're trying to accomplish and
>> exactly which version(s) of ffmpeg you're using.

> Because I think it would be correct to not display a duration for something
> that isnt playable. And yes, I am trying to determine a file is a audio or
> video or if  it is a non playable file.

A still image is "playable", it just doesn't last very long. And what does 
"playable" mean, anyway? A motion video might play for 6 seconds then be 
totally corrupt. Does that count? It really sounds like you're trying to 
figure out whether a file is acceptable to whatever will render it.


The quickest way to see what the format of a file is would be to use the 
'file' command-

$ file /c/cpz/temp/caution-edges.jpg
/c/cpz/temp/caution-edges.jpg: JPEG image data, JFIF standard 1.02, 
resolution (DPCM), density 0x0, segment length 16, Exif Standard: [TIFF 
image data, little-endian, direntries=1], comment: "ACD Systems Digital 
Imaging", baseline, precision 8, 400x320, components 3


$ file /c/cpz/temp/2dbridge_93212.gif
/c/cpz/temp/2dbridge_93212.gif: GIF image data, version 89a, 1491 x 312

and parse that for a list of acceptable formats.


A second approach is to look at the _Stream_ format (as below).
A third would be to render it to a null device and look for errors.


However.... there is an interesting anomaly in the output- a jpeg file 
-does- return a duration while some other common still formats don't. Could 
because a jpeg is recognized as (presumably) the first frame of an mjpeg stream.

   Duration: 00:00:00.04, start: 0.000000, bitrate: 127698 kb/s
     Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 
1632x1224, 25 tbr, 25 tbn, 25 tbc

   Duration: N/A, bitrate: N/A
     Stream #0:0: Video: png, pal8(pc), 2157x495 [SAR 11800:11800 DAR 
719:165], 25 tbr, 25 tbn, 25 tbc

   Duration: N/A, bitrate: N/A
     Stream #0:0: Video: gif, bgra, 1491x312, 10 tbr, 100 tbn, 100 tbc

I did not exhaustively look at this.

I also don't think it's a bug, per se. Perhaps unexpected behavior, but 
unless the file is demuxed enough to see if there is more than one frame, a 
single frame jpeg and a multi-frame mjpeg will look similar/the-same.

Later,

z!



More information about the ffmpeg-user mailing list