У меня есть приложение, которое может воспроизводить файлы .m3u8. Однако, когда видео закодировано с MPEG 1/2 (mpgv)
, это только пустой экран. При открытии видео, как H.264
, все в порядке. Что не так?Видео декодирование в UWP
Вот код:
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-1
или MPEG-2
, не могут.
Я думаю, мне нужно, чтобы добавить больше обработчиков extensions
или, может быть, я должен вам Microsoft Player Framework
, но они не имеют Dash plugin
для окон 10, так что следующий this примера, я не могу выполнить результат. Или, может быть, FFmpeg?
Спасибо за ваш ответ. Мне не удалось открыть файл MPEG-2, поэтому я буду искать другое решение. – Vlad