Libav를 사용하는 Windows 플랫폼에서 DirectShow만큼 카메라 유형에서 프레임을 캡처 할 수있는 방법이 있습니까? DirectShow 필터를 사용하지 않고 카메라 출력을 캡쳐해야하고 내 응용 프로그램이 많은 카메라 장치 유형과 작동하도록해야합니다.Libav를 사용하여 Windows에서 카메라 장치를 캡처하는 방법은 무엇입니까?
저는 인터넷에서이 libav의 기능을 검색했으며 libav를 통해 특수한 입력 형식 "vfwcap"을 사용하여이를 수행 할 수 있음을 확인했습니다. 그런 뭔가 (코드 정확성에 대해 확실하지 않습니다 - 내가 쓴 자신에 의해) :
AVFormatParameters formatParams = NULL;
AVInputFormat* pInfmt = NULL;
pInFormatCtx* pInFormatCtx = NULL;
av_register_all();
//formatParams.device = NULL; //this was probably deprecated and then removed
formatParams.channel = 0;
formatParams.standard = "ntsc"; //deprecated too but still available
formatParams.width = 640;
formatParams.height = 480;
formatParams.time_base.num = 1000;
formatParams.time_base.den = 30000; //so we want 30000/1000 = 30 frames per second
formatParams.prealloced_context = 0;
pInfmt = av_find_input_format("vfwcap");
if(!pInfmt)
{
fprintf(stderr,"Unknown input format\n");
return -1;
}
// Open video file (formatParams can be NULL for autodetecting probably)
if (av_open_input_file(&pInFormatCtx, 0, pInfmt, 0, formatParams) < 0)
return -1; // Couldn't open device
/* Same as video4linux code*/
그래서 또 다른 질문은 다음과 같습니다 Libav에서 지원하는 얼마나 많은 장치? libav가 너무 적은 장치를 지원하기 때문에 윈도우에서 libav로 카메라 출력을 캡쳐하는 것에 관해서 제가 발견 한 것은 DirectShow를 사용하기위한 조언입니다. 어쩌면 상황이 이미 변경되었고 프로덕션 애플리케이션에서 사용할 수있는 충분한 장치를 지원합니까?
만약 이것이 가능하지 않다면 ... 글쎄, 내 질문에 쓸모가 없어지기를 바란다. 다른 소스 코드로 구성된이 코드는이 테마에 관심이있는 누군가를 도울 것이다. 전체 인터넷.
관심있는 사람들을 위해 비디오 캡처 작업을 위해 "libvidcap"이라는 분리 된 플랫폼 라이브러리가있다. [sourceforge] (http://sourceforge.net/projects/libvidcap/)에서 볼 수 있습니다. –