PDA

View Full Version : QuickTime / QTKit / AV Foundation Frameworks




larswik
Dec 4, 2011, 08:39 PM
Last week I ventured into working and learning how to use video in Objective C. Someone made a comment about learning Quicktime framework for historical proposes.

I am guessing that framework is on it's way out so I was using QTKit framework. Tonight I was going use use the method
movieWithQuickTimeMovie:disposeWhenDone:error:
But in reading the docs it said
This method cannot be called by 64-bit applications.

Is QTKit also on the way out? I want to make sure since I am starting to learn this stuff I am starting with the right stuff.

Is it best to just learn AV Foundation framework and forget the other 2? Will AV Foundations contain pretty much everything the QT frameworks had for working with video?



foidulus
Dec 4, 2011, 11:50 PM
Last week I ventured into working and learning how to use video in Objective C. Someone made a comment about learning Quicktime framework for historical proposes.

I am guessing that framework is on it's way out so I was using QTKit framework. Tonight I was going use use the method
movieWithQuickTimeMovie:disposeWhenDone:error:
But in reading the docs it said


Is QTKit also on the way out? I want to make sure since I am starting to learn this stuff I am starting with the right stuff.

Is it best to just learn AV Foundation framework and forget the other 2? Will AV Foundations contain pretty much everything the QT frameworks had for working with video?

It really depends on what your goals are. QTKit is NOT on it's way out, the method you are talking about was intended to be used as a bridge between Quicktime and QTKit as QTKit wasn't(and still isn't) a full replacement for Quicktime....

That being said, ultimately it looks like Apple is going a different direction. QTKit is mostly used for playing media files, it has some VERY rudimentary editing tools(cutting, splicing, that kind of thing), but thats it. There original intention seemed to have been to use QTKit as a replacement for everything the old Quicktime API did, but for whatever reason they abandoned that idea.

Basically if all you need is a media player for your application, then use QTKit as it's dead simple to use, if you need any sort of advanced editing, you are going to have to use the AVFoundation toolkit.

larswik
Dec 5, 2011, 03:13 AM
That explains a lot. Since there always seems to be new things coming out all the time it is endless learning. I wanted to stop focusing on stuff that is going away and focus on stuff to stay, for a while.

Thanks for the detailed explanation.

xStep
Dec 5, 2011, 06:32 PM
I wanted to stop focusing on stuff that is going away and focus on stuff to stay, for a while.

That sentence says it all. Go with AV Foundation.

I know QTKit had some updates for 10.7, but I do remember seeing a sentence in Apple documentation that said if your app didn't need to run on an older OS and is a new venture, then use the new AV Foundation. It is the future.

I've searched for the line but can't find it.

That's my 2 cents, again. ;)

foidulus
Dec 5, 2011, 06:49 PM
That sentence says it all. Go with AV Foundation.

I know QTKit had some updates for 10.7, but I do remember seeing a sentence in Apple documentation that said if your app didn't need to run on an older OS and is a new venture, then use the new AV Foundation. It is the future.

I've searched for the line but can't find it.

That's my 2 cents, again. ;)

QTKit isn't marked as deprecated, and I doubt it will ever go away any time soon, however it looks like Apple will not be adding any new functionality to it.

kainjow
Dec 5, 2011, 07:27 PM
QTKit isn't marked as deprecated, and I doubt it will ever go away any time soon, however it looks like Apple will not be adding any new functionality to it.

QTKit is the new Carbon? ;)

xStep
Dec 5, 2011, 11:20 PM
This isn't the line I mentioned but in Mac OS X Technology Overview (http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/OSX_Technology_Overview/GraphicsTechnologies/GraphicsTechnologies.html), under the 'Video Technologies' heading there is this line; "AV Foundation. This framework is the primary technology in Mac OS X for playing, recording, reading, encoding, writing, and editing audiovisual media.". I emphasized the primary part with italics.

So as kainjow mentioned, QTKit is probably in a Carbon state. It might be around a while, but it is the dead end framework. I think foidulus' comment supports this.

As mentioned in the link above, "The AV Foundation framework for Mac OS X is almost identical to the same framework for iOS". This is a bonus as what you learn in one environment is likely directly transferable to the other. That is a good investment in your learning curve.

larswik
Dec 6, 2011, 02:26 AM
Sounds like it. I am only using the QTMovie class in the QTKit with a few methods. Maybe it would be a good excessive to find those in the AV Foundation instead of the QTKit. I have not used anything in the AV Foundation as of yet.

Thanks!

foidulus
Dec 6, 2011, 07:28 AM
QTKit is the new Carbon? ;)

Actually you are more right than you would think, QTKit may not have started out with this goal in mind, but it essentially is a stop-gap that allows people to use a lot of their old Quicktime code while enabling it to run on the "newer" platforms.... sound familiar? :p

subsonix
Dec 6, 2011, 07:32 AM
One wonders what is the replacement for the 32 bit Quicktime api's, surely AVFoundation is some kind of wrapper around lower level api's no?

Edit: Is that core media then perhaps?

xStep
Dec 6, 2011, 01:52 PM
One wonders what is the replacement for the 32 bit Quicktime api's, surely AVFoundation is some kind of wrapper around lower level api's no?

Edit: Is that core media then perhaps?

The graphic on the AV Foundation Programming Guide (http://developer.apple.com/library/mac/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html) should explain some of it. Those Core frame works reach to lower levels.


By the way, I found the quote I was looking for in What's New In Mac OS X (http://developer.apple.com/library/mac/#releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_7.html%23//apple_ref/doc/uid/TP40010355-SW5) for Lion under the 'Framework-Level Features' heading.

"AV Foundation is the recommended API for all new development involving time-based audiovisual media, whether you are examining, creating, editing, manipulating, or reencoding audiovisual data. AV Foundation is also recommended for transitioning existing applications that were based on QuickTime or QTKit."

subsonix
Dec 6, 2011, 02:03 PM
The graphic on the AV Foundation Programming Guide (http://developer.apple.com/library/mac/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html) should explain some of it. Those Core frame works reach to lower levels.


By the way, I found the quote I was looking for in What's New In Mac OS X (http://developer.apple.com/library/mac/#releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_7.html%23//apple_ref/doc/uid/TP40010355-SW5) for Lion under the 'Framework-Level Features' heading.

"AV Foundation is the recommended API for all new development involving time-based audiovisual media, whether you are examining, creating, editing, manipulating, or reencoding audiovisual data. AV Foundation is also recommended for transitioning existing applications that were based on QuickTime or QTKit."

Yes, but it's recommended because it's an easier more high level framework. AVFoundation was only available on iOS up until Lion, I have been longing for it to arrive to OS X to get a higher level framework to work with audio when possible. Core Audio and Core Animation is not related to Quicktime is it, which leaves Core Media but can you do everything that was possible with Quicktime with AVFoundation and Core Media? I guess that is my question.

xStep
Dec 6, 2011, 02:21 PM
Yes, but it's recommended because it's an easier more high level framework. AVFoundation was only available on iOS up until Lion, I have been longing for it to arrive to OS X to get a higher level framework to work with audio when possible. Core Audio and Core Animation is not related to Quicktime is it, which leaves Core Media but can you do everything that was possible with Quicktime with AVFoundation and Core Media? I guess that is my question.

Nowhere does it say that it is recommended because it is easier.

I'm not familiar enough with all the tech to answer your question.

subsonix
Dec 6, 2011, 02:43 PM
Nowhere does it say that it is recommended because it is easier.


Yes, but that's the case. Not everything you can do in Core Audio is possible in AVFoundation, it's an Objective-C umbrella framework which makes it easier to work with audio (among other things). Obviously there's more to AVFoundation than audio, but before AVFoundation the alternatives you had was Core Audio or NSSound, which is as far between as you can get in terms of abstraction. That alone should tell you that it can't be recommended unless you know what you want to achieve.

From the guide:


AV Foundation is one of several frameworks that you can use to play and create time-based audiovisual media.

You should typically use the highest-level abstraction available that allows you to perform the tasks you want.

xStep
Dec 6, 2011, 06:43 PM
The recommendation in that quote isn't because it is easier, it is because AV Foundation is the future high level framework of the future.

Apple always recommends that you use the highest level framework when it makes sense for your project. That is a different from the quote.

We can agree to disagree.

foidulus
Dec 7, 2011, 01:31 AM
The recommendation in that quote isn't because it is easier, it is because AV Foundation is the future high level framework of the future.

Apple always recommends that you use the highest level framework when it makes sense for your project. That is a different from the quote.

We can agree to disagree.

Also QTKit is only easier if you aren't doing a whole lot of multi-threading. If you aren't uber careful with how you handle threading(namely operating on QTMovie objects on threads other than the main thread), it is really easy to crash a QTKit application, and trying to trace down the error can be incredibly frustrating.

subsonix
Dec 7, 2011, 02:54 AM
The recommendation in that quote isn't because it is easier, it is because AV Foundation is the future high level framework of the future.

Apple always recommends that you use the highest level framework when it makes sense for your project. That is a different from the quote.

We can agree to disagree.

I don't know why you choose to nitpick about this, it's an inherent consequence of it being high level. What you say about the future framework of the future makes perfect sense if you contrast it with quicktime, but AV Foundation covers more than quicktime.

xStep
Dec 7, 2011, 03:42 AM
I don't know why you choose to nitpick about this, it's an inherent consequence of it being high level. What you say about the future framework of the future makes perfect sense if you contrast it with quicktime, but AV Foundation covers more than quicktime.

I'm done with this line of the conversation as it will just sink further.

subsonix
Dec 7, 2011, 04:14 AM
Great, so does anyone have an answer to my actual question? Does AV Foundation cover 100% of what quicktime and QTKit can do.

foidulus
Dec 7, 2011, 07:40 AM
Great, so does anyone have an answer to my actual question? Does AV Foundation cover 100% of what quicktime and QTKit can do.

Unless you absolutely have to link with some legacy Quicktime code(in which case you couldn't go 64 bit anyway), it does 1000% of what you need, use it.

larswik
Dec 7, 2011, 03:43 PM
I guess this answered my original question of where I should focus my time. IF the QT.framework is gone or soon to be gone. QTKit framework is still good but looks like it will go away at some point then AV Foundations would be a good place to focus my energy.

I am wondering what the difference in a High vs. Low level framework means? is it harder to use a High level then a low level?

foidulus
Dec 7, 2011, 06:44 PM
I guess this answered my original question of where I should focus my time. IF the QT.framework is gone or soon to be gone. QTKit framework is still good but looks like it will go away at some point then AV Foundations would be a good place to focus my energy.

I am wondering what the difference in a High vs. Low level framework means? is it harder to use a High level then a low level?

There is no precise definition, but in general, the closer to the hardware you get, the "lower-level" the API is. Also in general higher level APIs tend to be easier to use than lower-level APIs, but it really depends on how well the API is designed.