昨天看到XNA3.1發布的消息,當時在復習考試,今天考完了操作系統就下載回來嘗試了一下,官方給的新特性包括:
其中我們最關心的就是視頻回放和改進的Content Pipeline了。下面就看看如何在XNA3.1中播放視頻。
首先說一下XNA3.1的安裝,下載安裝包(73.2M)后,要先把XNA3.0卸了,注意把Microsoft Game for Windows也一起卸了,否則安裝時會卡起(應該不是我個人的原因,2.0升3.0的時候也有這個毛病,當時弄得很郁悶……)。安裝后就同時支持了XNA3.0和XNA3.1的項目,VS2008中成了這個樣子:
新建一個Windows Game項目,發現Content的引用中多了一個VideoImporter。
查下MSDN,對視頻的要求還真多,必須是wmv編碼的,只支持CBR,其中包含一個wma編碼的音頻軌,也必須是CBR的,等等。把視頻加到項目里看看能不能編譯通過就知道格式符不符合要求了,我加了一個wmv格式的廣告片,編譯通過了。打開編譯后的Content目錄,看到視頻文件的一個拷貝和一個同名的xnb文件,也就是說Content Pipeline對video的處理和對song的處理是一樣的,不像處理soundEffect那樣把整個媒體寫入xnb,而只在xnb文件中記錄媒體文件的一些信息。
下面就是怎么寫代碼把視頻播放出來了,MSDN里面有個示例,很簡單,用到了Microsoft.Xna.Framework.Media命名空間下的兩個類,Video和VideoPlayer。查看這兩個類的屬性和方法,看名字就基本猜到要怎么用了,唯一一個看不懂的是Video的VideoSoundtrackType屬性,對PC無效,是為XBOX設計的。
1、在Game1類中添加兩個成員:
Video video; VideoPlayer videoPlayer = new VideoPlayer();
2、在LoadContent中加載并開始播放視頻:
video = Content.Load<Video>(@"ad"); videoPlayer.Play(video);
3、在Draw中繪制畫面:
spriteBatch.Begin(); spriteBatch.Draw(videoPlayer.GetTexture(), Vector2.Zero, Color.White); spriteBatch.End();
4、F5運行,效果如圖:
僅僅七行代碼……
注意幾個地方:
1、videoPlayer.Play(video)寫在了LoadContent里,也就是說只在程序加載時運行一次,這個Play()被調用一次后視頻自己就開始播放了,這個跟用MediaPlayer播放Song是一樣的,而在用XACT播放聲音時,AudioEngine每幀都要更新。
2、用MediaPlayer播放Song時,再播放視頻會沒有視頻的聲音。(MSDN里寫的,我沒試)
3、注意繪制畫面的時候直接調用videoPlayer.GetTexture()獲取了一張Texture2D,然后繪制到屏幕上。相當于得到一張視頻截圖,再畫上去。其實,我們得到了截圖,能做的事就多了,加個黑白效果啊,做成水彩畫啊,隨便怎么折騰吧。
我把每幀獲得的Texture作為貼圖貼到轉動的立方體上,出個3D效果:
源代碼下載點這里。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
正能量的歌一直深得人心汪峰-《英雄》北京國安球隊隊歌,聽見這首歌情況下你是不是覺得心潮澎湃?是不是有一種想要去開辟大場面的想法?也許和平時期獲得一場比賽也是英雄。國安隊歌歌詞誰知道???漢化版綠茵場上叫喊著姓名 翠綠色影子也是我們的大牌明星 向著未來 噢 朝著全球 去拼搏大家憧憬的殊榮 獲勝始終屬于你 北京國安永遠爭第一 喔噢…… 北京國安 我們永遠支持你 噢…… 北京國安 大家永遠熱愛你 綠茵場上...
11對戰平臺警告!檢測到不匹配是怎么回事?不運行某些程序的時候,經常會會直接出現出現了,接著該程序就關了。就像再次出現這個現象有方面的,一是硬件,即內存方面有問題,二是軟件,這就有多方面的問題了。故障分析硬件方面:一般來說,內存又出現問題的可能性并不大,比較多方面是:內存條主板壞、內存質量有問題,有應該是2個差別牌子不同容量的內存混插,也也很很容易再次出現不不兼容的情況,同樣的也要注意一點散熱問題...
vba中怎么給listbox控件綁定excel里面的數據?軟件版本:office2007示例如下:1。將Excel中a列的數據綁定到列表框:2。創建一個窗體,添加一個ListBox控件,并按如下方式在窗體中添加代碼:3。點擊run按鈕,運行結果如下:可以看到excel中的數據綁定在listbox中。...