UWP中的视频解码

时间:2016-04-28 18:03:21

标签: c# windows-store-apps win-universal-app m3u8

我有可以播放.m3u8文件的应用程序。 但是,当使用MPEG 1/2 (mpgv)编码的视频时,它仅显示空白屏幕。打开H.264等视频时,一切正常。怎么了?

这是代码:

using Microsoft.Media.AdaptiveStreaming;


//Listing: MainPage.xaml.cs -> class
private MediaExtensionManager extensions;
private PropertySet propertySet;
private IAdaptiveSourceManager adaptiveSourceManager;


//Listing: MainPage.xaml.cs -> class -> constructor
propertySet = new PropertySet();
extensions = new MediaExtensionManager();
adaptiveSourceManager = AdaptiveSourceManager.GetDefault();
propertySet["{A5CE1DE8-1D00-427B-ACEF-FB9A3C93DE2D}"] = adaptiveSourceManager;
extensions.RegisterByteStreamHandler("Microsoft.Media.AdaptiveStreaming.SmoothByteStreamHandler", ".ism", "text/xml", propertySet);
extensions.RegisterByteStreamHandler("Microsoft.Media.AdaptiveStreaming.SmoothByteStreamHandler", ".ism", "application/vnd.ms-sstr+xml", propertySet);
extensions.RegisterByteStreamHandler("Microsoft.Media.AdaptiveStreaming.SmoothByteStreamHandler", ".ism", "application/x-mpegurl", propertySet);
extensions.RegisterByteStreamHandler("Microsoft.Media.AdaptiveStreaming.SmoothByteStreamHandler", ".ism", "video/mp2t", propertySet);
extensions.RegisterSchemeHandler("Microsoft.Media.AdaptiveStreaming.SmoothSchemeHandler", "ms-sstr:", propertySet);



//Listing -> MainPage.xaml.cs -> OnNavigatedTo method
//Getting manifest.m3u8
var link = new Uri("path_to_remote_m3u8_file");
Player.Source = link;
Player.Play();


//Listing: MainPage.xaml
<MediaElement x:Name="Player" />

通常,在.m3u8中我们有.ts个文件列表。但是可以播放使用H.264编码的内容,而MPEG-1MPEG-2编码的内容则不能播放。{/ p>

我想我需要向extensions添加更多处理程序,或者我应该为Microsoft Player Framework添加处理程序,但是对于Windows 10他们没有Dash plugin,所以关注this例子我无法完成结果。或者FFmpeg?

1 个答案:

答案 0 :(得分:2)

Windows 10并不支持本机MPEG2视频编解码器。

尽管如此,Windows 10本身支持:

  • HLS

  • MPEG DASH(实时个人资料)

如果您使用适用于Windows 10的Smooth Streaming Client SDK,它还支持Smooth Streaming。

您使用的链接指向我的博客,该链接与Windows 8.1而非Windows 10.您将在我的github上找到一个通用视频播放器示例,支持DASH,HLS和Smooth Streaming + PlayReady DRM: https://github.com/flecoqui/Windows10/tree/master/Samples/UniversalMediaPlayer

此示例应用程序符合运行Windows 10的PC,平板电脑,手机和XBOX One。

如果您想播放MPEG2内容,也许您可​​以使用VLC。 VLC确实支持MPEG2编解码器。 尝试VLC 3.0每晚构建
http://nightlies.videolan.org/build/win32/
VLC 3.0很快应该是RTM。

如果我回答了你的问题,请告诉我