我在Azure上的Blob中有一个MP4视频存储,并使用GZIP格式进行压缩。
如果视频未压缩,我可以使用UWP应用程序中的以下代码直接阅读:
<MediaPlayerElement x:Name="_mediaPlayerElement" />
和
this._mediaPlayerElement.Source = MediaSource.CreateFromUri(uri);
this._mediaPlayerElement.MediaPlayer.Play();
现在,如果视频被压缩,我会出现以下错误“错误:视频类型不受支持或文件路径无效”。
然后我尝试使用HttpClient
解压缩它并将流传递给mediaPlayerElement
。我已经测试了MediaPlayerElementWithHttpClient
(here)或我的自定义类的这种实现。但它也没有用。 (原始视频有效,但不是GZIP)。
我当然激活了AutomationDecompression
的{{1}}。
HttpClient
是否可以在UWP中流式传输GZIP视频?
使用这个网站http://v4e.thewikies.com/,一个HTML视频代码生成器,我可以直接从浏览器播放GZIP视频(Firefox,Chrome无法正常工作)。我认为这是可行的,但在UWP中如何?
(不直接相关,但如果我在我的UWP应用程序中显示使用GZIP压缩的图像,则它正在工作。)
感谢。
答案 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();