Need help optimizing 4-screen, 8-channel installation
-
I'm attaching a screenshot of the Isadora file below but, basically, I've developed a 4-screen video installation -- each screen includes two videos stacked on top of one another so there is 8-channel sound as well. The clips are running on a randomized loop, some of the clips are as short as a few seconds and others are closer to a minute-long. The issue is that the videos aren't loading fast quickly enough. I have a preloading system because of this loading glitch (so that 16 videos are loading at any given moment) but I'm wondering if that's slowing it down further. I'm using a Sonnect eGFX Breakaway Box 750 but it doesn't seem to be speeding things up.
I'm going to try converting all of my clips to h.264 but am wondering if people have other thoughts on how to optimize this.
-
What Codec is your video encoded in currently? If it’s something with interframe compression (which requires CPU/GPU to decode on playback) then I would suggest re-encoding to HAP (rather than H264). You can use the free ShutterEncoder program to convert to HAP.Is the footage on a fast drive?
-
@rotrocchia said:
h.264 but am wondering if people have other thoughts on how to optimize this
H.264 will only help your performance if the bottleneck you are running into is the transfer speed from your drive.
To help, we really need to know more about your system and the video resolution. Hap is generally the best-performing video codec, but with 16 videos loading, you may run into transfer bottlenecks, since Hap doesn't make for small files.
On the other hand H.264 may be decoded on the GPU (as is HAP) but it may not (this depends on the exact encoding, and what is supported by the video card). If it isn't GPU decoded it will 100% max all your CPU power. (generally, I encode h.264 using Nvidia encoders if I am decoding on an Nvidia GPU)We do not recommend the use of the old Preload actors in Isadora. This article talks about how to safely use them, but in general, I recommend not using them, there are other ways to manage loading.
If you have a set number of Movies, you might try loading one for each Movie Player (16 movies, 16 movie players) Then change the speed from 1 to zero to stop the video, and back to 1 to play. This should have the effect of keeping the movie loaded, so near-instant playback should be possible. (do not switch the visibility, this has more overhead involved than pause/play).
-
I appreciate your help. The issue is that I have over a hundred clips (ranging from a few seconds long to a minute long). Isadora is pulling these clips at random.
As of right now, the software is unable to play even one of the videos because of the loading issue.
-
- I'd try hap instead of h264.mp4
- My file on the Add-Ons Page might be helpful. Some of the movie Scenes should demonstrate the method @DusX described of having just the next movie ready to go. (Look at the crossfade video Scenes but set the transition time to 0.)
- Out of the box idea: You could:
- Make a single video that is all of your videos stitched together
- Put that video in each of your Movie Players
- Switch the Movie Players to use Timecode
- Record the timecode value for the start of each clip as 'value1' in a Data Array actor and record the length of the clip as 'value 2" in the Data Array.
- Write the Data Array file to disk (so you have a text file with these values)
- Add a Data Array reading that file with its 'value1' output hooked up to the 'position' input of each Movie Player actor
- Use a Shuffle actor to pick different line numbers so you get a random clip that way
- Attach the 'value2' output of the Data Array actor to a Trigger Delay actor that connects to the Shuffle actor so that everytime you get a random clip, it selects and starts a new random clip after the current clip ends.
- This way the video always stays loaded.
Here's an example file (without a video file and without a Data Array file, it just has the actors laid out and connected in the way you'd need them to be).
Best wishes,
Woland
-
Thanks so much @Woland -- I've moving forward with your example file, I created one long video with the 100+ clips/transcoded this video file to hap, and created a txt document with two columns (one for the timestamps where each video starts and one for the length of each video). How do I attach the txt file to the data array actor?
-
Put the text file in the same folder as the Isadora file and then put the name of the text file’s name into th Gate I’ve got connected to the first input of the Data Array actors.
You may find that you’ve not got the text file formatted in the right way for the data array to read it. The format you’ll need is:
timecode1[TAB]length1
timecode2[TAB]length2
Etc
-
The data array actor is now reading the correct number of lines from the txt file but it doesn't appear to be reading the values from the columns: Value 1 shows nothing and Value 2 stays at "0". I tried to format the txt file as you described, but did I mess something up? I've attached a link to the txt file below.
@woland here's a Dropbox link to the text file: https://www.dropbox.com/home?p...
-
@rotrocchia said:
Dropbox link to the text file: https://www.dropbox.com/home?p...
The dropbox link isn't working for me.. but my guess is the file isn't set up correctly as a TAB delimited data file. (like a comma-separated spreadsheet, but with TABS).
You should be able to open it in a spreadsheet software (Excel, OpenOffice Calc etc..), format the data into the correct columns and then export it as a TAB delimited .TXT file. (CALC will allow you to make it a TAB delimited .CSV file.. either will work)