
UDP를 통해 ts 스트림(.ts 파일)을 전송하고 싶습니다.
저는 아래 파이프라인을 사용했습니다.
gst-launch-1.0 filesrc =location=a.ts ! tsparse ! rtpmp2tpay ! udpsink host="IP" port="port"
하지만 몇 초 안에 스트림이 종료됩니다.
수신자 측에서는 일부 데이터만 수신하고 있습니다.
filesrc에 대해 do-timestamp=true를 설정하면 경고가 발생합니다.
0:00:00.051245178 4751 0xe494a0 WARN mpegtspacketizer mpegtspacketizer.c:1388:calculate_skew: delta - skew: 5124091:34:25.044918089 too big, reset skew
TS 파일은 yuv 파일의 디코드와 mpegtsmux에 의해 생성됩니다.
해당 TS 파일은 내가 직접 역다중화 및 디코딩할 때 제대로 작동합니다.
하지만 UDP를 통해 해당 ts 파일을 스트리밍하면 이 문제가 발생합니다.
UDP를 통해 TS 스트림을 어떻게 전송할 수 있나요?
답변1
MPEG2-TS는 DTS/PTS 디코딩 및 프리젠테이션을 위해 타임스탬프를 전달합니다. 타임스탬프 재스탬프를 파이프라인에 삽입해야 합니다.
디코딩할 때 로컬 디코더는 타임스탬프의 상대적 시간 정보만 사용하거나 완전히 버리고 비트 전송률에서 타이밍을 다시 계산할 수 있습니다. 이는 대부분의 거의 모든 스트림에서 잘 작동합니다(VLC는 수년간 타임스탬프를 따르지 않았으며 최근 릴리스에서만 배웠습니다).
어쩌면 누군가가 이 답변을 편집하고 파이프라인에 삽입할 올바른 키워드를 제공할 수도 있습니다.