반응형
https://gstreamer.freedesktop.org/documentation/tutorials/basic/index.html?gi-language=c
GStreamer 튜토리얼 설명이 잘되어있다. 그래서 하나씩 실행해가면서 GStreamer 의 구조를 익히고 있다.
근데 각 튜토리얼의 코드를 실행했을 때 결과물이 어떻게 나오는지 안나와있다.
그래서 내가 하나씩 실행해보며 결과물을 모아놔야겠다.
basic-tutorial-1 : Hello world
신텔 영상 플레이되면 성공
basic-tutorial-2 : GStreamer concepts 이해
basic-tutorial-3 : 동적으로 pipelines 구성
신텔 오디오가 들리면 성공
- 비디오는 보이지 않고 오디오만 들리는 이유는 코드에서 비디오는 무시하고 오디오 패드만 링킹했기 때문이다.
- audioconvert, audioresample, autoaudiosink
basic-tutorial-4 : 시간 관련 기능
신텔 영상이 재생되고, 현재 재생되는 영상의 위치가 터미널에 출력되면 성공
- 10초쯤에 영상이 잠시 끊기는 이유
- gst_element_seek_simple()함수의 플래그에 GST_SEEK_FLAG_FLUSH를 줬기 때문이다.
- GST_SEEK_FLAG_FLUSH : seek을 수행하기 전에 현재 파이프라인에 있는 모든 데이터를 버린다. 그래서 파이프라인을 다시 채우고 새로운 데이터를 보여주기 전까지 잠시 영상이 멈출 수 있는 것이다.
- 이러한 문제에도 불구하고 이 플래그를 주는 이유는 데이터가 탁해지는 것을 막을 수 있기 때문이다.
- 현재 재생되는 미디어의 위치를 출력하는 방법
- 100*GST_MSECOND: gst_but_timed_pop_filtered() 함수에 타임아웃 시간을 파라미터로 넘겨준다.
- 타임아웃 파라미터를 주면 100msec마다 NULL을 반환하고 여기에서 시간을 리프레시 해준다.
- gst_element_query_position
- gst_element_query_duration
반응형