AVFoundation没有长视频的音轨

时间:2014-11-28 04:20:24

标签: ios iphone avfoundation

使用AVFoundation - (void)startRecordingToOutputFileURL:(NSURL*)outputFileURL recordingDelegate:(id<AVCaptureFileOutputRecordingDelegate>)delegate;方法录制视频时,如果视频持续时间超过12秒,则输出文件中没有音轨。如果视频持续时间少于12秒,一切正常......

收到输出文件URL的代理是:

- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error
{   
    NSLog(@"AUDIO %@", [[AVAsset assetWithURL:outputFileURL] tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]); //App crashes here...

    NSLog(@"VIDEO %@", [[AVAsset assetWithURL:outputFileURL] tracksWithMediaType:AVMediaTypeVideo]);
}

我的应用因超过12秒的视频崩溃而导致此错误:*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'

3 个答案:

答案 0 :(得分:4)

我的猜测是AVCaptureMovieFileOutput比mp4更好地支持QuickTime容器(.qt,.mov),尽管它是行业标准。例如,当将片段中的电影文件写入.mp4时,片段表(样本表)可能会发生某种情况。

因此,您可以将文件格式更改为.mov,或者将文件转换为片段。看到这个问题: ios-8-ipad-avcapturemoviefileoutput-drops-loses-never-gets-audio-track-after

答案 1 :(得分:0)

刚刚将录制视频的路径的扩展名更改为来自mp4的mov并且有效...

答案 2 :(得分:0)

花了将近1天的时间来解决此问题,这是此问题的完美解决方案...

iOS 8 iPad AVCaptureMovieFileOutput drops / loses / never gets audio track after 13 - 14 seconds of recording的帮助下...

只需添加此行

avCaptureMovieFileOutput.movieFragmentInterval = kCMTimeInvalid