首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAssetWriter / AVAudioPlayer冲突?

AVAssetWriter / AVAudioPlayer冲突?
EN

Stack Overflow用户
提问于 2011-07-23 21:12:41
回答 2查看 710关注 0票数 1

几周前,我发布了一篇关于我在AVAssetWriter:AVAssetWriter Woes中遇到的问题的帖子。

进一步的研究似乎会导致在使用AVAssetWriter与AVAudioPlayer或真正的任何音频系统播放音频时发生冲突。我也和OpenAL试过了。

以下是背景:

使用CVPixelBufferPoolCreatePixelBuffer.

  • Once从图像或图像集向视频写入帧的
  • 可以正常工作,直到调用AVAudioPlayer play为止。
  • 只在设备上发生,而不是sim.
  • 当试图从音频开始播放时从AVAssetWriter创建像素缓冲区时发生错误,在音频突然变为零之前存在的
  • 会发生错误。

您可以在这里下载具有代表性的项目:http://www.mediafire.com/?5k7kqyvtbfdgdgv

注释掉AVAudioPlayer播放,它将在设备上工作。

任何线索都很感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-24 16:43:31

我已经找到了解决这个问题的办法。

如果您想让AVAudioPlayer和AVAssetWriter一起正确运行,您必须有和音频会话类别是“混合的”。

您可以使用一个可以混合的类别,比如AVAudioSessionCategoryAmbient。

但是,我需要使用AVAudioSessionCategoryPlayAndRecord。

通过实现以下操作,可以将任何类别设置为混合:

代码语言:javascript
复制
OSStatus propertySetError = 0;

UInt32 allowMixing = true;

propertySetError = AudioSessionSetProperty (
                       kAudioSessionProperty_OverrideCategoryMixWithOthers,  // 1
                       sizeof (allowMixing),                                 // 2
                       &allowMixing                                          // 3
                   );
票数 0
EN

Stack Overflow用户

发布于 2014-01-19 16:57:39

以上的答案是完整的。它不起作用。代之而行

代码语言:javascript
复制
// Setup to be able to record global sounds (preexisting app sounds)
    NSError *sessionError = nil;
    if ([[AVAudioSession sharedInstance] respondsToSelector:@selector(setCategory:withOptions:error:)])
        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDuckOthers error:&sessionError];
    else
        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];

    // Set the audio session to be active
    [[AVAudioSession sharedInstance] setActive:YES error:&sessionError];

//then call your asset writer 
movieWriter = [[AVAssetWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(480.0, 640.0)];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6803337

复制
相关文章

相似问题

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