![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Захват видео с помощью DSPack [D6, Win2k, WinXP]
Kair+ © (2005-09-14 14:43:00)Есть несколько вопросов по DSPack:
1.
Есть пример захвата видео и вместе с ним идущего звука в папке Demos\D5-7\VideoCap
Вобщем всё захватывается и сохраняется (с TV-тюнера), но почему-то звук отстаёт от изображения секунды на 2-3... В чем может быть причина?
Система при захвате и записи сильно не грузится (~40%)...
2.
Как можно сменить видеоразрешение захвата (например, на 640х480)?
3.
Как можно менять способ... эээ... не знаю ка называется. Вобщем как устанавливать PAL, SECAM, NTSC...
Дмитрий Белькевич (2005-10-08 04:43:00) [1]Выход видео (имеется в виду соответствующий пин) можно 'воткнуть' во вход кодека. Афаик в примерах там где-то было.
Kair+ (2005-10-05 08:11:00) [2]Так, вобщем по первому, там почему-то чатота кадров не 25, а 29 в секунду. Поэтому звук отстает от изображения...
И тут, еще вопрос появился, в том же примере из Demos\D6-D7\VideoCap.
Там при записи такой большой видеофайл получается... Как можно сделать так, чтобы файл записывался меньших размеров - видеокодеком каким-либо сжатый, т.е. параллельно с записью еще и сжимался?
Kair+ (2005-09-17 09:30:00) [3]Спасибо.
WondeRu (2005-09-14 16:46:00) [4]1. Не знаю
2.
pVideoStreamConfig : IAMStreamConfig;
procedure TVideoCapture.SetStreamConfig;
Var
hr : HRESULT;
pmt : PAMMediaType;
begin
hr := (FFilterGraph as ICaptureGraphBuilder2).FindInterface(@PIN_CATEGORY_CAPTURE, @MEDIATYPE_Video, FFilter as IBaseFilter, IID_IAMStreamConfig, pVideoStreamConfig);
if (hr <> NOERROR) Then raise Exception.Create('Unable create instance of IAMStreamConfig');
hr := pVideoStreamConfig.GetFormat(pmt); // current capture format
if (hr <> NOERROR) Then
Begin
pVideoStreamConfig := Nil;
raise Exception.Create('Unable get stream video format');
End;
VIDEOINFOHEADER(pmt.pbFormat^).bmiHeader.biWidth := ImageWidth;
VIDEOINFOHEADER(pmt.pbFormat^).bmiHeader.biHeight := ImageHeight;
hr := pVideoStreamConfig.SetFormat(pmt^);
if (hr <> NOERROR) then raise Exception.Create('Unable set stream video format');
end;
3.
procedure TVideoCapture.SetTVFormat;
Var
hr : HRESULT;
pAMAnalogVideoDecoder : IAMAnalogVideoDecoder;
begin
hr := (FFilter as Ibasefilter).QueryInterface(IID_IAMAnalogVideoDecoder, pAMAnalogVideoDecoder);
if (hr <> NOERROR) then raise Exception.Create('Unable create instance of IAMAnalogVideoDecoder');
hr := pAMAnalogVideoDecoder.put_TVFormat(AnalogVideo_SECAM_D);
pAMAnalogVideoDecoder := Nil;
if(hr <> NOERROR) then raise Exception.Create('Unable set TV-standard');
end;