我正在为Silverlight开发一个自定义播放器,一个基于MediaElement
,另一个基于SmootStreamingMediaElement
。目前我正在使用最新版本的SDK 5.0,但是一旦我的所有问题都得到解决,我想支持以前的版本。
一切正常(回放),现在我已经对平台和API有了基本的了解,但是我对一个(非)琐碎的功能感到困惑:我想得到当前播放视频的比特率信息,无论是单个比特率还是多比特率文件......都必须适用于这两种情况。
据我所知,我有MediaElement
API的以下属性和方法很有用但不够:DownloadProgress
和BufferProgress
。除了TotalBytesDownloaded
类的SmoothStreamingMediaElement
属性之外,没有方法可以获取规范中的比特率或类似信息。
使用MediaElement和SmootStreamingMediaElement
API可以获得视频文件的平均或即时比特率吗?
如果没有,有任何解决方法可以处理它吗?
我是否可以访问MediaItem
(来自MediaElement
个实例)以获取有关该视频的更多信息?
答案 0 :(得分:0)
内置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());
}