python ffmpeg图片推流

code
第一版可以参考https://blog.csdn.net/u011622208/article/details/95368929

import subprocess as sp
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))        # 视频流的参数
    sizeStr = str(size[0]) + 'x' + str(size[1])
    fps = cap.get(cv2.CAP_PROP_FPS)                            # 30p/self
    fps = int(fps)
    rtmpUrl = 'rtmp://localhost/Vehicle'
    command = ['ffmpeg',
    '-y',
    '-c', 'copy',                   # copy图像的质量会更好
    '-f', 'rawvideo',
    '-vcodec','rawvideo',
    '-pix_fmt', 'bgr24',
    '-max_delay', str(100),
    '-s', sizeStr,
    '-r', str(fps),
    '-i', '-',
    '-c:v', 'libx264',
    '-pix_fmt', 'yuv420p',
    '-preset', 'ultrafast',
    '-f', 'flv',
    '-g', '5',
    '-b', '7000000',
    rtmpUrl]
    pipe_push = sp.Popen(command, stdin=sp.PIPE, shell=False)

    while cap.isOpened():
        tet = cap.grab()
        i += 1
        if i > 1000000000000:
            i = 0
            start = time.time()
        if tet and i % interval == 0:
            det, frame = cap.retrieve()
            if det:
                try:
                    fps = i / (time.time() - start)
                    res_img = DR_model.vehicle_detect(frame, fps)
                    # # debug show
                    # cv2.imshow('mat', res_img)
                    # cv2.waitKey(1)
                    # ffmpeg image to video
                    if ffmpeg_flage:
                        pipe_push.stdin.write(res_img.tostring())

推流成功之后用vlc进行播放的时候,点开视频,延迟很高

解决方案
加上’-g’, '5’可以降低延时
‘b’,‘7000000’,设置的码率,和图像质量有关,数字越小,图片质量越差。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值