2011-03-11 3 views
0

USB 장치에서 데이터를 읽는 응용 프로그램 (Qt C++)은 uchar 배열에 저장된 24 비트 RGB 픽셀로 데이터를 디코딩합니다.버퍼에서 h.264 또는 VP8로 픽셀을 인코딩하는 방법

프레임 레이트는 ~ 10FPS입니다. 프레임 크기는 128x4096입니다.

질문 :이 프레임을 실시간으로 VP8 또는 h.264 비디오로 인코딩하는 방법은 무엇입니까?

외부 프로세스가 허용되지 않아 모든 것이 내 응용 프로그램 내에서 실행되어야합니다.

ffmpeg는 옵션이지만 그것을 내 프로젝트에 포함하고 사용하는 방법은 무엇입니까? 문서는 말하기에 다소 나쁘다. 또한 x264는 옵션이지만 ffmpeg와 같은 질문 일 수 있습니다. 또한 단위당 1 달러이고 최소값은 10000입니다.

간단한 안내서가 도움이되지만 의심스러운 부분이있을 것입니다.

응용 프로그램은 Windows 및 Linux에서 실행되어야합니다.

답변

0

VP8 SDK는 VP8 SDK와 문서, 심지어 some sample code

+0

설명서가 다소 간단합니다. 예제 인코더는 입력 및 출력 파일 모두에 대해 파일을 사용합니다. 그 입력 파일을 내부 버퍼로 변경하려고하지만 C 지식이 부족하기 때문에 다소 복잡합니다. –

0

문제가있는 것은 예는 IVF로 인코딩이다. 이 코덱은 보안 결함 (버퍼 오버플로)으로 인해 Microsoft에서 종료 된 것으로 보입니다. 심지어 결과를 확인할 수 없을 때 VP8 프로젝트 설정을 얻는 것은 꽤 어렵습니다. 적어도 BSD 라이센스 체계와 아마도 특허권이 걸려있는 것으로 추정됩니다. VP8 SDK에는 형식 변환을위한 루틴이 있지만 소스 트리에 포함되어 있습니다.

언급되지 않은 옵션은 Intel Media SDK이지만 Windows에서 잠글 수 있습니다.

Theora와 Dirac도 있습니다.

X264에는 인코더가 있지만 상용 라이센스를 얻는 데 비용이 많이 듭니다. GPLv2 소스 코드가 "무료"가 아닙니다. 나는 그들이 당신을 믿게하려고 무엇을하려고하든 상관하지 않습니다. "Revel - Really Easy Video Encoding Library"라는 프로젝트도 있습니다. 이것이 MPEG-4 파트 2 파일을 인코딩하는 길입니다. H264는 MPEG-4 part 10입니다. H264는 AVC라고도합니다. Revel 또한 GPL입니다.

Ffmpeg는 다양한 인코더/디코더 주위에 래퍼를 만들려고 시도하는 모든 유틸리티입니다. x264 인코더를 함께 사용하면 GPLv2가됩니다.