2017-10-29 1 views
0

다음 주요 요소에서 생성 했으므로 비디오를 재생하려고합니다. 그러나 gst_element_link_many의 결과는 항상 FALSE입니다. GStreamer 라이브러리의 요소를 함수 gst_element_link_many와 연결할 수 없습니다.

GstElement *pipeline, *videosrc, *videoenc, *muxer, *sink; 
pipeline = gst_pipeline_new ("video-player"); 
    videosrc = gst_element_factory_make ("filesrc", "videosrc"); 
    muxer = gst_element_factory_make ("qtdemux", "mux"); 
    videoenc = gst_element_factory_make ("avdec_mpeg4", "videoenc"); 
    sink = gst_element_factory_make ("autovideosink", "sink"); 

g_object_set (G_OBJECT (videosrc), "location", argv[1], NULL); 
gst_bin_add_many (GST_BIN (pipeline), videosrc, muxer, videoenc, sink, NULL); 

    /* link the elements together */ 
    int resLinkMany = gst_element_link_many (videosrc, muxer, videoenc, sink, NULL); 

    printf(" resLinkMany = %d \n", resLinkMany); //I get 0 

는 일반적으로 나는 비디오를 시작하려고하지만, 때문에 잘못된 연결 작동하지 않았다. 내 프로그램의 전체 코드는 다음과 같습니다. https://pastebin.com/BER1BZDU

+0

오류를 보려면 GST_DEBUG 환경 변수를 사용하십시오. 또한 gst-launch 명령을 사용해보십시오. – Velkan

답변

0

이것은 일반적인 실수입니다. gst-inspect-1.0 qtdemux에서 볼 수 있듯이 src 패드는 '때때로'패드입니다. 연결하려면 '패드가 추가됨'신호를 사용해야합니다. gst-launch는 이것을 투명하게 수행합니다.

관련 문제