2 回答
TA贡献1829条经验 获得超7个赞
这是我在论坛中找到的答案,如果这可能有帮助的话!我不知道 dvi-ffmpeg 之间的区别!检查是否有将 dvi 输出转换为 ffmpeg 的选项。
--------------在下面回答--------------
我试图通过 ffmpeg 管道到标准输出,以便它可以被 OpenCV 读取。似乎 streamlink 可以直接通过管道传输到标准输出。当我有机会的时候,我也可能会搞砸。
终于得到了。我以前将图像保存到磁盘,然后将它们读入 opencv。那行得通,但此解决方案有助于避免持续图像流的磁盘写入/读取成本。最终为我解决的是:
使用命名管道管道 ffmpeg 输出到命名管道然后使用 cv2.VideoCapture 从该管道读取创建命名管道:
if os.path.isfile("/tmp/stream"):
os.remove("/tmp/stream")
else:
call(["mkfifo", "/tmp/stream"])
ffmpeg 调用:
p = Popen(["ffmpeg -c:v h264 -i pipe:0 -r 1 -f image2pipe - > /tmp/stream"], stdout = PIPE, bufsize=10**8, shell=True)
recordStatus = p.poll() # check PIPE status every once in a while to make sure it hasn't closed early
用opencv读取:
path = "/tmp/stream"
raw_image = cv2.VideoCapture(path)
ret, frame = raw_image.read()
希望这可以帮助!
添加回答
举报