glReadPixels()에서 생성 된 rgb 데이터 배열이 있습니다.
RGB 데이터는 픽셀로 패킹 된 것입니다 (r1, g1, b1, r2, g2, b2, ...).OpenCV 또는 다른 이미지 처리 라이브러리를 사용하여 RGB 데이터에서 YUV 420 비디오 프레임을 쓰는 방법은 무엇입니까?
OpenCV 또는 다른 C++ 라이브러리를 사용하여 YUV 비디오 프레임을 빠르게 쓸 수 있으므로 FFMPEG로 스트리밍 할 수 있습니까? 온라인에서 사용할 수있는 많은 변환 공식이 있으므로 RGB 픽셀을 YUV 픽셀로 변환하는 것은 문제가되지 않습니다. 그러나 YUV 프레임을 쓰는 것이 나를위한 주요 문제입니다. 지난 며칠 동안 YUV 비디오 프레임을 쓰려고 시도했지만 성공하지 못했습니다.
이것은 YUV 프레임을 작성하는 데 관한 또 다른 질문 중 하나입니다. Issue with writing YUV image frame in C/C++ YUV 프레임을 파일에 쓰는 현재의 접근 방식에 어떤 문제가 있는지 알 수 없습니다.
지금은 기존 라이브러리 (있는 경우)를 사용하고 RGB 데이터를 받아 YUV로 변환하고 YUV 프레임을 파일이나 파이프에 직접 쓸 수 있습니다. 물론 기존의 프로그램을 수정하여 YUV 프레임을 작성할 수 있다면 더 좋을 것입니다. 그러나 모든 소프트웨어 개발 프로젝트에 마감 기한이 있습니다. 따라서 저와 프로젝트 팀 구성원들에게도 시간이 우선입니다.
FFMPEG에서 swscale을 사용해 보셨나요? swscale을 사용하여 픽셀 형식을 변환하고 이미지 크기를 조정하려면 3 줄의 코드 만 필요합니다. – BlueWanderer
왜 YUV 데이터를 FFmpeg로 스트리밍해야합니까? 왜 RGB 데이터를 공급하지 않는가? – TheJuice
YUV 프레임을 작성하는 데 라이브러리가 필요하지 않습니다. 당신은 RGB 데이터를 Y, U, V로 변환 할 수 있다고 말했습니다. 같은 순서로 파일에 그 데이터를 씁니다. 대체 값을 사용하여 U & V를 서브 샘플링 할 수 있습니다. 그런 다음 해당 파일을 보려면 좋은 YUV 플레이어가 필요합니다. 나는 이것을 여러 번했는데, 매우 쉽다. – nac