close
import sys, os
import gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst, GObject, GLib
GObject.threads_init()
Gst.init(None)
def on_pad_added(src1, pad, dst):
apad = dst.get_static_pad("sink")
pad.link(apad)
while True:
pipe = Gst.Pipeline.new("test")
video_source = Gst.ElementFactory.make("rtspsrc", "video_source")
audio_source = Gst.ElementFactory.make("rtspsrc", "audio_source")
video_depay = Gst.ElementFactory.make("rtph264depay", "video_depay")
audio_depay = Gst.ElementFactory.make("rtppcmudepay", "audio_depay")
video_parse = Gst.ElementFactory.make("h264parse", "parse")
video_decode = Gst.ElementFactory.make("vaapih264dec", "video_decode")
audio_decode = Gst.ElementFactory.make("mulawdec", "audio_decode")
video_convert = Gst.ElementFactory.make("videoconvert", "video_convert")
audio_convert = Gst.ElementFactory.make("audioconvert", "audio_convert")
audio_resample = Gst.ElementFactory.make("audioresample", "audio_resample")
video_queue = Gst.ElementFactory.make("queue", "video_queue")
audio_queue = Gst.ElementFactory.make("queue", "audio_queue")
video_sink = Gst.ElementFactory.make("autovideosink", "video_sink")
audio_sink = Gst.ElementFactory.make("autoaudiosink", "audio_sink")
elements_video = [video_source, video_queue, video_depay, video_parse, video_decode, video_convert, video_sink]
elements_audio = [audio_source, audio_queue, audio_depay, audio_decode, audio_convert, audio_resample, audio_sink]
video_source.set_property("location", "rtsp://192.168.50.246")
video_source.set_property("user-id", "admin")
video_source.set_property("user-pw", "admin12345")
audio_source.set_property("location", "rtsp://192.168.50.246")
audio_source.set_property("user-id", "admin")
audio_source.set_property("user-pw", "admin12345")
video_source.connect("pad-added", on_pad_added, video_queue)
audio_source.connect("pad-added", on_pad_added, audio_queue)
for element in elements_video:
pipe.add(element)
for element in elements_audio:
pipe.add(element)
video_source.link(video_queue)
video_queue.link(video_depay)
video_depay.link(video_parse)
video_parse.link(video_decode)
video_decode.link(video_convert)
video_convert.link(video_sink)
audio_source.link(audio_queue)
audio_queue.link(audio_depay)
audio_depay.link(audio_decode)
audio_decode.link(audio_convert)
audio_convert.link(audio_resample)
audio_resample.link(audio_sink)
pipe.set_state(Gst.State.PLAYING)
mainloop = GObject.MainLoop()
Gst.debug_set_active(True)
Gst.debug_set_default_threshold(4)
mainloop.run()
文章標籤
全站熱搜