Skip to content

Commit

Permalink
Merge pull request rs#12 from Club15CC/master
Browse files Browse the repository at this point in the history
Fix to handle no audio track
  • Loading branch information
Olivier Poitrey committed Jul 18, 2014
2 parents f487912 + 6d05d7d commit 7ff00a4
Showing 1 changed file with 30 additions and 20 deletions.
50 changes: 30 additions & 20 deletions SDAVAssetExportSession.m
Original file line number Diff line number Diff line change
Expand Up @@ -152,18 +152,23 @@ - (void)exportAsynchronouslyWithCompletionHandler:(void (^)())handler
{
[self.reader addOutput:self.audioOutput];
}
} else {
// Just in case this gets reused
self.audioOutput = nil;
}

//
// Audio input
//
self.audioInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio outputSettings:self.audioSettings];
self.audioInput.expectsMediaDataInRealTime = NO;
if ([self.writer canAddInput:self.audioInput])
{
[self.writer addInput:self.audioInput];
if (self.audioOutput) {
self.audioInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio outputSettings:self.audioSettings];
self.audioInput.expectsMediaDataInRealTime = NO;
if ([self.writer canAddInput:self.audioInput])
{
[self.writer addInput:self.audioInput];
}
}

[self.writer startWriting];
[self.reader startReading];
[self.writer startSessionAtSourceTime:CMTimeMake(0, ((AVAssetTrack *)videoTracks[0]).naturalTimeScale)];
Expand All @@ -186,20 +191,25 @@ - (void)exportAsynchronouslyWithCompletionHandler:(void (^)())handler
}
}
}];
[self.audioInput requestMediaDataWhenReadyOnQueue:self.inputQueue usingBlock:^
{
if (![wself encodeReadySamplesFromOutput:wself.audioOutput toInput:wself.audioInput])
{
@synchronized(wself)
{
audioCompleted = YES;
if (videoCompleted)
{
[wself finish];
}
}
}
}];

if (!self.audioOutput) {
audioCompleted = YES;
} else {
[self.audioInput requestMediaDataWhenReadyOnQueue:self.inputQueue usingBlock:^
{
if (![wself encodeReadySamplesFromOutput:wself.audioOutput toInput:wself.audioInput])
{
@synchronized(wself)
{
audioCompleted = YES;
if (videoCompleted)
{
[wself finish];
}
}
}
}];
}
}

- (BOOL)encodeReadySamplesFromOutput:(AVAssetReaderOutput *)output toInput:(AVAssetWriterInput *)input
Expand Down

0 comments on commit 7ff00a4

Please sign in to comment.