-
-
Save phuocphn/1847b22075839e39863ffa5f1f148745 to your computer and use it in GitHub Desktop.
Comparing speed of reading video frames via a subprocess, or via PyAV
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2013-10-05 10:19:59 mikeboers@maxwell: ~/Documents/Python/PyAV | |
$ time python video_frames_via_pipe.py | |
real 0m0.564s | |
user 0m0.729s | |
sys 0m0.241s | |
2013-10-05 10:20:01 mikeboers@maxwell: ~/Documents/Python/PyAV | |
$ time python video_frames_via_pyav.py | |
real 0m0.220s | |
user 0m0.457s | |
sys 0m0.059s |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import subprocess | |
import numpy | |
proc = subprocess.Popen(['ffmpeg', | |
"-i", "sandbox/640x360.mp4", | |
"-f", "image2pipe", | |
"-pix_fmt", "rgb24", | |
"-vcodec", "rawvideo", | |
"-"], | |
stdout=subprocess.PIPE, | |
) | |
while True: | |
raw_image = proc.stdout.read(640 * 360 * 3) | |
if not raw_image: | |
break | |
image = numpy.fromstring(raw_image, dtype='uint8').reshape((640, 360, 3)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Image | |
import av | |
def frame_iter(video): | |
streams = [s for s in video.streams if s.type == b'video'] | |
streams = [streams[0]] | |
for packet in video.demux(streams): | |
for frame in packet.decode(): | |
yield frame | |
video = av.open('sandbox/640x360.mp4') | |
frames = frame_iter(video) | |
for frame in frames: | |
img = Image.frombuffer("RGBA", (frame.width, frame.height), frame.to_rgba(), "raw", "RGBA", 0, 1) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment