2015-01-11 4 views
1

Я пытаюсь воспроизвести видеофайл на панели. Я нашел пример кода от social.msdn forum, но ссылки для скачивания на directx redistributable & Обновление SDK, упомянутое на образце кода, сломано. Поэтому я вручную искал DirectX 9.0C и установил его с this link. И ниже - код, который я использовал.Воспроизведение видеофайлов на панели

Imports Microsoft.DirectX.AudioVideoPlayback 

Dim videoFile As Video = New Video("G:/Shared Data/myvid-2012.avi") 
videoFile.Owner = Panel1 
videoFile.Play() 

мне пришлось вручную просмотреть & добавить ссылку на Microsoft.DirectX.AudioVideoPlayback.

Приведенный выше код находится в форме загрузки события. Теперь, когда я пытаюсь запустить приложение, он иногда держится навсегда, не открывая мое приложение. И иногда он открывается, но моя панель не отображает видео. Есть ли решение этой проблемы?

+1

Не знаю, поможет ли это, но что, если вы попытаетесь использовать SlimDX вместо этого? http://slimdx.org/ –

+0

есть также DirectShowNET – Plutonix

+0

@Plutonix спасибо, но не существует более простого способа сделать это прямо с vb.net, воспроизведение видео кажется типичным требованием. Не могу поверить, что у vb.net нет более простого решения для этого. Я пробовал использовать Windows Media Player, и он много мешает при воспроизведении видео. – codeGEN

ответ

2

К сожалению, вы взяли на себя зависимость от оберток .NET Managed DirectX, опубликованных Microsoft в .NET 1.0 дней. Это была сложная библиотека, и они прекратили ее 10 лет назад. Проблема, которую вы описываете, звучит как «блокировка загрузчика», у этой библиотеки была хроническая проблема с ней. Вероятная причина была прекращена. Не существует «официальной» .NET-оболочки для DirectX, но проекты с открытым исходным кодом взяли на себя эту задачу. SharpDX и SlimDX были самыми популярными.

Технология воспроизведения видео двигалась быстро, довольно важно не застрять на старых вещах. Есть много, много альтернатив. Каноническое современное решение для настольных приложений описано в this howto article. Конечно, не панель, я должен порекомендовать держаться подальше от обложек DirectShow. Вы можете легко встроить проигрыватель Windows Media, хорошо описанный в this MSDN article. Если AVI-воспроизведение является вашим единственным требованием, популярным может быть популярный AForge.NET library, класс AVIFileVideoSource.

+0

[link] (http://msdn.microsoft.com/en-us/library/aa969812%28v=vs.110%29.aspx) - это пример wpf, потому что он говорит, что MediaPlayer не определен или мне нужно для добавления ссылки. Я попробовал проигрыватель Windows Media, который также проигрывает при воспроизведении видео. – codeGEN

+0

Я пытаюсь воспроизвести повторяющееся видео на экране входа в систему, чтобы добавить в приложение более привлекательный внешний вид, поэтому я не хочу компромисс в производительности из-за объекта визуальной апелляции. – codeGEN

0

Вам необходимо скачать июня 2006 Directx SDK который я считаю, является последним SDK для управляемых DirectX

DirectX SDK-(June 2006)

В Вашем случае загрузки формы:

Dim sz As Size = New Size(Panel1.Width, Panel1.Height) 

Dim videoFile As Video = New Video("G:/Shared Data/myvid-2012.avi", False) 
videoFile.Owner = Panel1 

videoFile.Play() 'changes the size of panel 

'Set the original size 
Panel1.Size = sz 
+0

Не используйте устаревшие управляемые DirectX 1.1.См. [DirectX и .NET] (http://blogs.msdn.com/b/chuckw/archive/2010/12/09/directx-and-net.aspx). –

+0

@ChuckWalbourn Я не сказал, что это лучшее решение. Я также не сказал, что он * должен использоваться *. С другой стороны, это единственный способ использовать * AudioVideoPlayback *, который использует OP, и он работает с его ограничениями. Это прямой ответ на вопрос ОП. Если у вас другое современное решение, я жду вашего ответа. –

+0

@ChuckWalbourn. Будет ли огромное влияние на эффективность использования этого. Я намереваюсь воспроизвести это видео на фоне моего приложения исключительно для визуальной привлекательной деятельности, и я не хочу, чтобы видео не было в запасе или мое приложение отставало из-за этого. В любом случае я скачаю DirectXSDK (довольно большой файл) и попробую его. Благодарю. – codeGEN

0

You can open the following

Замените все в своем файле App.Config со следующим (для .net Framework 4.0)

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
</configuration> 
Смежные вопросы