AVFoundation 没有长视频的音轨

nr5*_*nr5 2 iphone avfoundation ios

使用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]);
}
Run Code Online (Sandbox Code Playgroud)

我的应用因长度超过 12 秒的视频而崩溃,并出现以下错误:*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'

Hen*_*olm 5

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

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