如何使用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()
关键改动说明
- 在
main函数中新增服务器配置:set_address("0.0.0.0"):绑定到所有可用网卡,允许外部设备访问set_service("8555"):指定RTSP服务端口(API要求端口为字符串格式)
- 命令行参数新增
--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
相关产品推荐
相关产品推荐

