Hi all,
Today i was about to find video file duration and resolution and few more info in python.
In debain based systems type this command in terminal
avconv
If this shows version , like this
avconv version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers
built on Mar 16 2015 13:19:10 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
Hyper fast Audio and Video encoder
usage: avconv [options] [[infile options] -i infile]… {[outfile options] outfile}…
Use -h to get full help or, even better, run ‘man avconv’
If it says commond or package not found, then install this by
sudo apt-get install libav-tools
After successful installation, In terminal
avconv -i "filepath" # give path to your video file
You will see output like this
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp42mp41
creation_time : 2015-10-21 16:41:08
Duration: 00:00:30.00, start: 0.000000, bitrate: 748 kb/s
Stream #0.0(eng): Video: h264 (Constrained Baseline), yuv420p, 480×240, 488 kb/s, 25 fps, 25 tbr, 25 tbn
Metadata:
creation_time : 2015-10-21 16:41:08
Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, fltp, 255 kb/s
Metadata:
creation_time : 2015-10-21 16:41:08
You can see the resolution and duration highlighted my result.
Now lets see how to use this in python to get video resolution, duration.
The idea is simple , am gonna use subprocess and pipe the output
Here is the python code.
from subprocess import Popen, PIPE
import re
def getvideodetails(filepath):
cmd = "avconv -i %s" % filepath
p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
di = p.communicate()
for line in di:
if line.rfind("Duration") > 0:
duration = re.findall("Duration: (\d+:\d+:[\d.]+)", line)[0]
if line.rfind("Video") > 0:
resolution = re.findall("(\d+x\d+)", line)[0]
return duration,resolution
# call function with file path
getvideodetails("filepath")
This code can be found in gist too here
Thats it.
Happy coding!!!
Happy times !!!