Currently, video processing is on a huge transition on the Mac. QuickTime is very old, but also large and powerful, so it has undergone a gradual replacement process over the last 5 years or so.
However, QTKit is a subset of QuickTime (capture, playback, format conversion and basic video editing) that is supported in the future. Inherited QuickTime APIs still exist at the moment and are likely to remain at least until its core functions are available elsewhere, but are only 32-bit. For some of the footage involved, you may need to use it locally.
IOS is currently ahead of the Mac because it can start from scratch with the AV Foundation . The future of Mac media files is likely to be either directly AV Foundation (with QTKit, which is a light overlay), or a QTKit extension that looks very similar.
For audio, there is Core Audio, which is on Mac and iOS and will not leave soon. He is quite powerful, but somewhat dumb. Fortunately, online support is very good; a mailing list is an important resource.
For filters and frame-level processing, you have Core Video , as mentioned above, as well as Core Image . For motion graphics, Quartz Composer , which includes a graphical editor and plugin architecture to add your own patches. For programmatic procedural animation and easily mixing rendering models (OpenGL, Quartz, video, etc.) There is Core Animation .
In addition to all of these, of course, there is no reason why you cannot use open source libraries where the embedded material does not do what you want.
To post your comment below:
In QuickTime (and QTKit), individual data types, such as audio and video, are represented as tracks. It may not be immediately clear that QuickTime can open audio as well as video file formats. A common way to combine audio and video:
- Create a
QTMovie
with your video file. - Create a
QTMovie
with your audio file. - Take the
QTTrack
object representing the audio and add it to QTMovie
with the video in it. - Flatten the film, so it not only contains a link to another film, but actually contains audio data.
- Burn movie to disc.
Here is an example from Blender . You will see how the A / V multiplexer runs in end_qt
. It also uses Core Audio there ( AudioConverter*
). (There's some kind of classic QuickTime export code in quicktime_export.c
, but it doesn't seem to sound.)