技术求助: Python 除了使用 opencv,还有没有其他方式拉取 rtsp 视频流和解码? 1080p30m 码率

2020-12-03 00:01:02 +08:00
 mrhhhdx
v2ex 的大佬们,最近需要写一个 rtsp 播放器,使用 opencv 拉 720 的视频延迟在 300ms 左右,但拉大码率的 1080p 视频时就非常慢(且 cpu 占用高),大概有 3-5s 。有没有其他方式拉 rtsp 和解码 h264 ?想把延迟控制在 300ms 以内

另外,能否用上 GPU 解码

Ps:GUI 是用 PySide2 ( pyqt5 ),我用 opencv 将 YUV 视频文件转为 rgb 并转为 Qpixmap 并显示到 Qlabel 上,效果非常好,所以难点还是在拉流解码这一块,试过 PyAV,效果也不佳,不知道是不是没用对
3870 次点击
所在节点    Python
11 条回复
mrhhhdx
2020-12-03 00:02:32 +08:00
第一次当伸手党,实在是搞不定。。
learningman
2020-12-03 00:05:26 +08:00
ffmpeg?
aliipay
2020-12-03 00:21:45 +08:00
用了 py 为什么还追求性能?
jhdxr
2020-12-03 00:33:45 +08:00
同感。要性能用啥 python,主流语言里垫底的

但是你这个问题其实并不是 python 的锅。大概率你 1080 是软解的,CPU 跟不上。。。解决方案是换块显卡(或者视频换一个你显卡能支持的编码格式)
mrhhhdx
2020-12-03 01:30:27 +08:00
@jhdxr 是软解,运行时 cpu 到百分之九十几,不太懂怎么使用硬解。。
mrhhhdx
2020-12-03 01:31:15 +08:00
@aliipay 说多了都是泪呀~~~
wnpllrzodiac
2020-12-03 08:11:01 +08:00
多媒体实时用 java python 啥的都是蛮难的
wwqgtxx
2020-12-03 08:29:02 +08:00
调用 ffmpeg 并且开启硬解选项(需要你显卡支持)
ps:其实 opencv 内部的视频解码也是用 ffmpeg 实现的
ShayneWang
2020-12-03 11:12:05 +08:00
这题前半段我好像会... ffmpeg 可以破延迟和 GPU 解码问题
jiobanma
2020-12-03 15:20:37 +08:00
不知道你的需求是不是将 rtsp 转为 rtmp 播放? 如果是的话,h264 视频可以转封装。只是将 mpeg 格式的 avpacket 换个壳子换成 flv 格式的,不会有编解码的动作在里面。这样拉来的是未解码的 avpacket 推出去的还是 avpacket,资源消耗很小。我是用 java 开发的 使用的是开源的 javacv 库,不知道对你有没有什么帮助。项目地址: https://github.com/banmajio/RTSPtoRTMP
yagamil
2020-12-11 01:38:14 +08:00
用 opencv 转码是会有很大压力的,或者看看 pyqt 有没空间直接支持 rtsp 流媒体播放的。 之前研究过 web 的流媒体,有 vlc 的浏览器插件可以自己播,比自己处理要快。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/731574

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX