multi-purpose moviePlayer

moviePlayer (update: now in palette) is a standalone TouchDesigner component for playing and exploring movie files, setting cue points and presenting sections of movies. Movie playback can be externally controlled with ramps and python commands.

The latest doc for moviePlayer is now in the wiki: moviePlayer wiki page.

It’s a mix of features like in QuickTime or VLC Media Player and has features for making and playing cues and sub-clips, It is useful for playing live or when giving presentations in TouchDesigner networks (an alternate to using PowerPoint or Keynote) because of the ease of jumping around long movies. It works well with a touch screen.


NOTE: moviePlayer.14.tox is in the February 23, 2018 Experimental palette.

An earlier version is in the Official builds of TouchDesigner.
moviePlayer.14.tox (88.1 KB)

Numerous improvements including ability to make loops with end-start crossfades, and driving the movie with ramps or python. Works with latest Official.

The .tox is at the end of the first post of this thread. Doc is updated in the first post.

Updated again on Oct 2 and again Oct 8.

This is amazing greg thank you, Ive got a show coming up that needs very organic and flexible movie playbacks, and this will help immensely.

Although some things I found myself wanting right away were :

  1. A filter on the scrubber, that disables itself (which I added)
  2. crossfade to a cue? I would not know how to best add this myself.
  3. Is that filter chop “filtercontrolson” just there to fade the ui on? seems like disabling it cuts alot of ui cooking out.

Re: 1. A filter on the scrubber, that disables itself

You mean a Filter CHOP on the scrubber value to smooth index?

Re: 2. crossfade to a cue? I would not know how to best add this myself.

Yes, this component isn’t designed for that as it needs two Movie File In TOPs to do a cross-fade. It really depends what UI you need around that, like is your application fully automated, or improvised? In the Palette, movieBlender and moviePlaylist do that, with differing capabilities. In OP Snippets for Timer CHOP, example22 has automated overlapping movies with a fixed crossfade time.

Or you have 2 moviePlayers and a small python script to start a crossfade and start the movie at the same time.


  1. Is that filter chop “filtercontrolson” just there to fade the ui on? seems like disabling it cuts alot of ui cooking out.

ugh yes, the Filter CHOP keeps cooking. If you follow it with a Null CHOP set to Selective, it stops propagating when the value hits a constant 0. Or just bypass it to make it instant 0n/off.

Thanks Greg!

Im going to use it per longer movie file and export my content in longer sections. Then use a separate transitions system for when I change moviefiles.

I don’t know if I will need to optimize it just yet but will find out as the system gets flushed out.

Thanks again!

lots of small improvements in moviePlayer.8.tox. among them:

  • You can force the movie resolution and aspect ratio to any specific width/height.
  • You can change the moviePlayer component panel width/height to anything and the buttons/text scale appropriately.
  • rollover the time code to get the movie length.
  • If in Perform mode, press space bar and arrow keys to pause/play and step.
  • UI is simpler when you start up.
  • new ui for scrub bar (drag up to play, drag down to pause)
  • cues are temporally ordered.
  • There is a simple cue list mode where you can see your cue comments and play cues, via Setup -> Upper Display Area.
  • new Help.

Download and doc are in the first post of this thread.

about Mult-moviePlayers:

is this the best approach or it is possible to save the cue playlist for every movie on a DAT and recall along with the nominated file?

It would be less heavy than duplicate the moviePlayer, let’s say, 10 times within a single project?


Now you can hold movie data outside an moviePlayer in a set of lightweight mvspec components, where for each movie you can have multiple cues and settings.

To switch movies you just drag-drop mvpec components to moviePlayer. Or with a script or typing, you simply change the Movie Spec parameter of moviePlayer or movieEngine.

See below re movieEngine which plays movies with no panel UI.

moviePlayer now has a simpler UI for getting started. It is now more optimized and reliable.

MoviePlayer.2140.toe contains version 12 of moviePlayer, movieEngine and movieSpec, plus numerous test components. It uses the latest Experimental build 35560 or later on the DOWNLOAD page. (The older version 11 of moviePlayer is in the 35560 palette.)

The movieEngine component is a stripped-down lightweight moviePlayer (without a panel UI) that can be buried anywhere and controlled externally.

The MovieSpec component just contains the movie data and is used by moviePlayer and movieEngine.

See the full wiki page, covering cues, external controls, panel UI and more: moviePlayer wiki.

Basic Usage:

