OS WinXP Pro SP1
Delphi 7 Pro
複数のビットレートを選択してエンコードを行えるアプリを作成しようとしています。
WindowsMediaプロファイルエディタでprxファイルを作成し、このprxファイルをインポートして設定したビットレートで変換できることは確認しています。
次に作成中のアプリ内の処理で同様の処理を実現しようと
http://msdn2.microsoft.com/en-us/library/aa388913.aspx
を参考に
var
profilepath : WideString;
pManager: IWMProfileManager;
pProfile: IWMProfile;
msg: String;
begin
略
hr := WMCreateProfileManager(@pManager); //プロファイルマネージャーの生成
profilepath := 'c:\hoge.prx';
hr := pManager.LoadProfileByData(PWideChar(profilepath ),pProfile);
if hr = S_OK then begin
msg := 'OK';
end;
略
として、プロファイルの設定を実行したのですが戻り値が
NS_E_INVALIDPROFILE = HRESULT($C00D0BC6);
{$EXTERNALSYM NS_E_INVALIDPROFILE}
となりました。
マイクロソフトで検索したところ
http://www.microsoft.com/japan/msdn/windowsmedia/development/wmformat_9_sdk_intro.aspx
においては
(既存のプロファイルを変更せずに使用するには、単にメソッドを呼び出してプロファイル データを含んだファイルを指定するだけです)。
と説明されているので上記の方法にしたわけですが
http://msdn2.microsoft.com/en-us/library/aa388913.aspx
によると
This string must match an XML-formatted string created by IWMProfileManager::SaveProfile.
By convention, when such strings are saved to disk they are given the ".prx" extension.
とあり、prxファイルの内容の文字列を設定するのかとも思い、メモ帳でprxファイルを開いたところ単なる文字列でしたので
prxファイルの内容をtxtにコピーして、TStringList変数のLoadFromFileで取得し、上記のprofilepathに
代入して実行してみましたが、結果は同じでした。
うまく動作するようになればhoge.prxを複数用意して、ユーザーに選択させた上で任意のビットレートで変換できると目論んだのですが、最初からつまづいてしまいました。
ProfileManagerにLoadProfileByIDというGUIDからプロファイルを設定できる
メソッドもあったのですが、GUIDの一覧のような資料も見つかりませんでした。
本事項について参考となる情報、ページなどご存知の方がいましたらご指摘くださるようお願いします。
> profilepath := 'c:\hoge.prx';
想像ですが、ファイル名ではなく、プロファイルを読み込んだ文字列が必要なのでは?
var
s : WideString;
fStream := TFileStream.Create('c:\profile.prx', fmOpenRead);
try
SetLength(s, fStream.Size);
fStream.Read(s, fStream.Size);
finally
fStream.Free;
end;
hr := pWMProfileManager.LoadProfileByData(PWideChar(s), pProfile);
ツイート | ![]() |