只有背景音乐的AVCaptureSession
问题描述:
我需要做这样的事情。 我的应用程序使用AVCapturesession进行录制,但它应该能够播放带有我玩过的背景音乐的实时Feed。只有背景音乐的AVCaptureSession
记住我能够播放背景音乐与AVCapturesession,但问题是,它也涉及到周围环境的声音。
这里是audiosession类我使用
AudioSessionInitialize(NULL, NULL, NULL, self);
// //set the audio category
UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(audioCategory), &audioCategory);
// mix with others!! this allows using AVCaptureSession and AusioSession simultaniously
UInt32 doSetProperty = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(doSetProperty), &doSetProperty);
AudioSessionSetActive(YES);
我已经尝试了类的几乎所有的组合,但我没能获得所需的输出, SoloAmbient和环境不播放声音都没有。
我也尝试禁用AVCapturesession的audioinput,但它没有帮助。
答
您必须移除表示麦克风的AVCaptureInput设备。
AVCaptureSession *currentSession = self.currentSession;
for(AVCaptureInput *input in currentSession.inputs) {
for (AVCaptureInputPort *port in input.ports) {
if ([[port mediaType] isEqual:AVMediaTypeAudio]) {
[currentSession removeInput:input];
break;
}
}
}
现在设置您的音频作为这样的事情: 您可以通过循环AVCaptureSession实例,做这样的事情做到这一点
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];
NSError *activationError = nil;
BOOL success = [session setActive: YES error: &activationError];
SWIFT 3
let currentSession = self.currentSession
for input in currentSession.inputs as! [AVCaptureInput] {
for port in input.ports as! [AVCaptureInputPort] {
if port.mediaType == AVMediaTypeAudio {
currentSession.removeInput(input)
break
}
}
}
do {
let session = AVAudioSession.sharedInstance()
try session.setCategory(AVAudioSessionCategoryPlayAndRecord, with: [AVAudioSessionCategoryOptions.mixWithOthers, AVAudioSessionCategoryOptions.defaultToSpeaker])
try session.setActive(true)
} catch {
}
检查这个答案,我相信会帮助你:http://*.com/a/28026142/1381708 – 2015-01-19 17:58:51