2017-03-15 1 views
0

swscale + x264를 사용하여 RGB 이미지 시퀀스를 h264 스트림으로 인코딩했습니다. 입력 이미지의 RGB 값 (모두 빨간색)이 (255, 0, 0) 인 경우 swscale + x264가 출력하는 YUV는 (81, 90, 240)입니다. swscale을 사용하면이 YUV 값을 원래 RGB 값으로 다시 변환 할 수 있습니다. 그러나 PotPlayer를 사용하여 스트림을 재생할 때 색상 이동이 발생합니다.x264 스트림 컬러 시프트

첫 번째 프레임을 캡처하여 bmp 파일로 저장했습니다. bmp 파일의 RGB 값은 (255, 24, 0)이며 녹색 채널은 0이 아닙니다.

이 색상 이동 문제를 해결하는 방법은 무엇입니까?

sws_setColorspaceDetails을 사용하여 ITU-601 색상 공간을 ITU-709로 변경하면이 문제를 해결할 수 있습니다.

답변

1

이것은 여러 가지 이유 때문일 수 있습니다. swsscale이 RGB를 YUV444 이외의 것으로 변환하는 경우, 서브 샘플링 프로세스에서 일부 채도 정밀도가 손실됩니다. H264는 손실 압축이기 때문에 압축 과정에서도 정보가 손실됩니다. 각 스테이지의 출력을 분석 할 때까지 어떤 차이가 발생하는지 알기는 어렵지만 손실은 색상 변환보다 손실이있는 인코딩으로 인해 발생합니다.