jef*_*o37 5 ios avaudiosession avplayer
我有一个相对简单的设置,涉及1个AVPlayer在后台循环一些环境音频,第二个播放器在某些点播放较短的声音.
我观察到的是,当播放短音时,我听到环境剪辑被剪掉了大约一秒钟,同时有一个staticy pop.然后它继续播放,同时播放短音.这只发生在设备上 - 它在SIM卡上并不明显,这似乎指出了潜在的性能问题.
我无法弄清楚为什么第一个AVPlayer有这个blip.这是环境播放器的代码:
NSString *path = [[NSBundle mainBundle] pathForResource:kAmbientTrack ofType:@"mp3"];
_ambientPlayer = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
[self.ambientPlayer play];
Run Code Online (Sandbox Code Playgroud)
它稍微复杂一些,因为我也会在结束时重新收听通知并重新启动它,但是在发生任何循环之前,即使在初始播放期间也会出现此问题.
所以,虽然这是在后台进行的,我会播放另一个像这样的剪辑:
self.announcementPlayer = [[AVPlayer alloc] initWithURL:[myObject audioPathUrl]];
[self.announcementPlayer play];
Run Code Online (Sandbox Code Playgroud)
所以没有什么特别的 - 只有两个AVPlayers在播放.
唯一感兴趣的是我在应用启动时如何设置音频会话.
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
Run Code Online (Sandbox Code Playgroud)
我这样做是为了让用户在后台播放来自其他应用的音乐.
我认为我的代码非常直接,而且我真的不知道为什么我会得到这个昙花一现.
我通过将音频播放器更改为AVAudioPlayers来解决这个问题.在大多数情况下,这解决了爆裂问题.但是,我仍然躲避.具体来说,如果我播放AVAudioPlayer,并且在播放时,我开始加载AVPlayer,它会关闭AVAudioPlayer大约一秒钟.这就是我在说的:
[myAVAudioPlayer play];
AVPlayer *player = [AVPlayer playerWithURL:[self.currentExercise videoPathUrl]];
Run Code Online (Sandbox Code Playgroud)
添加第二行会导致myAVAudioPlayer的第一秒左右静音.
| 归档时间: |
|
| 查看次数: |
267 次 |
| 最近记录: |