Skip to content

Instantly share code, notes, and snippets.

@kawasin73
Last active September 21, 2019 10:55
Show Gist options
  • Save kawasin73/7a854020a5318e44895eae1c0a710900 to your computer and use it in GitHub Desktop.
Save kawasin73/7a854020a5318e44895eae1c0a710900 to your computer and use it in GitHub Desktop.
video metadata parse benchmark of cv2, VideoConverter, Imageio
"""
$ pipenv install git+https://github.com/senko/python-video-converter.git#egg=VideoConverter
"""
import converter
def get_meta(path):
c = converter.Converter()
return c.probe(path)
if __name__ == '__main__':
import timeit
print(timeit.timeit("get_meta('movie/bannerg004.mp4')", setup="from __main__ import get_meta", number=100))
"""
$ pipenv install opencv-python-headless
"""
import cv2
def get_meta(path):
video = cv2.VideoCapture(path)
fps = video.get(cv2.CAP_PROP_FPS)
frames = video.get(cv2.CAP_PROP_FRAME_COUNT)
return {
'fps': fps,
'width': video.get(cv2.CAP_PROP_FRAME_WIDTH),
'height': video.get(cv2.CAP_PROP_FRAME_HEIGHT),
'format': video.get(cv2.CAP_PROP_FOURCC),
'length': float(frames) / float(fps),
}
if __name__ == '__main__':
import timeit
print(timeit.timeit("get_meta('movie/bannerg004.mp4')", setup="from __main__ import get_meta", number=100))
"""
$ pipenv install imageio imageio-ffmpeg
"""
import imageio
def get_meta(path):
reader = imageio.get_reader(path)
return reader.get_meta_data()
if __name__ == '__main__':
import timeit
print(timeit.timeit("get_meta('movie/bannerg004.mp4')", setup="from __main__ import get_meta", number=100))

video is here

mp4 video file (22.3 MB)

benchmark on macOS 10.14.6 (MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports)

result is the time (seconds) which take for 100 times

$ python --version
Python 3.7.3
$ python cv2-bench.py
2.1942368510000003
$ python converter-bench.py
5.014792028
$ python imageio-bench.py
20.356597165999997
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment