ffmpeg로 uyvy data를 lossless coding 해보고 싶습니다.
우선, ffmpeg 내 h264, hevc는 yuv444p, yuv420p, nv12, nv21, rgb0, bgr0 등의 color를 지원하는 것으로 보이지만, yuv422 format은 지원하지 않는 듯 합니다.
그래서 hevc나 h264로 yuv422 데이터를 encoding하려니, yuv444p로 casting 되는 것이 default setting 같습니다.
encoding 된 영상을 다시 yuv422로 변환 시 영상이 달라지는 것을 확인했고,
color conversion에서 loss가 발생하는 것으로 생각됩니다.
혹시 지원 가능한 codec 이나, 기타 설정 같은 게 있을까요?
'lossless coding'이 "픽셀 포맷을 그대로 보존한다"는 의미라면 libx264도 -pix_fmt yuv422p (8비트로 인코딩할 경우) 또는 -pix_fmt yuv422p10le (10비트로 인코딩할 경우. 이때 반드시 high10 프로파일을 선택) 옵션을 매개변수 창 '입력 설정' 부분(optional)과 '인코딩 설정' 부분에 추가함으로써 가능합니다. (앞에 공백 필수)
(참고로, '입력 설정' 부분에 들어가는 입력 동영상의 픽셀 포맷을 ffmpeg가 이해할 수 있도록 정확히 파악하려면 ffprobe로 돌려보면 나옵니다.)
그리고 빠른 설정에는 안 나와 있지만, 컨테이너 포맷을 mov로 설정하고 ProRes 인코더(prores, prores_aw, prores_ks 세 종류)로 인코딩하는 방법이 있는데, 옵션 설정 방법들은 구글 검색해서 찾아보시기 바랍니다. 영상 편집을 위한 422 포맷에는 ProRes를 많이들 쓰시는 것 같은데, ffmpeg의 인코더가 Apple이 제공하는 인코더보다 얼마나 효율/기능이 떨어질지는 저도 잘 모르겠네요.