我正在尝试使用DirectX为MP4创建一个视频播放器,它可以在我的计算机上运行,但我在上网本上尝试了我的应用程序,这个错误代码会弹出try{...}catch(Exception e){...}
。
Error in the application.
-2147220891 (VFW_E_UNSUPPORTED_STREAM)
at Microsoft.DirectX.AudioVideoPlayback.Video.Open(String fileName, Boolean autoRun)
at Microsoft.DirectX.AudioVideoPlayback.Video..ctor(String fileName, Boolean autoRun)
at Video_Player.Player.PeekWind_Load(Object sender, EventArgs e)
这是我的一些代码。
Microsoft.DirectX.AudioVideoPlayback.Video video = new Microsoft.DirectX.AudioVideoPlayback.Video("C:\TestVideo.mp4", true);
video.Owner = ViewPane;
video.Size = new Size(Video.DefaultSize.Width, Video.DefaultSize.Height);
video.Audio.Volume = -2500;
video.Play();
感谢您提供任何帮助。
答案 0 :(得分:1)
VFW_E_UNSUPPORTED_STREAM
是underlying DirectShow layer返回的错误代码,表示无法构建回放管道。这反过来意味着某些流或格式无法被识别,并且通常缺少编解码器/过滤器组件来将数据读入解码和呈现就绪状态。
当你提到MP4时,你可能需要安装第三方过滤器/编解码器,因为Windows在DirectShow API中没有为此提供组件(GDCL filters应该在Windows 7+和旧系统中修复此问题。通常还需要第三方H.264解码器。