![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
AVI DirectDraw, DirectShow ... Как?
Wm.DIGGER © (2005-06-14 17:50:00)Проблемка, как воспроизвести звук из AVI'шки ... Видео воспроизводится, как показано ниже. Как воспроизводить звук? Т.Е. нужно взять поток со звуком, а дальше что с ним делать ... ?
var IStep,AVIError,GetFrameNumber,i,j:Integer;
AVIFile:PAVIFile;
AVIInfo:PAVIFileInfo;
AVIStream:PAVIStream;
GetF:PGetFrame;
BitMapHInfo:PBitMapInfoHeader;
AVIFileName:string;
TBmp:TBitMap;
Bits:PChar;
DC_Handle:HDC;
begin
AVIFileName := 'fn.avi';
AVIFileInit;
AVIError := AVIFileOpen(AVIFile,PChar(AVIFileName),0,nil);
if AVIError = AVIERR_OK then
begin
AVIFileInfo(AVIFile,AVIInfo,SizeOf(AVIInfo));
if AVIFileGetStream(AVIFile,AVIStream,StreamTypeVIDEO,0) = AVIERR_OK then
begin
GetF := AVIStreamGetFrameOpen(AVIStream,nil);
if GetF <> nil then
begin
for GetFrameNumber := 0 to 99 do
begin
BitMapHInfo := AVIStreamGetFrame(GetF,GetFrameNumber);
if BitMapHInfo <> nil then
begin
TBmp := TBitMap.Create;
TBmp.Width := BitMapHInfo.biWidth;
TBmp.Height := BitMapHInfo.biHeight;
Bits := Pointer(Integer(BitMapHInfo) + SizeOf(TBitMapInfoHeader));
DC_Handle := CreateDC('Display',nil,nil,nil);
TBmp.Handle := CreateDIBitmap(DC_Handle,BitMapHInfo^,CBM_INIT,Bits,PBitMapInfo(BitMapHInfo)^,DIB_RGB_COLORS);
DeleteDC(DC_Handle);
TBmp.Free;
end;
end;
AVIStreamGetFrameClose(GetF);
end;
AVIStreamRelease(AVIStream);
end;
AVIFileRelease(AVIFile);
end else ShowMessage('Error:)');
AVIFileExit;
end;
Fredy314 (2005-06-27 22:07:00) [1]По идее нужно направить аудиопоток на звуковуху только как я не знаю, гдето видел но давно-давно.
Ozone (2005-06-22 06:45:00) [2]Как вариант скопировать весь аудио-поток в PAVIStream, сохранить во временный WAV и проиграть... опять-таки будут проблемы с синзронизацией с видео... :)
Анонимщик1 (2005-06-15 13:15:00) [3]Ты же работаешь через VfW, а не через собственно DirectShow. Так что я не понял чего тебе нужно.
Nic (2005-06-14 18:53:00) [4]Мне тоже очень интересно, как это сделать. Кто-нибудь, подскжите!