Последние записи
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
- wprintf как напечатать кириллицу
- Взаимодействие через командную строку
- Сравнение языков на массивах. Часть 1
- Сравнение языков по скорости
- Чтение огромных xml-файлов
- Как в Python+Selenium webdriver открыть новую вкладку в уже открытом браузере?
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
20th
Апр
Проигрывание MP4 файла, кроме WMP
Posted by obzor under Delphi
Как можно проиграть один видео файл формата MP4 без использования WMP?!
Нужен пример.
как-то вот так надо:
procedure ClearGraph;
begin
if Assigned(pMediaControl) then
pMediaControl.Stop;
fVideoRenderer:= nil;
fVideoDecoder := nil;
fSource := nil;
pMediaControl := nil;
pCaptureGraphBuilder :=nil;
pGraphBuilder := nil;
end;
function buildGraph(fn : string): HRESULT;
const
CLSID_FfdshowVideoDecoder : TGUID = '{04FE9017-F873-410E-871E-AB91661A4EF7}';
CLSID_ffdshowAudioDecoder : TGUID = '{0F40E1E5-4F79-4988-B1A9-CC98794E6B55}';
begin
Result := CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER ,
IID_IGraphBuilder, pGraphBuilder);
Result := CoCreateInstance(CLSID_CaptureGraphBuilder2, NIL,
CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2,
pCaptureGraphBuilder);
pCaptureGraphBuilder.SetFiltergraph(pGraphBuilder);
Result := pGraphBuilder.AddSourceFilter(StringToOleStr(Fn),'source',fsource);
if Result <> S_OK then
begin
MessageBox(Application.Handle,'AddSourceFilter error','error', MB_ICONERROR);
ClearGraph;
Exit;
end;
Result := coCreateInstance(CLSID_VideoRendererDefault, nil,
CLSCTX_INPROC_SERVER,
IID_IBaseFilter, fVideoRenderer);
if Result <> S_OK then
begin
MessageBox(Application.Handle,'video renderer load error','error', MB_ICONERROR);
ClearGraph;
Exit;
end;
pGraphBuilder.AddFilter(fVideoRenderer,'Video renderer');
Result := CoCreateInstance(CLSID_FfdshowVideoDecoder,nil,CLSCTX_INPROC_SERVER,
IID_IBaseFilter,fVideoDecoder);
if Result <> S_OK then
begin
MessageBox(Application.Handle,PChar('FFDShow load error'+#13#10+
guidtostring(CLSID_FfdshowVideoDecoder)),'error', MB_ICONERROR);
ClearGraph;
Exit;
end;
pGraphBuilder.AddFilter(fVideoDecoder,'video decoder');
Result := pCaptureGraphBuilder.RenderStream(nil,@MEDIATYPE_VIDEO,
fSource,fVideoDecoder,fVideoRenderer);
if Result <> S_OK then
begin
MessageBox(Application.Handle,'RenderStream error','error', MB_ICONERROR);
ClearGraph;
Exit;
end;
pGraphBuilder.QueryInterface(IID_IVideoWindow,pVideoWindow);
pGraphBuilder.QueryInterface(IID_IMediaControl,pMediaControl);
pVideoWindow.put_Owner(Form3.pnl1.Handle);
pVideoWindow.put_WindowStyle(WS_CHILD or WS_CLIPSIBLINGS);
pVideoWindow.SetWindowPosition(0,0,Form3.pnl1.Width,Form3.pnl1.Height);
pMediaControl.Run;
end;
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)