AVFoundation没有长视频的音轨

问题描述 投票:2回答:3

使用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'

ios iphone avfoundation
3个回答
4
投票

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

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


0
投票

刚刚将录制视频的路径的扩展名更改为来自mp4的mov并且工作正常...


0
投票

花了差不多1天来解决这个问题,这是完美的解决方案......

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

只需添加此行即可

avCaptureMovieFileOutput.movieFragmentInterval = kCMTimeInvalid
© www.soinside.com 2019 - 2024. All rights reserved.