Table of Contents

Video Playback

vvvv offers two distinct ways for video playback:

  • Video files
  • Image sequences

Video files

  • Referencing the VL.Video nuget (shipping with vvvv) adds the VideoPlayer [Video] node
  • This node plays a wide range of video containers and codecs out of the box
  • If you're missing any codecs for playback, see if they are available in this Mediafoundation Codec Pack.
  • Consult the help browser for examples on using the node

Advantages

  • Quick and easy to use
  • Forgives unstable rendering framerates, by dropping frames if needed

Disadvantages

  • No seemless looping (may work with certain codecs but not with others)
  • No seemless switching between sources (may work with certain codecs but not with others)
  • May show micro-jitter, most notably in fullscreen playback, because timing is not coupled to the v-sync
  • No network sync
Note

For the playback of HAP video files the thirdparty VL.HapPlayer nuget is required.

Image sequences

  • Depending on the rendering engine you are using, the following nodes are shipping with vvvv:
    • VL.Stride (3d engine): ImagePlayer (Stride) [Video] or ImagePlayer (FrameBased Stride) [Video]
    • VL.Skia (2d engine): ImagePlayer (Skia) [Video] or ImagePlayer (FrameBased Skia) [Video]
  • The ImagePlayers for VL.Stride prefer images in the DDS format (see below for conversion tools)
  • Both support the playback of JPG, PNG and BMP files
  • Consult the help browser for examples on using the nodes

Advantages

  • Nodes exist in two variants: timebased and framebased, see below
  • Can do seemless looping
  • Allows to implement seemless switching between sources
  • The playback of image sequences on multiple PCs in a local network can be synchronized

Disadvantage

  • Less comfortable handling of media assets (ie. thousands of image files)
  • Audio tracks need to be played separately using VL.Audio

Timebased vs. Framebased

Time based

  • The default, simpler to use option
  • Use for scenarios where the video is not playing fullscreen but rather is part of a scene
  • Forgives unstable rendering framerates, by dropping frames if needed
  • May show micro-jitter, most notably in fullscreen playback, because timing is not coupled to the v-sync

Frame based

  • Use for scenarios where the video is playing fullscreen
  • For frame-perfect, v-sync coupled playback
  • Requires a perfectly stable rendering framerate

DDS conversion tools