首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在AVComposition IOS7中使用AVPlayerItemVideoOutput文件

无法在AVComposition IOS7中使用AVPlayerItemVideoOutput文件
EN

Stack Overflow用户
提问于 2013-09-23 03:13:03
回答 1查看 709关注 0票数 0

我在IOS6中有一个完全正常工作的应用程序,它在使用AVComposition时中断了IOS7。

这就是问题所在:在前面的视图控制器中,我使用AVPlayerItemVideoOutput & AVAssetWriterInputPixelBufferAdaptor捕获用户屏幕以生成视频输出文件。在我当前视图控制器中,我将生成的视频文件添加到AVComposition中,以便在该文件和一些音频之间生成视频合成。在IOS6中,这个过程工作得很好,AVExportSession完成了。在IOS7中,导出过程不会完成(从不调用finish处理程序,状态始终为AVAssetExportSessionStatusExporting)。

下面是我的伪代码:

代码语言:javascript
复制
    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:self.metaInfo.videoCaptureFile options:nil];

    AVMutableComposition* mixComposition = [[AVMutableComposition alloc] init];


    AVMutableCompositionTrack *track = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
    [track insertTimeRange:CMTimeRangeMake(kCMTimeZero, firstAsset.duration) ofTrack:[[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error:&error];

    AVMutableCompositionTrack *audioTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
    [audioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, secondAsset.duration) ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] atTime:kCMTimeZero error:&error];


    AVMutableVideoCompositionInstruction * MainInstruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];


  /// Code for processing the composition

  AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:mixComposition presetName:AVAssetExportPreset640x480];


  // Code for setting up exporter

    [exporter exportAsynchronouslyWithCompletionHandler:^
     {
         dispatch_async(dispatch_get_main_queue(), ^{
             [self exportDidFinished:exporter];
         });
     }];

在调试我的代码后,问题归结为正在使用的生成的视频文件。如果我将asset更改为硬编码文件,导出器将完成。有趣的是,从AVPlayerItemVideoOutput生成的视频文件可以在MPMoviePlayerViewController中正常播放。IOS7中的AVPlayerItemVideoOutputAVAssetWriterInputPixelBufferAdaptor是否发生了某些更改,导致无法在合成中使用输出文件?我需要在组合中添加额外的规格吗?它必须处理不同的帧率吗?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2013-10-02 21:40:27

这可能是特定于您的测试设备的低存储空间问题,其中AVAssetExportSession无法将最终电影资产(或某些中间数据)写入磁盘。我会检查其他设备上是否存在此问题。我在iPhone 4 (iOS 7)上遇到了同样的问题,但在iPad 2 (iOS 7)上使用通用构建时就没有了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18947745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档