XNA 技术资源 - 如何在XNA Game Studio 3.1中播放视频

本内容由 Johnson 于 13 June,2009 张贴发布 (0)评论

本文由Johnson.Song@live.cn于七楼顶上http://www.qilouding.cn原创发布,请勿转载,如需转载,请与本人联系。


本文此部分内容来自XNA Game Studio 3.1的官方英文帮助文档How To: Play Video,及其相关章节。

 

VideoPlayer

提供相关方法和属性去播放、暂停、重播、和停止播放视频,及重复播放、音量控制、播放位置信息。
 

命名空间: Microsoft.Xna.Framework.Media
程 序 集: Microsoft.Xna.Framework (in microsoft.xna.framework.dll)

语法

public sealed class VideoPlayer : IDisposable
 

 

如何播放视频

说明如何使用VideoPlayer去播放视频。
 

官方实例下载:VideoPlayback_Sample.zip

 

视频播放

播放一个视频


添加一个视频内容文件到游戏项目,使用方法步骤详见How To:Load Content(如何加载资源内容)

1.LoadContent(内容加载过程),使用ContentManager (内容管理器)加载视频内容。

2.创建一个VideoPlayer的新实例。

Video video;
VideoPlayer player;
Texture2D videoTexture;
protected override void LoadContent()
{
       // Create a new SpriteBatch, which can be used to draw textures.
       spriteBatch = new SpriteBatch(GraphicsDevice);
       video = Content.Load<Video>("video");
       player = new VideoPlayer();               
}
 

3.Update(更新)方法中,播放视频。设置IsLooped布尔值,获取一个值来表示用户播放的视频是否允许循环播放。true表示允许用户循环播放该视频,flase表示禁止)为true,如果你需要该视频重复播放。

protected override void Update(GameTime gameTime)
{
       ...
       if (player.State == MediaState.Stopped)
       {
           player.IsLooped = true;
           player.Play(video);
       }
       ...
       base.Update(gameTime);
}
 

4.Draw(绘制方法),如果VideoPlayer没有Stopped(停止播放),调用GetTexture取回一个当前播放视频的帧内容里所包含的Texture2D)去获取一个播放视频最后帧的复制。

5.创建一个Rectangle(矩形),定义在屏幕上视频内容显示播放的位置。

6.如果texture(纹理)不为null(空),在屏幕上使用SpriteBatch.Draw进行绘制。

protected override void Draw(GameTime gameTime)
{
        GraphicsDevice.Clear(Color.CornflowerBlue);

        // Only call GetTexture if a video is playing or paused
        if (player.State != MediaState.Stopped)
            videoTexture = player.GetTexture();

        // Drawing to the rectangle will stretch the 
        // video to fill the screen
        Rectangle screen = new Rectangle(GraphicsDevice.Viewport.X,
            GraphicsDevice.Viewport.Y,
            GraphicsDevice.Viewport.Width,
            GraphicsDevice.Viewport.Height);           

        // Draw the video, if we have a texture to draw.
        if (videoTexture != null)
        {
            spriteBatch.Begin();
            spriteBatch.Draw(videoTexture, screen, Color.White);
            spriteBatch.End();
        }

        base.Draw(gameTime);

}
 

注:官方帮助文件里还提供了一份如何在三维空间里播放视频的例程How To: Play a Video in 3D space,在VideoPlayer的使用方面没有变化,只是多了Quad的操作,那是另外的内容了,而且在三维空间里播放视频,办法也应该很多,我就不译了。关于在三维物体及空间里播放视频,有兴趣的话也可以看看下面Catalin Zima的例子。
 


本文此部分内容来自Catalin Zima博客

原文链接

译文如下:

XNA Game Studio 3.1 视频播放实例

 

这是一个关于如何在XNA Game Studio 3.1中播放视频文件的实例。

你需要做的就是添加一个视频文件(wmv格式)到你的项目的Content(目录),并添加少量的代码。

这个实例加载一个包含视频内容的XNA游戏,演示一些效果。加载后,你能看到它的四个演示效果(使用键盘空格,或者游戏柄的A键操作)

视频简单播放效果
视频全屏播放效果
视频内容使用一个后处理的着色器效果(相关代码来自Dark Codex’s教学
视频内容在一个旋转的球形对象上的效果

实例运行后的屏幕截图:

    
 

[本文原作者提供的实例文件下载]
 

另:如果你的视频文件不能正确播放,请尝试在Windows Movie Maker重新编码该文件。
 

(译文完)

 


评注随笔:

XNA Game Studio 3.1的VideoPlayer是本次更新里最有价值的,虽说我到现在也不明白为什么微软要到XNA3.1才提供这个,有点无奈。它使用起来很简单,如果你只是在游戏里放个开场、Logo什么的。如果你经常编写一些多媒体演示,那我建议你仔细看看Catalin Zima的例子。

祝,阅读愉快,好心情!
 


作者:Johnson.Song@live.cn
日期:2009.6.13
网站:七楼顶上 http://www.qilouding.cn
声明:本文系原创文章,请勿转载,如需转载,请与本人联系。如有错漏遗失,或不同意见,请留言指正说明。
 

相关内容

内容分类: 技术和资源 标签关键字: XNA  XNA Help  XNA Source  XNA Turorials  XNA 帮助  XNA 资源  XNA 教程  VideoPlayer  
评论
发表新留言

按照内容分类或文档日期查找选择

内容分类

文档日期