[BlueLeaf1336]> PROBLEMS> MediaSkipper>

TRealAudio コンポーネントってどんな?その2

historyTOP

2008/02/04:作成

このページは上に行くほど新しくなります。

おしまいTOP

まだ試してないのはいっぱいあるんですが、関数名やプロパティ名から想像するになくてもよさそうなのでここまでにします。ただ、TWindowsMediaPlayerコンポーネントのように、フォームのサイズに合わせて再生画面のサイズをいい感じにする方法が思いつきません。

今は、コンポーネント自体のサイズと、前回調べたコンポーネントの再生画面領域・コントロール部分領域の比率と、再生中のメディアのオリジナルサイズから、くちゃくちゃやってそれっぽく表示するようにしていますが、ちらつきがすごすぎる。話になりません。

でも、少しだけ扉が開いたように思います。

2008/02/06(水)TOP

実行ファイルとソースコード 20080206_RealAudioTest_src.zip(241,504bytes)

試したもの。 は使えそうなもの。

function GetBackgroundColor: WideString;     //  背景色を取得。#RRGGBB 形式
procedure SetBackgroundColor(const pVal: WideString);   //  背景色を変更
function GetCenter: WordBool;     //  オリジナルサイズで再生してる?
procedure SetCenter(bVal: WordBool);     //  オリジナルサイズが画面サイズか切り替え

ここにきて、SetCenter を発掘しました。これまでにためして何にも変化がなかったものも、ひょっとしたら SetCenter(True) の状態で実行すれば何かが起きるかも知れませんが、もう邪魔くさくて。

試したもの。 は使えそうなもの。

function CanPause: WordBool;     //  再生中かどうか、か?
function CanPlayPause: WordBool;     //  CanPause と同じか?
procedure SetPosition(lPosition: Integer);     //  スキップしたりできる
procedure DoPause;     //  一時停止
procedure DoPlayPause;     //  DoPlayPause と同じか?
function CanPlay: WordBool;     //  一時停止中かどうか、か?
//  OnTitleChange,OnAuthorChange,OnCopyrightChange,OnPresentationOpened,... の順で走る 
property OnTitleChange: TRealAudioOnTitleChange;
property OnAuthorChange: TRealAudioOnAuthorChange;
property OnCopyrightChange: TRealAudioOnCopyrightChange;

2008/02/05(火)TOP

試したけど動作が不安定なもの。タスクマネージャ必須。

function GetFullScreen: WordBool;   //  試してないけど、多分フルスクリーンモードかどうか
procedure SetFullScreen;   //  なんかの拍子に画面真っ暗。強制終了しないといけなくなる

試したけどよくわからないもの。名前どおりなら役に立ちそうなのもあるのに。

function GetMaintainAspect: WordBool;
procedure SetMaintainAspect(bVal: WordBool);
function GetEnableOriginalSize: WordBool;
procedure SetEnableOriginalSize(bVal: WordBool);
function GetEnableDoubleSize: WordBool;
procedure SetEnableDoubleSize(bVal: WordBool);
function GetEnableFullScreen: WordBool;
procedure SetEnableFullScreen(bVal: WordBool);
function GetOriginalSize: WordBool;   //  試してないけど
procedure SetOriginalSize;
function GetDoubleSize: WordBool;   //  試してないけど
procedure SetDoubleSize;
function GetNoLogo: WordBool;
procedure SetNoLogo(bVal: WordBool);
function GetImageStatus: WordBool;
procedure SetImageStatus(bEnable: WordBool);
procedure SetShowVideo(bVal: WordBool);
procedure SetVideoOverlay(bVal: WordBool);

試したもの。 は使えそうなもの。

