Capturing Audio and Video to the Same File
So, it’s possible to
capture audio and video in isolation. With
QuickTime’s editing API, it would be possible to put
them in the same movie by adding each as a separate track (see Chapter 3). But wouldn’t it be nice
to just capture both audio and video into the same file at once,
presumably keeping them in sync along the way? Fortunately,
SequenceGrabber
supports this, too.
How do I do that?
Starting with the previous lab’s video-only example,
you just need to add an
SGSoundChannel
in the setUpVideoGrab( )
method:
soundChannel = new SGSoundChannel (grabber);
The setUsage( )
and prepare()
commands are identical to what was shown in the
audio-only and video-only labs:
// prepare and start previewing videoChannel.setUsage (StdQTConstants.seqGrabRecord); soundChannel.setUsage (StdQTConstants.seqGrabPreview | StdQTConstants.seqGrabRecord); soundChannel.setVolume (0.0f); grabber.prepare(false, true); grabber.startPreview( );
Beyond that, everything is the same as in the video-only case.
Because the setDataOutput()
call is made on the SequenceGrabber
—not just
on an individual channel—the grabber writes data from all the
channels it’s capturing into the same file, called
audiovideograb.mov in this case.
Note
Run this example with ant run-ch06-audiovideocapturetodisk.
What just happened?
For once, the SequenceGrabber
APIs behave pretty much as you might expect them to. With no obvious prohibition on creating both audio and video channels from the same ...
Get QuickTime for Java: A Developer's Notebook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.