使用pyav访问网络视频流

65 篇文章 5 订阅
23 篇文章 1 订阅

背景

深度学习项目中使用python-opencv获取视网络频流出错,找替代方案.要求能得到numpy格式的图片,供opencv和深度模型使用。

方案选型

据我所知道的方法,在python中访问网络视频流(rtsp 或者http视频流)有以下工具:opencv、pyav、imageio和python-vlc.

imageio和python-vlc的资料少,没找到完美的例子,放弃。
opencv是最简单的,网上也有很多例子,推荐使用。

**但是**opencv在我的docker里运行有错误,所以选择pyav。

libav是部分ffmpeg开发人员出走后另外成立的项目,功能和ffmpeg基本一致。pyav是对libav的python语言binding。

libav的官网:https://libav.org/

libav播放rtsp的例子:https://github.com/mikeboers/PyAV/issues/300

代码

参考例子,自己写的代码如下:

import av
import cv2

#video = av.open('rtsp://admin:ts123456@10.21.38.241:554', 'r')
video = av.open('http://10.11.20.104:8554/48/64', 'r')
print("format:" + video.dumps_format())
print('after open')
index = 0
try:
    for frame in video.decode():
        # Do something with `frame`
        index += 1
        print("frame:{}".format(index))

        img = frame.to_nd_array(format='bgr24')
        #cv2.imshow("Test", img)
        cv2.imwrite("Test{}.jpg".format(index), img)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
except Exception as e:
    print('fate erro:{}'.format(e))

cv2.destroyAllWindows()

安装pyav请参考 https://mikeboers.github.io/PyAV/installation.html#dependencies

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值