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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access