记载了吉里吉里Z 支持的视频播放功能。
目录
规格
模式
特殊播放功能
关于视频播放准备 ( preparevideo )
关于在层模式下指定层
视频结尾处的行为
关于在图层模式下看不到视频的问题
混合播放
关键帧和查找
模式 | 覆盖模式 | 使用视频覆盖显示视频的模式 |
层模式 | 吉里吉里内的图层播放视频的模式 | |
混合模式 | 使用VMR9+Direct3显示视频的模式 | |
特殊播放功能 | 区间循环 | 能够在指定帧之间循环 |
周期事件 | 在指定帧中触发事件的能力 | |
指定播放速度 | 指定视频播放速度的功能 | |
多音频 | 选择并播放多路复用声音的功能 | |
声音平衡 (全景) |
-100000 ~ 0 ~ 100000 |
-100000完全靠左,0居中,100000完全靠右。 如果您正在播放立体声源,则全景必须 通过衰减左右任一通道来实现。 |
声音音量 | 0 ~ 100000 | 表示完全静音,100000表示100%音量 |
音频流 | 依赖于内容 | 选择要播放的音频流 |
播放速度 | >0 | 可设置的值取决于DirectShow过滤器。 有声音的情况下,2.0≧速度>0。 1.0为等倍速。 |
取得可能値 | 帧率 | 每秒帧数 |
当前帧 | 当前显示的帧。 不能保证与显示的帧编号完全一致td |
|
现在的播放时间 | 视频最初在视频中的经过时间。 | |
图像大小 | 宽度和高度 | |
音频流数 | 复用的音频流的数量 | |
总帧数 | 视频含有的帧数 | |
合计时间 | 视频总时间 | |
事件 | 帧更新 | 视频帧更新后发生 |
Period事件 | 正常循环末端、分段循环末端、 设定的周期事件,播放准备完成时发生。 |
|
状态变更 | 播放状态变更时发生 |
种类 | 说明 |
覆盖模式 | 这是一种使用视频叠加显示视频的模式。 比吉里吉里其他任何图层都更靠前。 在大多数情况下,影片的播放负载是最轻的。。 如果只是简单的播放视频然后停止,那么使用覆盖模式是一个很好的选择。 但是,在Windows Vista 和 Windows XP 中,吉里吉里的绘制模式为DirectDraw时,在某些环境中,如果在覆盖模式下进行放大,则会出现无法完全放大的现象(出现锯齿现象)。 因此,最好不要在Windows Vista中使用覆盖模式。 |
层模式 | 在吉里吉里指定的图层上播放视频的模式。 环境依赖性较低,允许在指定帧之间循环(分段循环)和处理指定帧(周期事件)等功能。 唯一的难点是CPU负载比其它模式更高。 也不能进行缩放。 |
混合模式 | 使用VMR9+Direct3D显示视频的模式,作为覆盖模式的替代方案而添加。 如果显卡具有视频播放辅助功能且支持编解码器,则可以使用显卡的视频播放辅助功能进行播放。 还可避免Windows Vista放大时出现锯齿问题。 还可以与指定图层混合或缩放。 必须使用DirectX 9或更高版本。 |
种类 | 功能 |
分段循环 | 在指定帧之间循环的功能。 要使用此功能,您必须在要循环返回到视频文件本身的帧上设置关键帧。 如果没有关键帧,则不会按预期循环。 |
周期事件 | 一种可以在指定的帧中触发事件并对其进行某种处理的功能。 事件发生时,通过查找到相隔较远的帧,可以跳过中间的帧,使视频看起来像是连接的。 另外,当想要字幕配视频时,也可以在字幕的开始帧上设定周期事件,等待事件后显示文字。 另外,使用此功能,可以在指定帧中使用SE发出声音,而不在视频本身中输入声音。 |
播放速度控制 | 可以指定视频的播放速度。 1.0 是正常的播放速度、0.5 是一半的播放速度、2是2倍的播放速度。 可设定的值取决于DirectShow过滤器(Codec)。 |
多音频 | MPEG I允许多个音频流多路复用,因此可以利用这些音频流。 此功能允许您播放任何音频流。 例如,可以只准备BGM、BGM+等音频流,用户可以指定在哪个模式下播放。 不过,音频流的切换有2秒左右的时滞,因此不太适合交互应用。 可以用于根据上述用户的选择和场景而改变视频声音的用途。 |
preparevideo是在指定的图层上绘制视频的第一帧。
这是为了防止意料之外的图像(内存上的垃圾和上次的图像等)显示在画面上。
也就是说,通过记述隐藏作为播放对象的层,在openvideo中打开视频后,调用preparevideo,在wp中等待准备完成,准备好后使播放对象层处于显示状态的处理,显示时可以显示视频的第1帧。
另外,该功能仅在层模式时具有意义。
在图层模式下播放视频时,使用videolayer指定要绘制的图层。
在videolayer中,可以指定slot、channel、page和layer。
slot相当于se的buf,是为了在同时播放不同的视频时,确定对哪个视频的操作。
我认为几乎不会同时播放多个视频,所以通常省略传参,指定0就没有问题了
channel用于指定要输出的层。
因为可以指定一个视频附带的两个输出的图层,所以用于确定对哪一个指定。
可以指定两个是为了利用过渡。
在视频播放中执行过渡的话,因为正面和背面的层会被更换,所以如果只输出到一方的话,视频就会被隐藏。
为了避免这种情况,在视频播放中进行过渡时,请在通道的1和2上设置正面和背面的层。如果不进行过渡,只指定表层就没有问题。
如果不指定循环播放视频,则播放到最后后视频将停止。
如果想在显示视频的最后一帧的状态下进行游戏,则该行为并不好。
避免这种情况的最简单方法是使用图层模式。
在图层模式下,将对图层绘制视频,因此最后一帧的图像将保留在图层上。
因此,没有特别的有意操作,可以在显示最后一帧的状态下进行游戏。
对于叠加或混合模式,如果停止,则显示将消失,因此必须在到达最后一帧之前暂停。
这可以在周期事件中实现,但如果真的是最后一帧的话,可能会停止,所以最好在视频的末尾放入几帧虚拟帧,稍微超过一点也没关系。
作为视频播放对象的层的显示类型为alpha等时,会发生不显示视频的情况。
这是因为,如果视频没有alpha通道,则会在alpha通道的位置写入不定数据。
如果层显示类型为alpha,则该不定数据会被视为alpha,因此会变得完全透明。
为了避免这种情况,请将播放对象层的显示类型设为opaque。
这样的话就会显示视频。
但是,在KAG中opaque很难受,作为替代调用freeimage也能得到同样的效果。
混合器模式顾名思义,可以实现与其他图层混合播放视频。
在混合模式下,可以指定与混合有关的是背景色、混合率和混合对象层。
混合对象层将设定瞬间的图像和视频混合。
因此,即使更新了混合对象层,只要不再次设定,内容也不会更新。
但是,如果在每帧更新时调用设置,则CPU负荷会相当高。
为了抑制CPU负载,设定时最好仅限于更新时。
背景色是混合比例小于1.0时混合的颜色。
将背景色设定为黑色等,通过改变混合率,可以实现淡入/淡出。
当然,可以与混合对象层淡入/淡出。
与混合对象层的混合率和层位置将使用层的信息。
也就是说,显示位置取决于层的位置,混合率取决于层的不透明度。
但是,因为每次都需要指定与层的混合,所以如果与层进行淡入/淡出,CPU负荷就会变高。
吉里吉里为了高速进行寻道,将可寻道位置限定为关键帧。
如果指定了关键帧以外的帧,则对最接近指定帧的关键帧进行查找处理。
但是,由于此行为依赖于Codec,因此经常会发生意料外的行为。
因此,最好对进行搜索的帧设置关键帧。