ファイル クリップを再生する方法
[MFPlay は、[要件] セクションで指定したオペレーティング システムで使用できます。 今後のバージョンでは変更されるか、利用できなくなる場合もあります。 ]
このトピックでは、再生の開始時刻と停止時間を設定して、MFPlay でメディア ファイルのセグメントを再生する方法について説明します。
ファイル クリップを再生するには
- IMFPMediaPlayer::CreateMediaItemFromURL または IMFPMediaPlayer::CreateMediaItemFromObject を呼び出して、ファイルのメディア 項目を作成します。
- 必要に応じて、「再生時間を取得する方法」の説明に従って、ファイル の合計期間を取得します。
- IMFPMediaItem::SetStartStopPosition を呼び出して、開始時刻と停止時刻を設定します。 停止時間は、ファイルの期間を超えてはなりません。
- IMFPMediaPlayer::SetMediaItem を呼び出して再生を開始します。
次の例では、 CreateMediaItemFromURL のブロック バージョンを使用します。 非ブロッキング バージョンを使用する場合は、 CreateMediaItemFromURL の後に表示されるコードを 、MFP_EVENT_TYPE_MEDIAITEM_CREATED イベントのハンドラーに配置する必要があります。 MFPlay のイベントの詳細については、「 プレーヤーからのイベントの受信」を参照してください。
ファイルの期間を取得するために、この例では、「How to Get the Playback Duration」トピックに示されている関数を呼び出GetPlaybackDuration
します。
HRESULT PlayMediaClip(
IMFPMediaPlayer *pPlayer,
PCWSTR pszURL,
LONGLONG hnsStart,
LONGLONG hnsEnd
)
{
IMFPMediaItem *pItem = NULL;
PROPVARIANT varStart, varEnd;
ULONGLONG hnsDuration = 0;
HRESULT hr = pPlayer->CreateMediaItemFromURL(pszURL, TRUE, 0, &pItem);
if (FAILED(hr))
{
goto done;
}
hr = GetPlaybackDuration(pItem, &hnsDuration);
if (FAILED(hr))
{
goto done;
}
if ((ULONGLONG)hnsEnd > hnsDuration)
{
hnsEnd = hnsDuration;
}
hr = InitPropVariantFromInt64(hnsStart, &varStart);
if (FAILED(hr))
{
goto done;
}
hr = InitPropVariantFromInt64(hnsEnd, &varEnd);
if (FAILED(hr))
{
goto done;
}
hr = pItem->SetStartStopPosition(
&MFP_POSITIONTYPE_100NS,
&varStart,
&MFP_POSITIONTYPE_100NS,
&varEnd
);
if (FAILED(hr))
{
goto done;
}
hr = pPlayer->SetMediaItem(pItem);
done:
SafeRelease(&pItem);
return hr;
}
必要条件
MFPlay には Windows 7 が必要です。
関連トピック
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示