调整播放AVPlayer的音量

Sag*_*MDP 18 iphone objective-c ios4

在当前播放AVPlayer项目上获取音量变量的唯一方法是遵循此过程;

  • 卸载当前播放的AVPlayerItem的资源
  • 获取该AVPlayerItem的当前播放时间
  • 将资产加载到新的AVPlayerItem中
  • 用新的AVPlayerItem替换当前的AVPlayerItem
  • 等待AVIlayer上的currentItem更改
  • 准备AudioMix并寻找之前的播放时间

我是否错过了某个地方的基本原则,或者仅仅是为了简单地管理音量水平?

我无法使用AVAudioPlayer,因为我需要将iTunes曲目加载到播放器中.

Jes*_*sen 21

您可以使用此处描述的方法在播放时更改音量:

http://developer.apple.com/library/ios/#qa/qa1716/_index.html

虽然文章的文字似乎暗示它只能用于静音音频,但您实际上可以将音量设置为您喜欢的任何音量,并且您可以在音频播放后进行设置.例如,假设您的AVAsset实例称为"资产",您的AVPlayerItem实例称为"playerItem",并且您要设置的卷称为"volume",以下代码应该执行您想要的操作:

NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];

NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVAssetTrack *track in audioTracks) {
  AVMutableAudioMixInputParameters *audioInputParams = 
    [AVMutableAudioMixInputParameters audioMixInputParameters];
  [audioInputParams setVolume:volume atTime:kCMTimeZero];
  [audioInputParams setTrackID:[track trackID]];
  [allAudioParams addObject:audioInputParams];
}

AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
[audioMix setInputParameters:allAudioParams];

[playerItem setAudioMix:audioMix];
Run Code Online (Sandbox Code Playgroud)