video

gstreamer basic tutorial_1 :: line별 분석

growww 2018. 12. 7. 11:01

#include <gst/gst.h>


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

  GstElement *pipeline;

  GstBus *bus;

  GstMessage *msg;


  /* test용 변수선언 */

  char *launch_uri = "playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm";

  char *launch_uri_rtsp_sample = "playbin uri=rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov"; /* Wowza Streaming Engine's sample*/


  /* Initialize GStreamer */

  /* gst_init을 꼭 호출해서 라이브러리들을 초기화, argc와 argv로 넘어온 gstreamer 옵션 값 */

  gst_init (&argc, &argv);


  /* Build the pipeline */

  /* gstreamer에서 영상을 재생시키기 위해서는 "source element"와 "sink element"가 존재하고, 이 source에서 sink로 데이터가 흘러야한다. = 이 과정이 pipeline */

  /* pipeline은 개발자가 일일이 개별 요소를 구축해서 생성할 수도 있고, 아래와 같이 gst_parse_launch를 통해서 자동으로 pipeline을 생성 */

  /* 개별 요소를 구축의 경우는 개발자가 source element -> sink element일떄 이벤트를 잡아서 어떤 처리를 하고 싶다 의 요구사항이 있을때 개별 구축이 필요함*/

  /* uri 부분을  http:// or file:// URI, playbin 등으로 바꿔도됨 */

  /* 1. 이부분을 rtmp , rtsp 입수 가능하게 바꿔보자 */

  pipeline = gst_parse_launch (launch_uri_rtsp_sample, NULL);


  /* Start playing */

  /* pipeline의 상태를 playing :: ST_STATE_NULL, GST_STATE_READY, GST_STATE_PAUSED, GST_STATE_PLAYING */

  gst_element_set_state (pipeline, GST_STATE_PLAYING);


  /* Wait until error or EOS */

  /* pipeline으로부터 bus를 가져오고 bus의 이벤트가 에러이거나(GST_MESSAGE_ERROR), 파일의 끝(GST_MESSAGE_EOS)일 때까지 block시킴을 의미 */

  bus = gst_element_get_bus (pipeline);

  msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS);


  /* Free resources */

  /* Cleanup(자원 반환) 코드이다. bus로부터 반환된 메시지를 해제하고, bus 객체도 해제한다. pipeline의 상태를 NULL로 바꿔주고(default) pipeline 객체를 해제하면 모든 자원 반환이 완료 */

  if (msg != NULL) {

  gst_message_unref(msg);

  }

  gst_object_unref (bus);

  gst_element_set_state (pipeline, GST_STATE_NULL);

  gst_object_unref (pipeline);

  return 0;

}




출처:
http://yujuwon.tistory.com/entry/hello-world-%EC%B0%8D%EA%B8%B0


'video' 카테고리의 다른 글

스트리밍 프로토콜 선택  (0) 2019.04.11
install gstreamer in windows10  (0) 2018.12.05
Streaming 방식 및 상세  (0) 2018.11.25