![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
KOLMediaPlayer
Dy1 © (2008-10-31 21:52:00)вопрос наверно глупый...
Как запустить плеер из чистого КОЛ? При создании с помощью КОЛнМЦК работает, а в КОЛ не получается
program ScrSvrVid;
uses FastMM4, Windows, KOL,
main in 'main.pas',
dlg in 'dlg.pas';
var
s: string;
begin
Run_;
end.
unit main;
interface
uses
Windows, KOL, KOLMediaPlayer;
procedure Run_;
var
f: PControl;
mp: PMediaPlayer;
implementation
procedure onnotif(d: pointer; Sender: PMediaPlayer; NotifyValue: TMPNotifyValue);
begin
if NotifyValue = nvSuccessful then
Sender.Play(1,-1);
end;
procedure Run_;
begin
f := NewForm(nil, '');
// f.HasCaption := False; // не работает, не показывает окно
f.Show;
mp := NewMediaPlayer('t.wmv', f.GetWindowHandle);//кодек стоит
mp.OnNotify := TMPOnNotify(MakeMethod(nil, @onnotif));
Run(f);
mp.Stop;
mp.Free;
end;
end.
finder2007 (2008-11-04 13:23:00) [1]Что-то навроде этого:
uses DShow, ActiveX, ComObj;
var
MyGraphBuilder: IGraphBuilder;
MyMediaControl: IMediaControl;
MyMediaEventEx: IMediaEventEx;
MyMediaSeeking: IMediaSeeking;
MyVideoWindow : IVideoWindow;
MyBasicAudio : IBasicAudio;
*********
При запуске программы:
CoInitialize(nil);
*********
При выходе:
CoUninitialize;
*********
function Play(f:Kol_String):boolean;
var hr:integer;
begin
result:=false;
CoCreateInstance(CLSID_FilterGraph,nil,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,My GraphBuilder);
hr:=MyGraphBuilder.RenderFile(StringToOleStr(f),nil);
if FAILED(hr) then exit;
hr:=MyGraphBuilder.QueryInterface(IID_IMediaControl,MyMediaControl);
if FAILED(hr) then exit;
hr:=MyGraphBuilder.QueryInterface(IID_IMediaEventEx,MyMediaEventEx);
if FAILED(hr) then exit;
hr:=MyGraphBuilder.QueryInterface(IID_IMediaSeeking,MyMediaSeeking);
if FAILED(hr) then exit;
hr:=MyGraphBuilder.QueryInterface(IID_IBasicAudio,MyBasicAudio);
if FAILED(hr) then exit;
hr:=MyGraphBuilder.QueryInterface(IID_IVideoWindow,MyVideoWindow);
if FAILED(hr) then exit;
hr:=MyVideoWindow.put_Owner(Form1.Panel1.Handle);
if FAILED(hr) then exit;
hr:=MyVideoWindow.put_WindowStyle(WS_CHILD OR WS_CLIPSIBLINGS);
if FAILED(hr) then exit;
hr:=MyVideoWindow.SetWindowPosition(0,0,Form1.Panel1.ClientRect.Right,Form1.Pane l1.ClientRect.Bottom);
if FAILED(hr) then exit;
hr:=MyBasicAudio.put_Volume(VolumeTrackBar.Position);
hr:=MyMediaControl.Run;
if FAILED(hr) then exit;
result:=true;
end;
А более подробно сюда - http://directshow.wonderu.com/
Dy1 (2008-11-03 20:55:00) [2]как?
finder2007 (2008-11-03 19:29:00) [3]Была такая же проблема. Заюзал DirectShow - помогло.
Dy1 (2008-11-03 13:28:00) [4]музыка есть, нет видео - AV. Во всех вариантах. Кодеки стоят. КОЛ 2.87 с не помню сколькими плюсами
Дмитрий К (2008-11-02 18:19:00) [5]МедиаПлейеру нужен Applet для обработки нотификаций.
Dy1 (2008-11-02 01:13:00) [6]в моём варианте вылезает ошибка, в другом вообще не запускается
Dy1 (2008-11-02 00:50:00) [7]Дмитрий К, в проекте будет только обработка ключей запуска, а всё остальное - в модуле(-ях). По-другому будет каша
Дмитрий К (2008-10-31 22:49:00) [8]
program Project1;
uses
KOL, KOLMediaPlayer;
var
Form: PControl;
Btn: PControl;
MP: PMediaPlayer;
procedure BtnClick(Dummy, Sender: PObj);
begin
MP.Play(0, MP.Length);
end;
begin
Form := NewForm(nil, '');
Applet := Form;
Form.CreateWindow;
Form.HasCaption := False;
MP := NewMediaPlayer('c:\windows\media\tada.wav', Form.Handle);
Form.Add2AutoFree(MP);
Btn := NewButton(Form, 'Play');
Btn.OnClick := TOnEvent(MakeMethod(nil, @BtnClick));
Run(Applet);
end.