2

成長するソースファイル(mpegトランスポートストリーム)からメディアを再生できるカスタムmediastreamsourceを作成しました。メディアストリームの最後に到達すると、メディアファイルから新しい期間を読み取り、サンプルの配信を続行します。MediaElementは継続的に再生されます。

残念ながら、MediaElement.NaturalDurationプロパティを更新する方法が見つかりませんでした。したがって、MEはそれを認識せず、位置変更をそのNaturalDuration値に設定するため、「リロードされた」領域を探すことができません。

新しいストリーム長を取得した後、ReportOpenMediaCompletedを呼び出そうとしました。その後、Naturaldurationが更新されますが、もうプレイできません。

それに対処する他の方法はありますか?

4

1 に答える 1

1

時々、人生はとても簡単になります:-)

MediaStreamSource を初期化するときに MediaElement に「ファンタジー」期間の値を与えることで解決しました。

protected override void OpenMediaAsync()
{
...
mediaSourceAttributes[MediaSourceAttributesKeys.Duration] = TimeSpan.FromHours(10).Ticks.ToString(CultureInfo.InvariantCulture);
this.ReportOpenMediaCompleted(mediaSourceAttributes, mediaStreamDescriptions);
}

あとは、スライダー コントロールを「実際の」期間で更新するだけでした。今では魅力のように機能します...

ティロ

于 2010-08-02T15:28:01.597 に答える