お世話になります。
現在DelphiXを利用してasfファイルの再生に取り組んでいるのですが
再生レートの変更がうまくいきません。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs,ActiveX,DirectShow, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
hr: HResult;
pGraph: IGraphBuilder;
pMediaControl: IMediaControl;
pMediaPosition: IMediaPosition;
begin
CoInitialize(nil);
hr := CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC,
IID_IGraphBuilder, pGraph);
hr := pGraph.QueryInterface(IID_IMediaControl, pMediaControl);
hr := pGraph.QueryInterface(IID_IMediaPosition, pMediaPosition);
hr := pMediaControl.RenderFile('C:\TestModule\AsfTest\Proxy.asf');
hr := pMediaPosition.put_Rate(2.0);
pMediaControl.Run;
MessageBox(Application.Handle, 'test', 'test', MB_Ok);
pMediaControl._Release;
pGraph._Release();
CoUninitialize();
end;
end.
webの資料を参考に上記テストプログラムを作成したのですが
再生レートを設定する
hr := pMediaPosition.put_Rate(2.0);
の部分で引数に倍速として2.0を設定するのですが戻り値が
80070057となります。
調べたところ「引数不正」らしいのですが何か指定方法に
問題があるのでしょうか。
*上記の設定で等速として1.0を指定すると、正常の戻り値が得られます。
*テストに使用しているasfファイルをWMPで再生したところ
倍速再生は可能でしたので、ファイル側に問題は無いと思います。
ご指摘、ご指南のほどお願いします。
以上
ツイート | ![]() |