跳到主要内容

Video Playback / 播放视频

源文档地址

vvvv 提供了两条截然不同的视频播放路子:

  • 视频文件
  • 图像序列

Video files / 视频文件​

优点​

  • 又快又好上手
  • 对不稳定的渲染帧率比较宽容 —— 必要时会丢帧

缺点​

  • 做不到无缝循环(某些编解码器可能行,另一些不行)
  • 做不到源之间的无缝切换(某些编解码器可能行,另一些不行)
  • 可能出现微抖动,全屏播放时最明显 —— 因为时序没有与垂直同步耦合
  • 没有网络同步
备注

要播放 HAP 视频文件,需要第三方的 VL.HapPlayer NuGet。

Image sequences / 图像序列​

  • 取决于你用的渲染引擎,随 vvvv 发布的是下面这些节点:
    • VL.Stride(3D 引擎):ImagePlayer (Stride) [Video] 或 ImagePlayer (FrameBased Stride) [Video]
    • VL.Skia(2D 引擎):ImagePlayer (Skia) [Video] 或 ImagePlayer (FrameBased Skia) [Video]
  • VL.Stride 的 ImagePlayer 更偏好 DDS 格式(英文)的图像(转换工具见下文)
  • 两者都支持播放 JPG、PNG 和 BMP 文件
  • 这些节点的用例请查阅帮助面板

优点​

  • 节点有两种变体:基于时间的和逐帧的,见下文
  • 能做到无缝循环
  • 可以实现源之间的无缝切换
  • 局域网内多台 PC 上的图像序列播放可以做同步

Disadvantage / 缺点​

  • 媒体素材管理起来没那么舒服(也就是成千上万个图像文件)
  • 音轨需要另外用 VL.Audio 单独播放

Timebased vs. Framebased / 基于时间 vs. 逐帧​

Time based / 基于时间​

  • 默认的、更好上手的选择
  • 用在视频不是全屏播放、而是作为场景一部分的场合
  • 对不稳定的渲染帧率比较宽容 —— 必要时会丢帧
  • 可能出现微抖动,全屏播放时最明显 —— 因为时序没有与垂直同步耦合

Frame based / 逐帧​

  • 用在视频全屏播放的场合
  • 能做到帧级精确、与垂直同步耦合的播放
  • 要求渲染帧率完全稳定

DDS conversion tools / DDS 转换工具​