2016-04-22 14 views
0

ユーザーが「再生」ボタンをタップすると、私のプログラムはビデオを再生することになっています。しかし、「Play」の最初のタップは何もしません。「MediaElement.CurrentState」が不明な理由で「閉鎖」に変更されています

は、このためのコードは非常に簡単です、それは単に私のMediaElement、VideoPlayerの上で「SetSource」を呼び出して、その後、再生されます。

private async void playVideo_Tapped(object sender, TappedRoutedEventArgs e) 
{ 
    await setUpVideo(); 
    VideoPlayer.Play(); 
} 

は私が「setUpVideo()」何度も、そこにすべてを進めてきました必要なように動作し、ファイルが存在することを確認した後にのみ 'VideoPlayer.SetSource()'を呼び出します。私は私のコードは、私はその上の参照実行中に「FOO」の値をチェックすると

public VideoViewer() 
{ 
    this.InitializeComponent(); 
    VideoPlayer.CurrentStateChanged += VideoPlayer_CurrentStateChanged; 
} 

void VideoPlayer_CurrentStateChanged(object sender, RoutedEventArgs e) 
{ 
    var foo = VideoPlayer.CurrentState; 
} 

:私は、私は問題を実現「VideoPlayer.CurrentState」の状態を監視する方法で投げたまではありませんでしたplayVideo_Tapped()が終了した後、最初のタップ(最初のタップのみ) 'VideoPlayer.CurrentState'が 'Opening'に変わり、 'Closed'に戻ります。その後、すべてのタップは「再生中」から「一時停止中」までの正しい進行に従いますが、最初のタップは常に閉じます。どうしてこれなの??

答えて

1

結局のところ、問題は 'setUpVideo()'にあったようです。 Woops。これに

using (IRandomAccessStream fileStream = await videoFile.OpenAsync(FileAccessMode.Read)) 
{ 
    VideoPlayer.SetSource(fileStream, videoFile.ContentType); 
} 

...::このから

ショートバージョン、この問題は、コードの一部を変更することで固定されている '(setUpVideo')

IRandomAccessStream fileStream = await videoFile.OpenAsync(FileAccessMode.Read); 
VideoPlayer.SetSource(fileStream, videoFile.ContentType); 

長いバージョン、私のコードは、 "mf_media_engine_err_src_not_supported hresult - 0xc00d36c4"というエラーで失敗しました。これは、再生する代わりにMediaElementを閉じることでした。これは、私が 'using'ブロックのコードを残したときに、ファイルの読み込み中に 'IRandomAccessStream'が閉じるために起こっていました。私はコードの最初の実行の後にすべてのことをする理由は100%明確ではありませんが、少なくとも今は確実に動作します。

私はまた、クレジットが期限の到来するところでクレジットを与えなければならない、そして、私はここでこの答えを見つけた:Windows 8 app - MediaElement not playing ".wmv" files