2011-10-04 2 views
1

C++로 압축되지 않은 avi 비디오 파일을 작성하기위한 간단하고 작은 라이브러리 나 코드 샘플이 있습니까?
내가 찾은 모든 리소스는 Windows 용 비디오를 사용하며 이식성이 있어야합니다.압축되지 않은 AVI 비디오 작성하기

AVI 컨테이너 설명서를 살펴 보았지만 매우 번거로 웠습니다.

답변

0

직접 해본 적은 없지만 ffmpeg (LGPLv2.1/GPLv2 +)의 일부인 libavformat을 사용하는 것이 좋습니다.

ffmpeg -i picture_%04d.bmp -r 15 -vcodec rawvideo -y output.avi 

참고 : 다음 -r 인수가 프레임을 나타냅니다 당신은 아주 쉽게 무언가를 원하는 경우에

0

, 다음 system() 또는 같은 비슷한을 통해 ffmpeg를 호출 한 후, 번호가 매겨진 순서로 디스크에 BMPs에 쓰기 당신이 최종 영화가되기를 원하는 속도.

ffmpeg가 기반으로하는 libavformat/libavcodec 라이브러리를 호출하여 동일한 결과를 얻을 수 있지만 "작은"및 "간단한"요구 사항에 맞지 않을 수 있습니다.

+0

성능 측면에서 볼 때 파일을 읽거나 쓰지 않아 막대한 손실이 발생합니다. 일반적인 응용 프로그램에서는 파일 I/O가 알고리즘 처리 비용보다 큽니다. –

0

항상 멀티 플랫폼이며 데이터를 푸시하기가 비교적 쉬운 OpenCV입니다.

또는 항상 비디오 데이터를 다른 실행 파일로 파이프 할 수 있습니다. 프로그램에서

을 :

char myimage[640*480*4]; 
// read data into myimage 
fputs(myimage,1,640*480*4,stdout); 

을 그리고 스크립트에서 프로그램 실행합니다 :

예를 들어, 유닉스에서 당신이 할 수있는

./myprogram | \ 
mencoder /dev/stdin -demuxer rawvideo -rawvideo w=640:h=480:fps=30:format=rgba \ 
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=9000000 \ 
-oac copy -o output.avi 

(이 압축 않습니다를 비 압축 비디오는 mencoder 명령 줄을 변경하는 것일뿐입니다.)

I bel ieve 당신은 또한 ffmpeg이 방법, 또는 x264를 사용할 수 있습니다. 또한 프로그램 내에서 엔코더를 시작하고 파이프에 쓰기 (라이브러리를 사용하는 경우 전체 프로세스를 간단하게 만들 수 있음) - Windows, Linux 또는 Mac에서 작동해야합니다 (mencoder 명령을 약간 수정하면됩니다) 선). 당신이 어떤 코드에 연결 또는 아무것도 컴파일하지 않는 한

는 물론, 중 (떨어져 mencoder 실행의 분포)에는 라이센스 문제가 없습니다.

확실히 당신이 원하는,이 장점을 가지고 아니지만 두 번째 프로세서가 자동으로 인코딩에 사용됩니다.

관련 문제