python ffmpeg pipe_将原始OpenCV映像管道传输到FFmpeg

这是一个使用OpenCV的python绑定读取网络摄像头的简单示例:

'''capture.py'''

import cv, sys

cap = cv.CaptureFromCAM(0) # 0 is for /dev/video0

while True :

if not cv.GrabFrame(cap) : break

frame = cv.RetrieveFrame(cap)

sys.stdout.write( frame.tostring() )

现在,我想将输出通过管道传递给ffmpeg,如下所示:

$ python capture.py | ffmpeg -f image2pipe -pix_fmt bgr8 -i--s 640x480 foo.avi

可悲的是,我无法完全正确地实现ffmpeg魔咒,并且失败了

libavutil 50.15。1 / 50.15。1个

libavcodec 52.72。2 / 52.72。2

libavformat 52.64。2 / 52.64。2

libavdevice 52. 2. 0 / 52. 2. 0

libavfilter 1.19。0 / 1.19。0

libswscale 0.11。0 / 0.11。0

libpostproc 51. 2. 0 / 51. 2. 0

输出#0,avi,到'out.avi':

流#0.0:视频:flv,yuv420p,640x480,q = 2-31、19660 kb / s,90k tbn,30 tbc

[image2pipe @ 0x1508640]已达到max_analyze_duration

[image2pipe @ 0x1508640]从比特率估算持续时间,这可能不准确

从'pipe:'输入#0,image2pipe:

持续时间:不适用,比特率:不适用

流#0.0:视频:0x0000,bgr8、25 fps,25 tbr,25 tbn,25 tbc

swScaler:0x0-> 640x480缩放比例无效

捕获的帧绝对是640x480。

我很确定OpenCV图像类型(IplImage)的像素顺序是GBR,每个通道一个字节。至少,这似乎是从相机上脱落的。

我不是ffmpeg大师。有人成功做到了吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值