RenPy中文空间

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 84|回复: 0

影片(新)

 关闭 [复制链接]
发表于 2018-4-20 14:47:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
影片(翻译:被诅咒的章鱼)

Ren’Py可以使用libav解码器(已内置)播放以下视频编码格式的影片:

  • VP9
  • VP8
  • Theora
  • MPEG 4 part 2 (包括Xvid和DivX)
  • MPEG 2
  • MPEG 1

及以下编码格式的音频

  • OPUS
  • Vorbis
  • MP3
  • MP2
  • PCM

还支持以下容器格式:

  • WebM
  • Matroska
  • Ogg
  • Avi
  • 多种MPEG格式流媒体.

(注意某些格式可能需要专利许可证书。没有把握的情况下,我们推荐使用VP9、VP8或者Theora、Opus、Vorbis,以及WebM、Matroska或者Ogg。)

影片可以全屏播放,也可以在一个可视组件内播放。全屏播放更省事。

全屏播放影片
全屏播放影片最简单有效的办法是,使用 renpy.movie_cutscene() 函数。该函数会全屏播放影片直到影片结尾。用户也可以点击直接跳过播放。
[RenPy] 纯文本查看 复制代码
$ renpy.movie_cutscene("On_Your_Mark.webm")

在移动端平台,例如安卓和iOS,默认情况下配置项 config.hw_video() 设为True,此时会启用硬件视频解码。硬件视频解码效率更高,但具体支持的影片格式需要视具体平台而定。

影片组件和影片精灵(sprite)
任何可展示可视组件的地方,Ren’Py都可以使用影片组件实现影片的播放。例如,可以在菜单界面播放一个影片作为背景。

影片组件也能用于定义一个影片精灵(sprite)。影片精灵(sprite)由两段影片组成。主影片提供精灵(sprite)的各种颜色信息。次影片是一个遮罩影片,提供alpha通道信息,白色表示完全不透明而黑色表示完全透明。

使用影片组件会自动循环播放。

影片组件有三个非常重要的参数,其中两个是最常用到的:

channel
    该值是一个字符串,给定了影片播放使用的通道名。

    这是一个必须提供的值,不可以使用影片播放的默认值“movie”,也不能使用几种音频通道名。播放通道名需要谨慎选择,使得每个通道在同一时间只播放一部影片。如果这个通道名还未注册,Ren’Py会使用renpy.music.register_channel()自动注册一个通道。

play
    该值是一个字符串,给定了需要播放的影片文件名。

    必须提供的这个值。

mask
    该值是一个字符串,给定了alpha遮罩影片文件名。

这里有一个定义影片精灵(sprite)的样例:
[RenPy] 纯文本查看 复制代码
image eileen movie = Movie(play="eileen_movie.webm", mask="eileen_mask.webm")

影片精灵可以使用show语句显示,并自动启动影片播放。如果可视组件被隐藏时,影片播放会自动停止。
[RenPy] 纯文本查看 复制代码
show eileen movie

e "I'm feeling quite animated today."

hide eileen

e "But there's no point on wasting energy when I'm not around."

影片组件也能被用作某个界面的一部分,在初始化阶段定义即可(然后就可作为某个image语句的一部分)。
[RenPy] 纯文本查看 复制代码
image main_menu = Movie(play="main_menu.ogv")

screen main_menu:
    add "main_menu"
    textbutton "Start" action Start() xalign 0.5 yalign 0.5

在同一个界面的同一时间可以显示多个影片组件或影片精灵(sprite)。受到系统性能限制,多个影片播放时使用相同的帧率。Ren’Py中没有定义过使用不同帧率播放影片的行为,很可能会导致很严重的掉帧。

Python函数

renpy.movie_cutscene(filename, delay=None, loops=0, stop_music=True)
    该函数播放一个MPEG-1格式的过场。用户可以使用点击跳过该过场。顶层元素overlay和底层元素underlay在过场中依然显示。

    filename
        含有MPEG-1影片的文件名。

    delay
        过场结束前等待(用户交互行为)的时间,单位为秒。通常就是影片长度,以秒计。若该值为空(None),delay值会被自动计算,使用循环总次数(即入参loop+1)乘以影片总时长。若该值为-1,则会一直等待用户点击。

    loops
        该值表示,除了首次播放之外,额外循环播放的次数。若值为-1表示始终循环播放。

    若影片播放被用户停止则返回True,若在delay定义的预计时间内由于其他原因中断播放则返回False。

Movie(fps=24, size=None, channel='movie', play=None, mask=None, mask_channel=None, image=None, play_callback=None, **properties)

    该函数创建了一个可视组件用于显示当前影片。

    fps
        指定影片的播放帧率。(该值通常可以省略。播放时指定的帧率会后向匹配,即高帧率视频可以指定更低帧率播放。影片文件的原始帧率会被自动检测到。)

    size
        该值有两种情况:指定一个包含指定影片宽度和高度的元组,或空值(None)自适应影片原尺寸。(如果这里设置为空值(None),可视组件在不播放影片时的值就是(0, 0)。)

    channel
        与播放影片相关联的音频通道名。当某个影片在该通道上播放时,就会在对应的影片组件上显示。若未指定该值,并且入参play提供了播放文件名的情况下,会自动选择可用的通道名。

    play
        若给定入参play,其应该是某个影片文件的路径。显示影片时,入参channel通道上的影片文件将会自动播放。当影片被隐藏时,影片文件会自动停止播放。

    mask
        若给定入参mask,其应是某个影片文件的路径,而这个影片用作可视组件的alpha通道。影片被显示时,在mask_channel通道上的影片文件将会自动播放。当影片被隐藏时,影片文件会自动停止播放。

    mask_channel
        alpha遮罩视频播放使用的通道。若未给定,默认会在入参channel后面加上 _mask 后缀,注册一个新的通道。(例如,若入参channel名为“sprite”,那么自动生成的mask_channel值就是“sprite_mask”。)

    image
        若入参play给定,但文件可能并不存在或不能播放的情况下,则会显示入参image给定的图片文件。(例如,这个功能可以用于创建一个精简的移动版本,其不包含影片精灵。)当用户遇到系统负荷过重时,也能在特性中选择降低为显示图片而不是播放影片。

    play_callback
        若不是 None,这个函数用于启动影片的播放。(函数的工作可能是将一个转场加入到各个sprite之间。)调用函数时使用下列入参:

        old
            旧的Movie对象,如果没有播放影片则为None。

        new
            新的Movie对象。

        A movie object has the play parameter available as _play, while the channel, mask, and mask_channel fields correspond to the given parameters.
        Movie对象中包含的播放参数分别对应 channel 、 mask 和 mask_channel 域(field)的入参。

        如果想要使用 renpy.music.play() 在指定的通道启动影片播放的话,带上synchro_start=True。最小化实现代码如下:
[RenPy] 纯文本查看 复制代码
def play_callback(old, new):

    renpy.music.play(new._play, channel=new.channel, loop=True, synchro_start=True)

    if new.mask:
        renpy.music.play(new.mask, channel=new.mask_channel, loop=True, synchro_start=True)

    影片组件在不播放影片时是完全透明的。



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号 | 苏公网安备 32092302000068号 )

GMT+8, 2018-8-21 06:26 , Processed in 0.027493 second(s), 21 queries , File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表