如何通过 RTSP 在同一管道中发送音频文件和视频

时间:2021-02-10 13:56:51

标签: python-3.x network-programming gstreamer gstreamer-1.0 python-gstreamer

import sys
import gi

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

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

class TestRtspMediaFactory(GstRtspServer.RTSPMediaFactory):
    def __init__(self):
        GstRtspServer.RTSPMediaFactory.__init__(self)

    def do_create_element(self, url):
        #set mp4 file path to filesrc's location property
        src_demux = "filesrc location=/path/to/dir/test.mp4 ! qtdemux name=demux"
        h264_transcode = "demux.video_0"
        #uncomment following line if video transcoding is necessary
        #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)

class GstreamerRtspServer():
    def __init__(self):
        self.rtspServer = GstRtspServer.RTSPServer()
        factory = TestRtspMediaFactory()
        factory.set_shared(True)
        mountPoints = self.rtspServer.get_mount_points()
        self.address = '127.0.0.1' #my RPi's local IP
        self.port = '8553'
        self.rtspServer.set_address(self.address)
        self.rtspServer.set_service(self.port)
        mountPoints.add_factory("/stream1", factory)
        self.rtspServer.attach(None)
if __name__ == '__main__':
    s = GstreamerRtspServer()
    loop.run()

我可以使用以下命令流式传输视频。 gst-launch-1.0 playbin uri=rtsp://127.0.0.1:8553/stream1 请有人帮我在同一流中获取音频和视频。

0 个答案:

没有答案