2012-02-09 5 views
1

Я пытаюсь создать медиа-плеер (в C# .net 4.0), который будет работать на Windows XP (SP3), Vista и 7. Обычно я просто просто и использовать собственный MediaElement WPF, но поскольку это зависит от Windows Media Player 10 или новее, то это не будет работать, поскольку Windows XP SP3 может иметь только WPM9.Создание универсального видеопроигрывателя (XP, Vista, 7)

Сначала я попробовал загрузить пример приложения WPF MediaKit от Jerimiah Morill, но это использовало EVR, который не отображается на моей тестовой машине (Windows XP SP3 только с кодеками по умолчанию и программами по умолчанию, а также с различными установками инфраструктуры .Net). Я также загрузил двоичные файлы и разорвал их на части, создав новый проект только со ссылкой на DirectShow-dll и минимальные минимумы из медиафайла WPF, на этот раз без ссылки на EVR. Еще не повезло. Это я с трудом понимаю - не стоит ли даже Windows XP воспроизводить фильмы с помощью VMR прямо из коробки?

Я нашел несколько образцов медиаплееров, где одна из этих работ. Это называется DxPlay и использует графический редактор directshow, но встроен в winforms, имеет довольно неплохой код и не будет масштабироваться, искать, обрабатывать аудио и вообще кажется довольно отрывочным.

Итак, есть ли простой способ создать медиаплеер, который будет воспроизводиться на всех упомянутых платформах, не нажимая WMP10 +? Я возлагал большие надежды на WPF MediaKit, но что-то мешает ему играть на Windows XP SP3 (любое решение для этого было бы очень интересно).

спасибо, что заблаговременно!

-ruNury

+0

[WPF-MediaKit] (https://github.com/Sascha-L/WPF-MediaKit) использует VMR9 по умолчанию. – xmedeko

ответ

2

Я хотел бы попробовать обернуть VLC медиа-плеер в .Net проекта.

Вот некоторые проекты .Net, которые могут помочь вам:

+0

Спасибо за совет. Но разве это не требует установки VLC на компьютер, на котором запущен медиаплеер? Поскольку то, что я делаю, является частью основной части программного обеспечения, мы не можем нажимать стороннее программное обеспечение, если нет другого пути ... – ruNury

+0

@ruNury всегда есть другой способ - вы можете написать свой собственный контроллер игрока :) – Seekeer

+0

@ruNury В чем проблема с сторонними библиотеками? Вы не можете вечно изобретать колесо, особенно для видеопроигрывателя, для которого требуется большая работа. Это то же самое для Windows Media Player, оно должно быть установлено. Если речь идет о проблеме лицензирования, но и Ms-PL и L-GPL должны быть в порядке для 90% случаев использования. – ken2k

0

MSDN предложить EVR (Enhanced Video Renderer) для вывода видео в системах, где он поддерживается: Windows Vista и более поздние версии. С его внедрением его предшественники - фильтр микширования видео микширования (версии 7 и 9) были разрезаны на плавное масштабирование видео. Video Mixing Renderer 7 также менее способен с точки зрения настройки, однако он потребляет гораздо меньше ресурсов (не использует Direct 3D), и вы можете выводить больше видео одновременно.

Ваше стандартное решение здесь - поддерживать как выход VMR, так и EVR и использовать последнее, начиная с Windows Vista, в противном случае вернуться к прежнему.

EVR «неофициально» установлен в Windows XP с .NET runtime и может использоваться с трюком для создания экземпляра: вы соответствующая DLL не зарегистрирована в COM, и вы не можете создать экземпляр с использованием API CoCreateInstance, однако вам это удастся, если вы это сделаете CoLoadLibrary, DllGetClassObject и друзей.

Для разработки C# вы обычно потребляете DirectShow через DirectShow.NET Library.

Смежные вопросы