You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用GStreamer Python绑定自定义IP和端口推送RTSP流?

如何为GStreamer RTSP服务器设置自定义IP和端口

你可以通过GStreamer RTSP Server的set_address()和set_service()方法指定绑定的IP地址和端口,以下是修改后的完整代码:

from argparse import Namespace, ArgumentParser

import gi

gi.require_version('Gst', '1.0')
gi.require_version('GstRtspServer', '1.0')

from gi.repository import Gst, GstRtspServer, GObject, GLib

loop = GLib.MainLoop()
Gst.init(None)


class RtspMediaFactory(GstRtspServer.RTSPMediaFactory):
    def __init__(self, filename):
        GstRtspServer.RTSPMediaFactory.__init__(self)
        self.filename = filename

    def do_create_element(self, url):
        # set mp4 file path to filesrc's location property
        src_demux = f"filesrc location={self.filename} ! qtdemux name=demux"
        h264_transcode = "demux.video_0"
        # h264_transcode = "demux.video_0 ! decodebin ! queue ! x264enc"
        pipeline = "{0} {1} ! queue ! rtph264pay name=pay0 config-interval=1 pt=96".format(src_demux, h264_transcode)
        print("Element created: " + pipeline)
        return Gst.parse_launch(pipeline)


def main(args: Namespace) -> None:
    rtsp_server = GstRtspServer.RTSPServer()
    
    # 设置自定义IP地址和端口
    if args.address:
        rtsp_server.set_address(args.address)
    if args.port:
        rtsp_server.set_service(args.port)
    
    factory = RtspMediaFactory(filename=args.file)
    factory.set_shared(True)
    mount_points = rtsp_server.get_mount_points()
    mount_points.add_factory("/Stream/", factory)
    rtsp_server.attach(None)


if __name__ == '__main__':
    parser = ArgumentParser()
    parser.add_argument('--file', help='Video file path', type=str, required=True)
    parser.add_argument('--address', help='Bind address (e.g., 0.0.0.0)', type=str, default='127.0.0.1')
    parser.add_argument('--port', help='RTSP port (e.g., 8555)', type=str, default='8554')
    main(args=parser.parse_args())
    loop.run()

关键改动说明

  1. 在main函数中新增服务器配置:
    • set_address("0.0.0.0"):绑定到所有可用网卡,允许外部设备访问
    • set_service("8555"):指定RTSP服务端口(API要求端口为字符串格式)
  2. 命令行参数新增--address和--port选项,保留默认值兼容原有逻辑,同时支持灵活配置

使用示例

运行时通过命令行指定自定义地址和端口:

python your_script.py --file path/to/your/video.mp4 --address 0.0.0.0 --port 8555

此时RTSP流地址为:rtsp://<你的机器局域网IP>:8555/Stream/

内容的提问来源于stack exchange,提问作者Armin Azhdehnia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:01:06