2017-12-13 8 views
0

私はBlob on AzureにMP4ビデオストアを持ち、GZIP形式で圧縮しました。GZIPpedビデオをMediaPlayerElement(UWP)に直接再生するときにエラーが発生する

ビデオが圧縮されていない場合は、私が直接UWPアプリでこのコードを使用してそれを読むことができます。ビデオが圧縮されている場合

<MediaPlayerElement x:Name="_mediaPlayerElement" /> 

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

は今、私は次のことを持っていますエラー "エラー:サポートされていないビデオタイプまたは無効なファイルパス"です。

次に、HttpClientを使用してストリームを解凍し、ストリームをmediaPlayerElementに渡してみます。私はMediaPlayerElementWithHttpClienthere)または私のカスタムクラスのこの実装をテストしました。しかし、どちらもうまくいきません。 (元のビデオは動作しますが、GZIPは動作しません)。

私はもちろん、HttpClientAutomationDecompressionを有効にしました。

var handler = new HttpClientHandler 
{  
    AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate 
}; 

HttpClient client = new HttpClient(handler); 

UWPでGZIPビデオをストリーミングすることはできますか?

HTMLビデオコードジェネレータhttp://v4e.thewikies.com/を使用して、ブラウザから直接GZIPビデオを再生できます(Firefox、Chromeは動作していません)。私はそれがうまくいくと思いますが、UWPでどうですか?

(直接関連しているが、私は私のUWPアプリでGZIPで圧縮された画像を表示する場合、それが働いているわけではありません。)

感謝。

答えて

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(); 
+0

この方法は簡単ですが、私がやろうとしていることではありません。私はファイル全体をキャッシュにダウンロードしたくはありません(ファイルが1GBを超える場合)。私は、MediaPlayerElementにコンテンツを「ストリーミング」したいと思います。このビデオがGZIP圧縮されていない場合、私は(Azureからの)ビデオをMediaPlayerElementにストリーミングできます。 – pellea

関連する問題