function GetMute: WordBool;   //  ミュートかどうか
procedure SetMute(bMute: WordBool);   //  ミュート切り替え
procedure AboutBox;   //  そのまんま
function GetShowAbout: WordBool;
procedure SetShowAbout(bVal: WordBool);   //  =AboutBox
procedure EditPreferences;   //  RealPlayerが起動して初期設定画面が開く
function GetShowPreferences: WordBool;
procedure SetShowPreferences(bVal: WordBool);   //  =EditPreferences
function GetShowStatistics: WordBool;
procedure SetShowStatistics(bVal: WordBool);   //  「再生データの統計」表示
procedure HideShowStatistics;   //  試してないけど、たぶん統計を隠す
function IsStatisticsVisible: WordBool;   //  試してないけど、たぶん統計の表示状態
function GetEnableContextMenu: WordBool;
procedure SetEnableContextMenu(bVal: WordBool);   //  コンテキストメニュー有効/無効切り替え?(見直す?)
function GetPlayState: Integer;   //  再生状態だろうけど、対応する文字列が不明
property OnShowStatus: TRealAudioOnShowStatus;   //  その文字列を受け取れるけど空文字のときがある
property Console: WideString;
property Controls: WideString;
function GetAuthor: WideString;
function GetCopyright: WideString;
function GetPreferedLanguageString: WideString;
function GetLastErrorUserString: WideString;
function GetRegion: WideString;
property WindowName: WideString;
function GetLastMessage: WideString;

多分プレイリスト関係だから、試さないことにしたもの。本家 RealPlayer のプレイリストは、まったく持って使いにくい。どういう方針でリストアップしてるのか、ソート基準(自体ないのかも)が悪すぎる。ファイル名で十分なのに。

function HasNextItem: WordBool;
function HasPrevItem: WordBool;
procedure DoNextItem;
procedure DoPrevItem;
function HasNextEntry: WordBool;
function HasPrevEntry: WordBool;
procedure DoNextEntry;
procedure DoPrevEntry;
function GetNumEntries: Smallint;
function GetCurrentEntry: Smallint;
function GetEntryTitle(uEntryIndex: Smallint): WideString;
function GetEntryAuthor(uEntryIndex: Smallint): WideString;
function GetEntryCopyright(uEntryIndex: Smallint): WideString;
function GetEntryAbstract(uEntryIndex: Smallint): WideString;
function GetShuffle: WordBool;
procedure SetShuffle(bVal: WordBool);

多分ストリーム再生(?)関係だから、試さないことにしたもの。ストリーム再生(?)が何か知らないけれど、ネット上のファイルをダウンロードしながら見るやつ?

function GetPacketsTotal: Integer;
function GetPacketsReceived: Integer;
function GetPacketsOutOfOrder: Integer;
function GetPacketsMissing: Integer;
function GetPacketsEarly: Integer;
function GetPacketsLate: Integer;
function GetBandwidthAverage: Integer;
function GetBandwidthCurrent: Integer;
function GetConnectionBandwidth: Integer;
function GetPreferedLanguageID: Integer;
function GetUserCountryID: Integer;
function GetNumSources: Smallint;
function GetSourceTransport(nSourceNum: Smallint): WideString;
function GetLastErrorMoreInfoURL: WideString;
property OnContacting: TRealAudioOnContacting;

名称そのままの機能だとすると、使いそうにないから試さないことにしたもの。

procedure SetTitle(const pVal: WideString);
procedure SetAuthor(const pVal: WideString);
procedure SetCopyright(const pVal: WideString);
procedure AddLicense(const pVal: WideString);
procedure EnsureTranscryptionLicense(const pVal: WideString);
function GetDRMInfo(const pVal: WideString): WideString;
procedure SetRegion(const pVal: WideString);

2008/02/04(月)TOP

実行ファイルとソースコード 20080205_RealAudioTest_src.zip(209,895bytes)

試したもの。 は使えそうなもの。

function GetVersionInfo: WideString;  //  RealPlayer本体のバージョン
property Source: WideString;  //  再生するメディアのパス
procedure DoPlay;  //  再生
function GetPosition: Integer;  //  現在位置(ミリ秒)
function GetLength: Integer;  //  メディアの長さ(ミリ秒)
function GetTitle: WideString;  //  メディアのタイトル
function GetClipWidth: Integer;  //  オリジナルサイズ(横幅)
function GetClipHeight: Integer;  //  オリジナルサイズ(高さ)
property OnPresentationOpened: TNotifyEvent;  //  1
property OnClipOpened: TRealAudioOnClipOpened;  //  2
property OnBuffering: TRealAudioOnBuffering;  //  3
property OnClipClosed: TNotifyEvent;  //  4
property OnPresentationClosed: TNotifyEvent;  //  5

