6

我在通过 AVPlayerItem 和 AVPlayer 播放音频时遇到了一些奇怪的问题。

我有录音机和 iPod 项目选择器,来自它们的流都通过这样的代码:

  AVAudioSession *audioSession = [AVAudioSession sharedInstance];
  [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
  [audioSession setActive:YES error:nil];

  _playerItem = [[AVPlayerItem alloc] initWithURL:_soundFileURL];
  _player = [[AVPlayer alloc] initWithPlayerItem:_playerItem];
  [_player play];

一切实际上都很好,除了一件事,我不能第二次或更长时间地播放这个流。就是停了,停了之后就没有声音了。有没有人可以提供建议,可能是什么问题?

4

3 回答 3

6

您必须使用 prepareToPlay 将 AVPlayer 设置回流的开头并将 currentPlaybackTime 设置为 0。

self.avPlayer.currentPlaybackTime = 0;
[self.avPlayer prepareToPlay];
于 2013-04-03T16:42:40.023 回答
5

在斯威夫特 4

您可以使用下面的线再次播放。

self.player?.seek(to: CMTime.zero)
self.player?.play()

乐意效劳 :)

于 2019-01-21T07:42:10.463 回答
0

以下是在我的 Swift 5、Xcode 12、macOS 11、iOS 14.2 组合上发生的情况:

  • 我只播放一个简短的 drop.wav 声音来将一块棋子放在游戏板上
  • 几个月前 player.play() 在我的环境中使用较低版本
  • 今天 player.play() 只播放一次,下一段是无声的
  • 添加 player.seek(to: CMTime.zero) “有效”,但只有第一次听起来正常,第二次,第三次......声音不同,较弱
  • 我的解决方法是每次播放前重新加载声音文件
  • 我为这个实验录制了一个视频https://youtu.be/t6863IZkwTQ
于 2020-11-26T15:21:54.927 回答