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()

arrow
arrow
    文章標籤
    GStreamer python
    全站熱搜
    創作者介紹
    創作者 stephenwei 的頭像
    stephenwei

    stephenwei的部落格

    stephenwei 發表在 痞客邦 留言(0) 人氣()