close

原型

rtspsrc lolcaiton=rtsp://192.168.50.246 user-id=admin user-pw=admin protocols=4 ! rtph264depay ! h264parse ! avdec_h264 ! videoscale ! videorate ! videoconvert ! autovideosink

void on_pad_added (GstElement *element, GstPad *pad, gpointer data)

{

        gst_element_link_pads(element, gst_pad_get_name(pad), GST_ELEMENT(data), "sink");

}

int main(int argc, char *argv[])

{

    GMainLoop* loop=NULL;

    gst_init (&argc, &argv);


    loop = g_main_loop_new(NULL, FALSE);

    GstElement* pipeline = gst_pipeline_new(name); //建立pipeline

    GstElement* rtspsrc = gst_element_factory_make("rtspsrc","rtspsrc"); //rtsp 接收的元件

    GstElement* queue = gst_element_factory_make("queue","queue"); //buffer

    GstElement* depay = gst_element_factory_make("rtph264depay","videodepay"); // h264在rtp的payload要解開

    GstElement* parse = gst_element_factory_make("h264parse","h264parse"); // parse h264 header

    GstElement* video_decode = gst_element_factory_make("avdec_h264","videodecode"); //解碼

    GstElement* videoscale = gst_element_factory_make("videoscale","videoscale");  //影像寬高調整的element

    GstElement* videorate = gst_element_factory_make("videorate","videorate");  // video 張數的控制

    GstElement* videoconvert = gst_element_factory_make("videoconvert","videoconvert");  // 色彩轉換

    GstElement* autovideosink = gst_element_factory_make("autovideosink","videosink");  // 影像輸出

    g_object_set(G_OBJECT(rtspsrc), "location","192.168.50.246, "protocols", 4,NULL); //設定 rtsp參數

    g_object_set(G_OBJECT(rtspsrc), "user-id","admin", "user-pw","admin",NULL);  //設定 rtsp參數

    g_signal_connect(rtspsrc, "pad-added", G_CALLBACK(on_pad_added), depay); 

    // 屬性是sometimes, 所以叫建立pad

    Pad Templates:
      SRC template: 'stream_%u'
        Availability: Sometimes
        Capabilities:
          application/x-rtp
          application/x-rdt

 

    gst_bin_add_many(GST_BIN(pipeline), rtspsrc ,queue, depay, parse, video_decode, videoscale, videorate, videoconvert, autovideosink, NULL);

    gst_element_link_many(rtspsrc, queue, depay, parse, video_decode, videoscale, videorate, videoconvert, autovideosink, NULL);

    gst_element_set_state(pipeline, GST_STATE_PLAYING);

    g_main_loop_run(loop);

}

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

    stephenwei的部落格

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