Я пытаюсь создать видеоплеер для MP4 с DirectX, и он работает на моем компьютере, но я попробовал свое приложение на нетбуке, и этот код ошибки появляется в 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();
Спасибо за любую помощь.
VFW_E_UNSUPPORTED_STREAM
- это код ошибки, возвращаемый базовым уровнем DirectShow, что указывает на то, что он не смог построить конвейер воспроизведения. Это, в свою очередь, означает, что какой-либо поток или формат вообще не может быть распознан и обычно отсутствует компонент кодека/фильтра для чтения данных в состоянии декодирования и готовности к презентации.
Поскольку вы упоминаете MP4, вам, вероятно, нужен сторонний фильтр/кодек, так как запас Windows не предлагает компонент для этого в DirectShow API (фильтры GDCL должны исправлять это в Windows 7+, а в более старых системах вам также обычно нужна сторонняя H.264).
regsvr32 xxx.dll
для регистрации двоичных файлов из командной строки администратора с повышенными правами. Тогда вы не перемещаете их из их местоположения. Вот и все.