2013-03-29 31 views
4

在我的Monogame項目中,我需要播放視頻。爲此我使用Video ClassVideoPlayer類。但是,當我開始解決方案,VS給我這個錯誤:視頻課存在於兩個圖書館

Error 1 The type 'Microsoft.Xna.Framework.Media.Video' exists in both 'c:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Video.dll' and 'c:\Program Files (x86)\MonoGame\v3.0\Assemblies\WindowsGL\MonoGame.Framework.dll'

我需要VideoPlayer類,則在Microsoft.Xna.Framework.Video.dll播放視頻。

我該如何解決這個問題?

如果它是有幫助的,這裏是我的代碼有我想玩視頻:

namespace play 
{ 
    public class PlayVideoClass 
    { 
     private readonly Microsoft.Xna.Framework.Media.Video _video; 
     private readonly Microsoft.Xna.Framework.Media.VideoPlayer _player; 
     private bool _playVideo; 

     public PlayVideoClass() 
     { 
      _video = Game1.Video; 
      _player = new Microsoft.Xna.Framework.Media.VideoPlayer(); 
      _playVideo = true; 
     } 
     public void Update() 
     { 
      if (_playVideo) 
      { 
       if ((int) _player.State == (int)Microsoft.Xna.Framework.Media.MediaState.Stopped) 
       { 
        _player.Play(_video); 
        _playVideo = false; 
       } 
      } 
     } 
    } 
} 
+1

我只有一個建議 - 您可以嘗試使用反射來加載此類型,這只是我知道您可以指定要從特定dll加載類型的一種方式。 – outcoldman

+0

你能給我一個使用反射後創建的使用類型的例子嗎? –

+0

在這種情況下,「Game1.Video」是什麼? – GalacticCowboy

回答

1

我認爲我對你更好的解決方案,它反映。你應該創建單獨的Assembly,它只能引用你想要使用的程序集(Microsoft.Xna.Framework.Video.dll)。你可以寫一個類型爲Microsoft.Xna.Framework.Media.Video的包裝器。你的包裝應該公開你想要在你的應用程序中使用的所有功能。所以現在這個新的組件可以解決正確的類型,因爲它只有其中的一個。你的應用程序不需要知道這個衝突,因爲它會使用你的類型。

+0

你能舉個例子嗎?隨着視頻類..因爲我試圖做到這一點,但我不明白我應該寫什麼..謝謝你的建議。 –

+0

你能說明你做了什麼以及哪些不適合你嗎? – outcoldman

+0

我使用vs2012創建了一個新的dll項目:public class PlayVideo { private Video _video; private Microsoft.Xna.Framework.Media.VideoPlayer _player; private string name =「openClip」; public PlayVideo() { _video = new Video(「我不知道我在這裏放了什麼......(圖形設備)」,名稱,50,426,240,29, 「我不知道我在這裏放的是...(VideoSountrackType)「); _player = new Microsoft.Xna.Framework.Media.VideoPlayer(); } 另一個問題是Video vostructor給我錯誤。 –