我想用相机录制时播放音频文件.我使用AVAudioPlayer播放音频和AVCamCaptureManager进行录制.
但是当音频开始播放时,预览屏幕就会冻结.我该怎么办?
谢谢你的帮助.这是代码.(我正在研究AVCam的例子.)
这是预览部分.
if ([self captureManager] == nil) {
AVCamCaptureManager *manager = [[AVCamCaptureManager alloc] init];
[self setCaptureManager:manager];
[[self captureManager] setDelegate:self];
if ([[self captureManager] setupSession]) {
AVCaptureVideoPreviewLayer *newCaptureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:[[self captureManager] session]];
UIView *view = [self videoPreviewView];
CALayer *viewLayer = [view layer];
[viewLayer setMasksToBounds:YES];
CGRect bounds = CGRectMake(0, 0, 480, 320);
[newCaptureVideoPreviewLayer setFrame:bounds];
if ([newCaptureVideoPreviewLayer isOrientationSupported]) {
[newCaptureVideoPreviewLayer setOrientation:[DeviceProperties setPreviewOrientation]];
}
[newCaptureVideoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[viewLayer insertSublayer:newCaptureVideoPreviewLayer below:[[viewLayer sublayers] objectAtIndex:0]];
[self setCaptureVideoPreviewLayer:newCaptureVideoPreviewLayer];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[[[self captureManager] session] startRunning];
}); …Run Code Online (Sandbox Code Playgroud) 我正在开发一个录音应用程序,我想在录音开始时播放声音.
不幸的是,从iOS 5开始,当AVCaptureSession音频设备处于活动状态时,无法播放系统声音.
这是我正在使用的代码的相关部分
- (void)viewDidLoad {
[super viewDidLoad];
NSURL * soundURL = [[NSBundle mainBundle] URLForResource:@"recording-starts" withExtension:@"aif"];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL, &_recStartSound);
//...
if ([self.captureManager setupSession]) {
// ...
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self.captureManager.session startRunning];
});
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
后来,我只是打电话AudioServicesPlaySystemSound(_recStartSound),没有任何事情继续下去.但是,如果我在会话设置之前进行相同的呼叫,则声音将按预期播放.
我发现了这个错误报告,它与我的问题,以及这个和这个问题完全相关,但我找不到任何解决方法.
如何在开始录制AV之前播放短音?
我正在使用AVAssetReader读取ipod库资产音频数据并渲染波形图像.这是使用我在回答这个问题时所描述的代码进行的
这有时会发生在AVAudioPlayer实例播放音频的时候.
无论播放的音频是否与正在阅读的资产相同,我点击的那一刻
[reader startReading];
Run Code Online (Sandbox Code Playgroud)
播放的音频"淡出".(好像AVAudioPlayer已被告知停止播放).这很奇怪,因为我实际上并没有播放音频,只是阅读它.
我在SO上搜索并找到了这个可能的解决方案但是我发现这似乎没有解决问题.
注意 - 我能够播放几个AVAudioPlayer实例,并且启动这些实例似乎并没有相互干扰 - 但是
[reader startReading];
Run Code Online (Sandbox Code Playgroud)
甚至会杀死AVAudioPlayer的多个同时实例,导致它们全部同步淡出.
有任何想法吗?