Gstreamer

zz0622
|2024. 4. 15. 17:29

 

https://medium.com/may-i-lab/gstreamer-gstreamer-%EA%B8%B0%EC%B4%88-da5015f531fc


rtph264depay (RTP H264 Depayloading)
:

  • Gst.ElementFactory.make("rtph264depay", f"depay{index}")는 RTP (Real-time Transport Protocol) 패킷에서 H.264 비디오 스트림을 추출하는 데 사용되는 요소를 생성합니다. 이 요소는 네트워크를 통해 전송되는 RTP 패킷에서 H.264 비디오 데이터를 분리해 내어 다음 요소로 전달할 수 있는 형태로 변환합니다. 이 과정을 'de-payloading'이라고 합니다.


capsfilter (Capabilities Filter)
:

  • Gst.ElementFactory.make("capsfilter", f"caps{index}")는 미디어 스트림의 데이터 포맷을 제어하는 필터 요소를 생성합니다. 'Caps'는 'Capabilities'의 약어로, GStreamer에서는 미디어 포맷의 세부 사항을 정의합니다.
  • capsfilter 요소는 연결된 스트림이 특정 포맷 또는 특성을 갖도록 강제하는 역할을 합니다. 예를 들어, 비디오 스트림의 해상도, 프레임 속도, 색상 포맷 등을 명시적으로 지정할 수 있습니다. 코드 내에서 capsfilter에 video/x-raw,format=RGB라는 캡스를 설정하여, 비디오 데이터가 RGB 형식의 원시 데이터로 변환되어 처리되도록 지정하고 있습니다.

 

appsink의 특성

  1. emit-signals:
    • sink.set_property("emit-signals", True)는 appsink가 시그널을 발생시킬 수 있도록 설정합니다. 이는 appsink에서 새로운 샘플이나 버퍼가 도착할 때마다 신호를 통해 알림을 받을 수 있게 해줍니다. 이 기능을 활성화하면, 예를 들어 new-sample 시그널을 사용하여 비디오 프레임이 도착할 때마다 그 프레임을 애플리케이션에서 처리할 수 있습니다. 이는 실시간 비디오 처리나 분석 등에 매우 유용하게 사용됩니다.
  2. sync:
    • sink.set_property("sync", False) 설정은 appsink가 비디오 또는 오디오 스트림의 클럭 싱크(동기화)를 무시하고 바로 데이터를 처리하도록 합니다. 일반적으로 GStreamer 파이프라인은 모든 요소가 글로벌 클럭에 맞추어 동기화되어 실행되지만, sync를 False로 설정하면 appsink는 입력되는 데이터를 즉시 처리하여 지연 시간을 최소화합니다. 이는 특히 실시간 처리가 필요한 응용 프로그램에서 중요합니다.