我想写一个类似下面的方法。但是,如果Silverlight本身无法播放流,我希望它通过一个MediaStreamSource类列表,并依次尝试每个类,直到其中任何一个工作,或者它没有更多的尝试。我的问题是,我如何判断下面的方法是否足以满足特定的流。
public static void OpenMedia(this MediaElement ME, Stream FileData)
{
ME.SetSource(FileData);
}
如果无法播放媒体,我需要执行一些代码。
答案 0 :(得分:1)
我不确定您是否正在寻找测试失败或测试播放媒体类型的能力...
您可以在XAML中添加MediaFailed的事件处理程序,也可以为后两种情况添加代码。主动检查可玩性将需要一些创造性,例如具有非常小(<1秒)和静音的各种类型的“样本”媒体文件,其用于测试可玩性并且对用户是透明的。 / p>
对于连接事件的C#代码,并添加新事件:
void yourPage_Loaded(object sender, RoutedEventArgs e)
{
ME.MediaFailed += new EventHandler<ExceptionRoutedEventArgs>(ME_MediaFailed);
}
void ME_MediaFailed(object sender, ExceptionRoutedEventArgs e)
{
add your code to handle the exception here.
}