Битрейт Silverlight MediaElement

Я разрабатываю пользовательский плеер для Silverlight, один из которых основан на MediaElement и других с SmootStreamingMediaElement. На данный момент я использую последнюю версию SDK 5.0, но я бы хотел поддержать предыдущие версии, как только все мои проблемы будут решены.

Все работает отлично (воспроизведение), и теперь у меня есть базовое понимание платформы и API, но у меня есть (нет) тривиальная функция: я хочу получить информацию о битрейте для текущего воспроизводимого видео, независимо от того, если его один битрейт или многострочный файл... должен работать в обоих случаях.

Насколько я знаю, у меня есть следующие свойства и методы для MediaElement API, которые полезны, но недостаточно: DownloadProgress и BufferProgress. Нет метод для получения информации о битрейте или аналогичный найденную в спецификации, за исключением TotalBytesDownloaded собственности для SmoothStreamingMediaElement класса.

Использование API MediaElement и SmootStreamingMediaElement позволяет получить средний или мгновенный битрейт видеофайла?

Если нет, есть ли способ обхода решения?

У меня есть доступ к MediaItem (из экземпляра MediaElement), чтобы получить дополнительную информацию о видео?

1 ответ

У встроенного класса MediaElement таких функций нет. Но вы можете определить текущий битрейт, используя более продвинутый класс SmoothStreamingMediaElement.

Вот статья msdn, в которой объясняется, как использовать этот класс: Select and Monitor Bitrate

Полный код, который отслеживает текущий битрейт:

public MainPage()
{
 InitializeComponent();
 media.PlaybackTrackChanged += OnPlaybackTrackChanged;
}

void OnPlaybackTrackChanged(object sender, TrackChangedEventArgs e)
{
 Debug.WriteLine("Current bitrate: " + e.NewTrack.Bitrate.ToString());
}

licensed under cc by-sa 3.0 with attribution.