python使用gstreamer拉取视频流

代码:

import gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst, GObject

GObject.threads_init()
Gst.init(None)
#pipeline_str="rtspsrc location=rtsp://100.78.210.126:8554/video latency=0 ! queue ! application/x-rtp ! rtph264depay ! avdec_h264 ! videoconvert ! video/x-raw,format=BGRA ! appsink name=outsink"
pipeline_str = "rtspsrc location=rtsp://100.78.210.126:8554/video latency=0 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink"

pipeline = Gst.parse_launch(pipeline_str)
pipeline.set_state(Gst.State.PLAYING)

bus = pipeline.get_bus()
while True:
    message = bus.timed_pop_filtered(Gst.CLOCK_TIME_NONE, Gst.MessageType.ERROR | Gst.MessageType.EOS)
    if message:
        if message.type == Gst.MessageType.ERROR:
            err, debug = message.parse_error()
            print("Error received from element %s: %s" % (message.src.get_name(), err.message))
            print("Error received from element {}: {}".format(message.src.get_name(), err.message))

            #print(f"Error received from element {message.src.get_name()}: {err.message}")
            #print(f"Debugging information: {debug if debug else 'none'}")
            break
        elif message.type == Gst.MessageType.EOS:
            err, debug = message.parse_error()
            print("Error received from element " + message.src.get_name() + ": " + err.message)

            #print("End-Of-Stream reached.")
            break

pipeline.set_state(Gst.State.NULL)

import gi报错

下载PyGObject for Windows Files安装

链接:PyGObject for Windows - Browse Files at SourceForge.net

这个库最高只支持python3.4

安装时选择python3.4路径,选择与gstreamer有关的项目打钩

想用更高版本的python可以用此方法:How to compile OpenCV with Gstreamer [Ubuntu&Windows] | by Galaktyk 01 | Medium

参考博客:gstreamer python bindings for Windows - Stack Overflow

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值