On moviePlayer1, choose a movie via the File Path parameter. You can drag-drop files onto the moviePlayer, or drag-drop a Movie File In TOP onto the moviePlayer panel. (the Source Type menu set to File Path.)

Alternately for each movie you have, you can define your settings in a very lightweight “Movie Spec” component . Then in moviePlayer ypu set Source Type to Movie Spec, set its Movie Spec parameter to be a Movie Spec component, and you adjust mvspec’s parameters. For example, drag any of mvspec3 to mvspec8 to moviePlayer1. A default mvspec1 can be found inside moviePlayer and copied outside.

This method allows you to have 1 or 2 players and a multitude of movie specs, each mvspec etc can have cues, special movie-adjustment settings and metadata.
MoviePlayer.2140.toe (122 KB)

moviePlayer version 14 is in the Experimental plaette now (2018.20100 and later), and its doc is in the wiki (press Help on the parameter dialog).

Here is the file I used to test it out, simplified. Drag-drop stuff into the player (Movie File In TOPs, mvspec components), plus movie files from the filesystem. Set cues in/out points, loop, crossfade. Read the doc.
MoviePlayerTester.2324.toe (161 KB)

感谢感谢感谢 :smiley: :smiley: :smiley: :smiley: :smiley:

Hi Greg,

I am trying to work with the moviePlayer components from the Palette.
The moviePlaylist Comp does almost everything I want. However I can’t seem to set the clip end action to cycle. I am a bit confused as some parts of the help
seem to refer to the moviePlayer component, other rather to the moviePlaylist.
E.g.: “Single File Playback is enabled by turning the Single File parameter toggle to on.”
I cant find that toggle on both of the Components.

other Example: “The MoviePlayer Component also allows for an DAT Input which has to be a Table DAT with at least a “path” column.”
However, there is no DAT Inlet with the moviePlayer Component but there is one with the MoviePlaylist Component. So is not really clear what the help is actually refering to.

What I want to be able to do is to tell every clip in the Playlist if it loops/cycles at the end, or if it should go to the next clip. In my understanding the moviePlaylist gives me that option … _SC_01.jpg

However the setting does not have an effect on the playback behaviour.

When I look inside, i can see that there live tables that hold playlists, based on the playlist I fed into, but extended with additional columns, among them “cycle”.

However thos seem not to have an effect, even if i change them manually.
Probably because the “cycle” setting is disabled with the timerCHOPs controling the actual playback. Unfortunatel my Python isnt stron enough to figure out whats going on or how to hack it.

Can you give me a hint how to make this work the way i want?

Thank you!

I would love to have the movieplaylist to start back and loop through the list. I can’t find anyone talking about it anywhere besides here.

I poked inside and it’s way beyond my knowledge level at the moment.

Are there other ways of playing list of movie files?

Is the autoMediaPlayer more trust worth?

They all do different things.

moviePlaylist may be what you are after as it plays a pre-determined sequence of movies.

MoviePlayer is more on-demand and one-at-a-time as it just fades out/stops one movie and prepares starts the next. Several of them are use to do layering and crossfades in TImeBase.tox.

There is also a raw playlist-player in OP Snippets for the Timer CHOP (example 22).

videoPlayer is a simple single-movie player.

1 Like

I am trying to use the moviePlayer component via the Palette (TD v. 2019.33020). I am trying to play back a single video file. Within this single moviePlayer component I have spent time making multiple cues (11 in total). When I reopen TouchDesigner, however, the previously created cues show for a moment before disappearing. The error shown in the moviePlayer component simply says that extMvPlay.MvPlay extension has an error. Following this trail of errors deeper: the ui operator has an error ‘1 network with errors inside’. Then from here things get weird. It sometimes shows that there are yet further errors, which will sometimes lead me to the cue0 and cuebar components having errors, yet other times it will not show any further errors despite the ui operator still throwing the ‘1 network with errors inside’ error. I have not modified file paths or file names of the video files. This same error occurs even when I make cues / save / close TD set to play the default moviePlayer test footage.

Any suggestions as to why the cues aren’t persisting and how to fix this?

I am seeing the same problem… diagnosing…

Comment this out on executeOnStart:

 # 	op('timer').par.start.pulse()

It’s a pre-caution and it’s having a bad side effect. I’ll come up with a more complete solution.

1 Like

thanks so much. I’ll try this once i get to the office.

confirmed! this solved it. thanks so much!

sorry i still don’t know how to use it specially I wanna add more movie and play them in order but now I played the only one movie