将GZIPped视频直接播放到MediaPlayerElement(UWP)时出错

时间:2017-12-13 16:57:52

标签: uwp gzip dotnet-httpclient

我在Azure上的Blob中有一个MP4视频存储,并使用GZIP格式进行压缩。

如果视频未压缩,我可以使用UWP应用程序中的以下代码直接阅读:

<MediaPlayerElement x:Name="_mediaPlayerElement" />

this._mediaPlayerElement.Source = MediaSource.CreateFromUri(uri);
this._mediaPlayerElement.MediaPlayer.Play();

现在,如果视频被压缩,我会出现以下错误“错误:视频类型不受支持或文件路径无效”。

然后我尝试使用HttpClient解压缩它并将流传递给mediaPlayerElement。我已经测试了MediaPlayerElementWithHttpClienthere)或我的自定义类的这种实现。但它也没有用。 (原始视频有效,但不是GZIP)。

我当然激活了AutomationDecompression的{​​{1}}。

HttpClient

是否可以在UWP中流式传输GZIP视频?

使用这个网站http://v4e.thewikies.com/,一个HTML视频代码生成器,我可以直接从浏览器播放GZIP视频(Firefox,Chrome无法正常工作)。我认为这是可行的,但在UWP中如何?

(不直接相关,但如果我在我的UWP应用程序中显示使用GZIP压缩的图像,则它正在工作。)

感谢。

1 个答案:

答案 0 :(得分:0)

您可以将.mp4.gz文件下载到本地文件夹,通过测试我可以正确下载到.mp4文件。然后从文件中加载MediaSource。例如:

using Windows.Web.Http;

HttpClient httpclient = new HttpClient();
IBuffer buffers = await httpclient.GetBufferAsync(uri); 
StorageFolder localfolder = ApplicationData.Current.LocalFolder;
StorageFile tempfile = await ApplicationData.Current.LocalFolder.CreateFileAsync("temp.mp4", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteBufferAsync(tempfile, buffers);
this._mediaPlayerElement.Source = MediaSource.CreateFromUri(new Uri("ms-appdata:///local/temp.mp4"));
this._mediaPlayerElement.MediaPlayer.Play();