2013-10-05 30 views
2

我在Win8應用程序中遇到MediaElement問題 - 當我嘗試從本地庫播放某些「.wmv」文件時,它經常(並非總是)拋出MediaFailed和我得到的錯誤Windows 8應用程序 - MediaElement未播放「.wmv」文件

MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED:HRESULT - 0xC00D36C4

這意味着

無論是視頻編解碼器或音頻鱈魚ec不受支持,或者視頻文件中的流損壞。此內容可能不支持 。

問題是不是文件已損壞(我可以使用Windows Media Player播放它們)。下面是我使用的代碼設置MediaElement

private async void Button_Click(object sender, RoutedEventArgs e) 
{ 
    var picker = new FileOpenPicker(); 
    picker.FileTypeFilter.Add(".wmv"); 
    picker.FileTypeFilter.Add(".mp4"); 
    picker.SuggestedStartLocation = PickerLocationId.VideosLibrary; 
    StorageFile file = await picker.PickSingleFileAsync(); 
    if (file != null) 
    { 
     using (IRandomAccessStream ras = await file.OpenAsync(FileAccessMode.Read)) 
     { 
      me.SetSource(ras, file.ContentType); 
     } 
    } 
} 

有誰知道什麼是錯在這裏嗎?提前致謝。

+0

哪些編解碼器做這些.wmv文件使用? (音頻和視頻) –

+0

我不知道,都是從http://channel9.msdn.com/下載的,我以爲'MediaElement'和Windows Media Player使用了相同的引擎。 –

回答

5

問題可能是您在播放流之前關閉了流。因此,該代碼:

if (file != null) 
{ 
    using (IRandomAccessStream ras = await file.OpenAsync(FileAccessMode.Read)) 
    { 
     me.SetSource(ras, file.ContentType); 
    } 
    // The stream is now closed! How can it be played!? 
} 

應改爲沒有using塊:

if (file != null) 
{ 
    IRandomAccessStream ras = await file.OpenAsync(FileAccessMode.Read); 
    me.SetSource(ras, file.ContentType); 
} 

我也嘗試了上述一些頻道9個視頻代碼的第二塊(包括中等和高品質的WMV文件)和我的應用程序成功播放它們。

+0

非常感謝您的回答。我在這一張上搜索了很長時間。謝謝!! –

相關問題