こんな感じ。一見それっぽいけれど、起動後一発目のファイルは、タイトルバーに表示している ClipWidth x ClipHeight が 0 x 0 になってしまいます。

どのタイミングで、Title や サイズを取得するかにもよるのかもしれないんですが、今は OnClipOpened でやっています。OnPresentationOpened は OnClipOpened より早いし、OnBuffering は OnClipOpened よりも後に発生するイベントで、サイズの大きなファイルを読み込んでいるときにプログレスバーを出すためかどうか読み込んだサイズをパーセント表示できるんですが、100% 読み込んだ状態で ClipWidth x ClipHeight を取得しようとしてもやっぱり結果は同じでした。

根本的に、これが取得できないとオリジナルサイズの縦横比を維持しようにもできないわけで。おとなしくひとつ目のファイルはあきらめるか?

残っているプロパティやイベントにもめぼしそうなのないしなぁ....いかにもそれっぽいやつちょっと試してみたけどだめみたいだし。

今日はここまで。

TRealAudio の宣言あるいはまだ試してないリストTOP

RealAudioObjects_TLB.pas から、TRealAudio の宣言を抜いてみます。と思いましたが230行もあるので、普通のコンポーネントにも普通にある TabStop とか On...Down とか その辺は除きます。また、public のみとします。

で、試したものは消していくことにします。

function GetVolume: Smallint;
procedure SetVolume(nVol: Smallint);
function GetLoop: WordBool;
procedure SetLoop(bVal: WordBool);
procedure DoStop;
function CanStop: WordBool;
procedure DoGotoURL(const url: WideString; const target: WideString);
function GetNumLoop: Integer;
procedure SetNumLoop(lVal: Integer);
function GetStereoState: WordBool;
function GetLiveState: WordBool;
function GetEnableMessageBox: WordBool;
procedure SetEnableMessageBox(bVal: WordBool);
function GetWantKeyboardEvents: WordBool;
procedure SetWantKeyboardEvents(bWantsEvents: WordBool);
function GetWantMouseEvents: WordBool;
procedure SetWantMouseEvents(bWantsEvents: WordBool);
procedure SetCanSeek(bCanSeek: WordBool);
function GetCanSeek: WordBool;
function GetBufferingTimeElapsed: Integer;
function GetBufferingTimeRemaining: Integer;
function GetWantErrors: WordBool;
procedure SetWantErrors(bVal: WordBool);
function GetLastErrorSeverity: Integer;
function GetLastErrorRMACode: Integer;
function GetLastErrorUserCode: Integer;
procedure SetPreFetch(bVal: WordBool);
function GetPreFetch: WordBool;
function GetIsPlus: WordBool;
function GetConsoleEvents: WordBool;
procedure SetConsoleEvents(bVal: WordBool);
property  ControlInterface: IRealAudio read GetControlInterface;
property  DefaultInterface: IRealAudio read GetControlInterface;
property NoLabels: WordBool;
property AutoStart: WordBool;
property AutoGotoURL: WordBool;
property OnGotoURL: TRealAudioOnGotoURL;;
property OnPositionChange: TRealAudioOnPositionChange;
property OnVolumeChange: TRealAudioOnVolumeChange;
property OnMuteChange: TRealAudioOnMuteChange;
property OnPlayStateChange: TRealAudioOnPlayStateChange;
property OnErrorMessage: TRealAudioOnErrorMessage;
property OnStatsInfoChange: TRealAudioOnStatsInfoChange;
property OnPreSeek: TRealAudioOnPreSeek;
property OnPostSeek: TRealAudioOnPostSeek;
property OnPreFetchComplete: TNotifyEvent;
property OnStateChange: TRealAudioOnStateChange;

多いな...

EOFTOP