나는 h.264 비디오 및 aac 오디오가 포함 된 mpeg-ts 스트림을 얻는 라이브 푸시 필터를 작성했습니다. DirectShow 파이프 라인을 설정하고 출력 핀을 구성합니다. h.264 스트림을 렌더링 할 수 있지만 videotestsrc 및 "ball"패턴을 사용하여 gstreamer에서 스트리밍 할 때이 스크린 샷에서 볼 수있는 것처럼 렌더링에 아티팩트가 표시됩니다. 이 스크린 샷에는 검은 색 바탕에 흰색 점이 하나만 있어야합니다. 두 가지 추가 사항은 애니메이션이 재생 될 때 나타나는 "남은 부분"입니다.H.264 MPEG-TS 스트림에서 Microsoft MPEG-TS 디멀티플렉서 및 H.264 디코더를 사용할 때 왜 이러한 아티팩트가 나타 납니까?
MPEG-2를 스트리밍하고 이에 따라 파이프 라인을 변경하면 패턴이 오류없이 렌더링됩니다. 나는 on msdn을 설명한 설정을 사용하여 H264와 AVC1을 사용하여 명시 적으로 시퀀스 헤더를 제공하는 등의 방법으로 핀을 구성하려고 시도했다. 나는 여전히 같은 종류의 유물을 얻는다.
흥미로운 점 중 하나는 유물이 I 프레임과 동일한 빈도로 표시된다는 것입니다. 우리가 I 프레임 (key-int-max = 1) 만 보내면 아티팩트가 완전히 사라집니다.
또한, I- 프레임 간격이 60 일 때, 즉 2 초마다 오류가 이미지의 상부 절반에 나타나는 것으로 보인다. 두 번째 프레임 (key-int-max = 2)마다 하나의 I- 프레임으로 변경하면 아티팩트는 이미지의 맨 위에있는 좁은 스트립에만 나타납니다.
이 예제의 구성은 majortype = MEDIATYPE_Video가, 하위 유형 = MEDIASUBTYPE_H264, formattype =
videotestsrc live-source=true pattern=ball ! video/x-raw-yuv,format=(fourcc)I420,width=1366,height=768,framerate=30/1 ! timeoverlay halign=left valign=bottom shaded-background=true ! x264enc bitrate=4096 tune=zerolatency ! h264parse ! queue ! mux. audiotestsrc wave=ticks volume=0.2 ! voaacenc ! mux. mpegtsmux name=mux ! udpsink host=<ip> port=<port>
이 파이프 라인의 모습입니다 :
다음 gstreamer를 파이프 라인은 비디오 스트림을 생산 FORMAT_MPEG2 동영상. 특별히 제공되는 시퀀스 헤더가 없습니다.
그래서 이런 종류의 인공물이 일반적인 구성 문제의 증상입니까?