gpt4 book ai didi

python - rawvideo image2pipe的ffmpeg和avconv之间的区别

转载 作者:行者123 更新时间:2023-12-04 23:16:07 25 4
gpt4 key购买 nike

我不知道为什么,但是 avconv似乎不像我期望的那样播放原始视频。

我正在尝试从 ffmpeg 传输视频进入 python (最终我想从 x11grab 中读取,而不是视频文件)。使用 ffmpeg 在我的 Macbook 上运行良好,但是当我使用 avconv在 Debian Jessie 上,流提前中断了!

这是我的基本 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。任何想法为什么会发生这种情况?

有趣的是,3072000/1015808 大约是 3:
In [1]:    3072000./1015808.
Out[1]: 3.024193548387097

最佳答案

我遇到了这个问题,因为我是从 Docker 实例内部运行的,该实例是基于 Debian 构建的。 ffmpeg在我正在运行的 Debian 版本中默认不打包。

我通过下载 ffmpeg 设法解决了这个问题。二进制,根据上面@LordNeckbeard 的评论。我已将这些行添加到我的 Dockerfile这为我解决了这个问题:

# Install FFMPEG
RUN wget http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz
RUN tar xvfJ ffmpeg-release-64bit-static.tar.xz
USER root
RUN ln ffmpeg-3.1.2-64bit-static/ffmpeg /usr/local/bin/ffmpeg

谢谢。

关于python - rawvideo image2pipe的ffmpeg和avconv之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38406935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com