0
我不知道为什么,但avconv
似乎不像我所期望的管道原始视频。ffmpeg和avconv之间的区别rawvideo image2pipe
我试图管从ffmpeg
视频到python
(最终我想从x11grab
,而不是视频文件)。在我的Macbook上使用ffmpeg
工作得很好,但是当我在Debian Jessie上使用avconv
时,该流很快就切断了!
这里是我的基本的Python,这是继this guide:
input_resolution_shape = (1280,800,3)
input_bytes = reduce(mul, input_resolution_shape, 1)
print input_bytes
# Prints 3072000
import subprocess as sp
command = [ FFMPEG_BIN, # This is either "avconv" or "ffmpeg".
'-i', 'test_video.mp4',
'-f', 'image2pipe',
'-pix_fmt', 'rgb24',
'-vcodec', 'rawvideo', '-']
pipe = sp.Popen(command, stdout = sp.PIPE, bufsize=10**8)
import numpy
for _ in range(100): # read 100 frames
# read 1280*800*3 bytes (= 1 frame)
raw_image = pipe.stdout.read(input_bytes)
# transform the byte read into a numpy array
image = numpy.fromstring(raw_image, dtype='uint8')
if image.size != 0:
print image.size
# Prints 1015808
在Mac上,打印的image.size
是一样的input_bytes
,3072000.但是Debian的,它是1015808.任何想法,为什么这可能是发生了什么?
有趣的是,一百零一万五千八百零八分之三百零七万二千只有约3:
In [1]: 3072000./1015808.
Out[1]: 3.024193548387097
'acvonv'不等同于'ffmpeg'。你为什么不使用'ffmpeg'?你可以简单地[下载一个静态'ffmpeg'二进制文件](http://johnvansickle.com/ffmpeg/)并将脚本指向它。 – LordNeckbeard
因为我在Debian上,我无法弄清楚如何在其上正确安装ffmpeg。 :( – NHDaly