문제

제가 캡처한 비디오(PAL SDI)를 내보내는 애플리케이션을 작성 중입니다.원래 색상 공간은 uyvy(4:2:2)입니다.swscale을 사용하여 프레임을 4:2:0으로 변환하고 avcodec로 인코딩하면 필드 간에 색상 번짐이 발생합니다.나는 이것이 프레임이 인터레이스되는 것을 인식하지 못하는 swscale 때문이라고 생각합니다.다음은 필드 중 하나를 보여주는 내보낸 비디오의 Bob-디인터레이스 프레임 일부 예입니다.

color bleeding between fields

보시다시피, 다른 필드의 색상이 번집니다.이런 일이 발생하지 않도록 하려면 어떻게 해야 합니까?나는 라이브러리를 살펴보고 swscale에서 필드를 존중하라는 내용을 찾으려고 노력했지만 아무것도 찾지 못했습니다.

각 필드를 별도의 버퍼에 저장하므로 도움이 된다면 필드를 미리 개별적으로 처리할 수 있습니다.

이에 대한 도움을 주셔서 감사합니다!

칼라

편집하다:기본적으로 제가 원하는 것은 PAL DV를 출력하는 것입니다.나는 ffmpeg(애플리케이션)가 이것을 처리할 수 있기 때문에 swscale이 이런 유형의 인터레이스 420을 생성할 수 있다고 생각합니다.

도움이 되었습니까?

해결책

대답은 각 필드에 하나씩 두 개의 swscale 작업을 수행하는 것입니다.높이를 절반으로 지정하고 보폭을 두 배로 지정한 다음 두 번째 작업을 한 줄씩 오프셋하여 swscale이 동일한 버퍼를 사용하도록 속일 수 있습니다.

마침내 libav-user 목록에서 답을 얻었습니다.예제 코드는 MPlayer/libmpcodecs/vf_scale.c 및 libavfilter/vf_scale.c에서 찾을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top