|
Movie Loader & possible workaroundRight I realise this has been discussed before but the movie loader patch in Quartz Composer really under performs. I have been testing an automated playlist composition on a mac mini, the movies play fine in Quicktime but stutter a small amount in the quartz composer comp. After reading loads of posts all over the place I have discovered that using spatially compressed files like using photo jpeg compression resolves the problem, I thought I would post this on here as it might help people out to know this. What I was wondering is what is the most efficient spatially compressed quicktime codec as storing HD files in photo jpeg codec would take up a lot of space. The other issue is whether any more thought has been put into creating a kineme movie loader patch as it would be very very useful (for me anyway). Cheers Steve
|
I'm agree with you, there is a geant hole that perpetuate in QC about Video tools/options/input/output... No multi-screen without tricks, no multi-camera input, poor and bad video files managing and playing abilities... Kineme's incredible programmers has filled a lot of this gaps ! But for sure we need now a "Video Tools" as we have a wonderful "Audio Tools" that increase QC abilities !
In fact,i think if Kineme's Patches have been added (or buy) "officially" by this software's Developers, Apple has to announce a upgrade like "Quartz Composer 4 or 5" for sure !
Many of us wait for a Video improvement. Some want to record and save video stream out of the composition, some want to use more than one camera input, some want to manage video buffer to do hard computing videos manipulations, some want to have many output, a screen manager, some want to use non official input hardware, some want to stream, record, mix in real time... We need a solid "Video Tools" bundle of patches for sure.
But you know what, we stay very silent and sober on the subjet ! Why ? Because, the few Kineme's real coders (many of us are just addicted user !) have done that: http://kineme.net/QuartzComposerPatches
It give me a complex... Anyone is active on many feature request ! Let's start a "Video Tools" request. I will follow you for sure, but i can start it (I FILL COMPLEXED) i'm hired in about 3 or 4 feature projects... ;)
hey, i've been making an app based on the qc performer example, and as a by-product i think i have largely the code needed to make a start on a more vj-friendly movie player. it would be like the existing movie player in async mode, so it effectively plays the video to itself in the background and passes the current image, so temporally compressed videos and ones with sound are fine, but would have rate control and anything else we can hack in.
can't promise it in the next week tho'
toby
Thats sounds great Toby, the video buffering sounds great and really useful. As I to have no coding skills am not hassling Kineme for a new patch as I realise there are a lot of requests for other things I just wanted to flag it up again. Cheers Steve
you're so absolutely right tob'. the most obvious way to have a smooth playback of video file in QC ... is to skip the QC part, load and decompress programatically the foo then pass it to QC as a published image. I would recommend Ecume des Jours' modification of the above mentionned QC performer as an extra example, as he(she?) already coded movie banks. and of course you know that i would be deeply interested in such a piece of code ready to glue in ...
as a sidenote, having a QC renderer getting the job done, instead of a QCview, also helps the visualist in his quest for the perfectly smooth footage.
just to be clear, we're talking about a qc patch that i would expect to have essentially the same code and therefore the same performance inside it as the existing movieloader patch when in async mode. the advantage is that we can then hack in more control, such as rate and (the biggie for me) play once / loop toggle.
if you use qc performer, its essentially the same code but outside of the qc renderer, and that doesn't buy you any extra performance per se. what it does mean is you can do other stuff on the side, for example loading and prerolling other videos and only switching them in when they're playing, but now we're talking about rolling our own vj app. for which in the real world i'd wait for v002 to be released or work from eric / ecume du jour's modded performer.
btw - i hadn't actually inspected the movie playing code for that, i came across it only as an example of remote control useage. i now have the suspicion i should, very much so. we'll see.
I started working on an async movie loader plugin last night. Im pretty close to getting it working. Where should I put it up? I have a private SVN for my v002 stuff, but, honestly, at this point, im tempted to take what I have public and try and rally some troops to help work on it, providing we have a shared vision of what the result should be...
so its basically working. It has some flickering issues due to how QT caches textures and QC wants a new clean one every frame. ill see what I can do to minimize that. Otherwise it seems fast, lightweight and basically possible to do what we want.
I dont think there will be a 'time mode' capability for it, but right now I have playhead position set between 0 - 1.0, volume, a string for the movie path, and thats it.
There is possibilities for other controls, like de-interlace support, High Quality flag and the like...
Hello
here is a link to a working QT Movie Player replacement plugin, which is essentially async mode + extra controls and output. This is only 1 day old, will be buggy, but will be worked on by myself and Chris.
http://abstrakt.vade.info/ILOVETHEQCLIST/v002%20MoviePlayer.zip
It seems plenty responsive, and isnt truly threaded/async just yet. Much more fun to be had...
Good work!
How about the ability to do some kind of Frame-Blending, to smooth-out slowed-down or speeded-up playback?
I just thought of it as it's something someone else mentioned in another thread.
a|x
its on my to do. Ive implemented frame blending in Jitter before. It requires a bit more work here, but should be possible.
vade this is a really good plugin - i think we need this a long time ago :)
is that possible to add a speed up function to the plugin?
Excellent! That'll make some people very happy. Now to persuade the Vidvox guys to implement something similar in VDMX.
a|x
I'm not sure about this version, but last night vade and I made some small tweaks to get it to play backwards and forwards at arbitrary rates (>1, <-1). So it's possible, and not difficult.
ohhhh, this is the best news of the day :)
once the SVN is up, ill move my source code on it, so changes are reflected and can be downloaded immediately. Rate controls and whatnot are totally possible.
HI guys do I need xcode 3.1 to get this working, I tried to build this (in xcode 3.0) and add it to the the patches folder but I get an error when launch the example file. Cheers Steve
What's the error? There are a few problems with it currently, but if it compiles with xcode 3.0 then you don't need 3.1 (GLTools, in contrast, requires 3.1, and won't compile without it).
After building the plugin and putting it in the quartz composer patches folder (I also put it in the plugin folder) and then running the example I get the error below. Also when I look at the package contents of the plugin I just get a plist thats all. Steve
I'm guessing it didn't build properly then. try xcode 3.1.
also, this is an official api plugin (at this point), so it goes in the PlugIns folder, not the patches one.
Did you use build and copy? If not, its saying it cant find the plugin ;)
"(null) : Patch with name "QCPlugInPatch:v002MoviePlayerPlugIn" is missing"
So use build and copy, and not just build. Or copy the plugin manually to your QCPlugins folder.
Hi Guys right downloaded xcode 3.1 thought it was going well but it wouldn't build I got the following errors. I hope I am no being to much of a pain. Cheers Steve
...in v3 =]
toby
QTKit is a steaming pile of crap. I take every opportunity to announce how lame it is, and this is one such opportunity.
QuickTime is also lame. But understandably, given the legacy and history it has.
Anyway: The problem is you're trying to build a 64-bit version, but qtkit and quicktime don't handle that particularly well. uncheck the box in the project settings, or change it from the Release build to something else (Debug or Development or something).
Chris is so right on this one.... on both counts.
To go into more detail on getting this working with the errors you are having...
You want the tab in the upper left to have SDK10.5, etc... choose "Debug" as the active configuration.
Then go into "Project" on the upper tool bar, scroll down to "edit project settings".
Where it says "Architectures", select "32-bit Universal".
Then "build".
That should work for you.
Make sure to install it in plug-ins, and erase any of the previous builds you did.
BTW... I love that the one control is labelled "palindrome".
I am loving the effect of attaching lfo's etc to the playhead, and varying amplitude with interpolate with mirrored loop... changing the period over time as well.
Lol... I think I am going to modify this as a macro with input and output, call it "scrub", and make it a virtual patch.
Great idea! And it is looking good too.
Did it... oh.... Shows how much I actually use it
a|x
Does this only work with certain codecs? I've just tried it with an mp4, and get no output. Maybe it doesn't work with keyframe-based compression types...?
I know mpeg codecs aren't generally recommended for VJ-type use, but I thought I'd give it a go, as I only have mp4 clips on my laptop at the moment.
a|x
Weird. I just saved and re-opened my QTZ with the v002 MoviePlayer plugin referencing an mp4 movie, and this time it worked.
Feature Request: Ability to speed the movie up as well as slow it down. 0.5 should be normal speed, and 1 should be, say, 4x
Very impressive, though.
a|x
Ability to speed up/down movies well, but a greater value then 4x would be greater for long movies...
but the rate scale might need to be exponential, rather than linear, otherwise the movie's 'real' speed would be way down at the bottom of the slider.
a|x
because for slow down /4 speed strong enough.
yeah, sometimes it does that for me too -- not entirely sure why. shrugs
Rather than have weird arbitrary mappings of Input X = Speed Y, why not just make the rate a scale (so that Rate = 0 means Speed = 0, Rate = 3.1415926 means Speed = 3.1415926, Rate = -0.5 means Speed = -0.5, etc)? To me, that seems much more intuitive and versatile than oddly remapping numbers (with or without some kind of exponential function or anything)
this is the simple way - and the simple way is better now :)
thxxx could someone please post a compiled version of this plug ? (i just don't have xc 3.1 and it is a lot of MB to download...)
ill post a compiled version with rate adjustments a bit later today, with the project. Ill also try an mp4 / mpeg / etc movie types, and see if I cant figure out why things are not 100% happy all the time.
Thanks,
Or actually, just get rid of the 'rate' control altogether, and drive the thing completely from the playhead/timebase input. This eliminates the need for the 'loop mode' parameter also, since you could just connect a triangle-wave LFO to the position control for pingpong looping.
a|x
driving directly from the timebase requires a seek every frame then, which is unbearably expensive. So, while intuitive and straightforward, I don't think this is a good idea in this particular case...
That would remove the asynchronous capabilities of the patch, make it slow, and essentially turn of any pre-rolling/caching quicktime does, and kill FPS.
You might as well use the built in patch at that point. - 10 to 10 is more than anyone should ever need, and unless you have insanely fast disks, I dont think there is a point to much more.
And, if you need it, just download the project and change the min/max in the code :) ...
i discovered this problem while developing CoGe - async mode was better, but i need to scale the speed with an external timebase: this mode is punch out frame rate.
Hmmm....
I was achieving a pretty effective "speed up" by simply driving the playhead with an interpolation patch on linear, adjusting the "period" as desired, and leaving the rate set slow (didn't really bother to see if I would get better results at any given rate). It works really nice on "re-render" in Quartz Crystal. Set the interpolate on exponential, with loop/reverse and you can get some great slow video that morphs into Benny Hill, and then into that great backwards "Strawberry Fields" looking effect.
All the same, I think the idea of having the rate make it able to go faster than 1x is very cool...
Well, by 'speed up', we were initially discussing performance of QT playback (how much CPU is used). How efficient async mode vs normal mode is in QC. This Plugin is Async mode + extra controls and outputs. This should be very high performance.
Speed up, meaning rate via external time base with the built in Movie Player 'patch', is possible that way, but, trust me, it will be more efficient to use this patch, with a rate control, as it will allow Quicktime to do pre-fetching and buffering. Using the external time base in Quartz Composer doesnt let QT prefetch frames, thus 'just in time decompression' and worse performance.
Ill try and post an updated Plugin and Project soon. Ive had a crrraaazzzzyyyy day :)
Wow, I am having a laugh re-reading the post and the way that I misread it. Oh well.
Note, again, this is a work in progress
XCode project: http://abstrakt.vade.info/ILOVETHEQCLIST/v002%20MoviePlayerProject.zip
Compiled universal 32 bit plugin: http://abstrakt.vade.info/ILOVETHEQCLIST/v002%20MoviePlayer.plugin.zip
Let me know :)
thank you so much. you're a hero.
please note that the audio rate gets reseted to 1 when switching to/from fullscreen.
incredibly awesomely overkill !
4 SD (720X576) videos with photojpeg codec and still 50i/s( on my old PPC 2x2Ghz...:) i can say bravo ! really good job ! you are a superstar :)
Works great - you are a superhero :)
one simple thing:
obviously, the goal of this plugin is to focus on speed and accuracy. However, i'm facing a little problem:
the playhead is set by default to 0, which is the expected behaviour, since you would typically want your footage to start from the beginning.
Now imagine i want to restart the footage during the loop: i would want the playhead to be set again to 0. But since the value is not changing, i just can't reset the movie position to the start. Note that i can, for instance, set the playhead to something very close to zero ( then alternatively switch back to 0 again), but the minimal value that can be entered in QC is 1.10e-6. While in short loops this might not be noticeable, on longer footage this could lead to a problem.
So simply: how to restart from the exact beginning some footage during a loop ?
hey vade, are you interested in crash-logs ? in some situations (unidentified), the plug doesn't display images (but sound sometimes) or crashes QC.
Definitely. Id also want to know what you were doing, and what kind of media you were playing that caused the issue.
Thanks,
there's a qt function that can do this, buts its c not cocoa.
http://developer.apple.com/documentation/QuickTime/Reference/QTRef_Movie...
or, you can set the playhead to 0 ;)
i can't, since the playhead is 0 by default, when i set the playhead to zero, the value is not changing, so the movie doesn't restart. (see previous post). nevermind.... i'll trick it
Hrm, that works for me...
Hi Vade.
So pleased to see this patch, but just a quick note on the performance.
When running 1080i 25 fps prores it renders at 10 fps which is similar to the original movie loader. But the movie loader has the ability to disable color correction which makes it speed up to 30 fps.
Is this something you can implement as well?
Boya
Hello. Ive added quite a few updates to the movie player source code.
http://002.vade.info/?p=20 has the details for beta 2 and a download. Enjoy!
Hi does anyone know where I can download vade's new movie player patch. When I download the new beta from vade's site and fire up quicktime I only have the old beta. Anyone have any ideas?
Steve
here: http://002.vade.info/?page_id=13