I am planning to use ffmpeg to ensure all video files uploaded to my website are encoded as mp4 h264.
Rather than automatically processing every file I would like t
Use ffprobe
.
$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nokey=1:noprint_wrappers=1 input.mp4
h264
-v error
Omit extra information except for fatal errors.
-select_streams v:0
Select only the first video stream. Otherwise the codec_name
for all other streams in the file, such as audio, will be shown as well.
-show_entries stream=codec_name
Only output the codec_name
instead of all stream info.
-of default=nokey=1:noprint_wrappers=1
Select the default output format style and omit the key and wrapper info. Otherwise, without these options, it will output:
[STREAM]
codec_name=h264
[/STREAM]
An alternative is to use ffprobe
which is included with ffmpeg. The following will give the most terse output I can find from the ffmpeg tools:
ffprobe -hide_banner -stats -i myfile.avi
If you pass an input file to ffmpeg, without other parameters, it will give you information about the video source:
ffmpeg -i myfile.avi
Another way would be the -identify
option of mplayer, which might be slightly easier to parse. There is a wrapper script midentify
which gives you even better output. See this example.