3

我正在尝试创建一个 iOS 应用程序,它可以录制音频和视频,同时将音频输出到扬声器。

为了进行录制和预览,我使用AVCaptureSession, an AVCaptureConnectioneach 用于视频和音频, an AVAssetWriterInputeach 用于视频和音频。我基本上是通过遵循 RosyWriter 示例代码来实现的。

在以这种方式设置录音之前,我AVAudioPlayer用来播放音频。

现在,如果我正在捕获(甚至没有录制,只是捕获以供预览),并尝试使用AVAudioPlayer,我在课堂captureOutput上的回调将AVCaptureAudioDataOutputSampleBufferDelegate停止被调用。

有解决方法吗?

我应该使用另一种较低级别的服务来播放不会停止捕获的音频吗?

麦克。

4

1 回答 1

0

您首先设置AVAudioSession及其类别。例如在viewDidLoad方法中,

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord  withOptions:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];

因此,您可以播放 BGM

    self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:music_url error:nil];
    [self.player setDelegate:self];
    [self.player play];

并录制电影

    self.captureSession = [[AVCaptureSession alloc] init];
    /* ... addInput AVCaptureDeviceInput AVMediaTypeVideo & AVMediaTypeAudio */
    /* ... addOutput */
    [self.captureSession startRunning];
    AVCaptureMovieFileOutput *m_captureFileOutput =[self.captureSession.outputs objectAtIndex:0];
    [m_captureFileOutput startRecordingToOutputFileURL:saveMovieURL recordingDelegate:self];
于 2014-04-18T11:40:37.260 回答