【发布时间】:2012-08-23 01:50:52
【问题描述】:
有很多问题询问如何设置AVPlayer 的音量,但如何在 iOS 中获取播放器的当前音量? p>
例如,我试图将一首歌曲从其当前级别淡出。我可以将卷保存在其他地方并引用它,但宁愿直接从 AVPlayer 读取值。
【问题讨论】:
标签: objective-c ios avplayer
有很多问题询问如何设置AVPlayer 的音量,但如何在 iOS 中获取播放器的当前音量? p>
例如,我试图将一首歌曲从其当前级别淡出。我可以将卷保存在其他地方并引用它,但宁愿直接从 AVPlayer 读取值。
【问题讨论】:
标签: objective-c ios avplayer
AVPlayer 包含一个或多个AVPlayerItem 对象,您可以通过这些对象获取和设置AVPlayer 播放的媒体的音频电平。前往AVPlayerItem docs 并查看audioMix 属性,并查看我对slightly different question 的回答,该回答仍应提供一些信息。
在您发表评论后跟进,这是(我认为)您将如何从 - (BOOL)getVolumeRampForTime:(CMTime)time startVolume:(float *)startVolume endVolume:(float *)endVolume timeRange:(CMTimeRange *)timeRange 方法中获取音量值:
// Get your AVAudioMixInputParameters instance, here called audioMixInputParameters
// currentTime is the current playhead time of your media
float startVolume;
float endVolume;
CMTimeRange timeRange;
bool success = [audioMixInputParameters getVolumeRampForTime: currentTime
startVolume: &startVolume
endVolume: &endVolume
timeRange: &timeRange];
// startVolume and endVolume should now be set
NSLog(@"Start volume: %f | End volume: %f", startVolume, endVolume);
【讨论】:
- (void) getVolumeRampForTime:startVolume:endVolume:timeRange: 上的AVAudioMixInputParameters 来自player.audioMix.inputParameters[]。目前还不知道怎么拉音量,等我弄明白了再贴出来。
startVolume: 和endVolume: 参数要求指向浮点数的指针,这就是提取音量值的机制。
根据 Apple 的 AVPlayer documentation for OS X,它列出了一个 volume 属性,但 same class in iOS 的文档没有列出一个。您的项目是否允许您改用AVAudioPlayer?那个确实有一个iOS的综合音量属性,更容易设置/检索。
【讨论】:
AVAudioPlayer 似乎无法实现这一点
你可以使用 AVPlayer 类的 volume 属性。这是AVPlayer class reference 链接。引用自它:
音量
表示播放器当前的音量。@property(nonatomic) 浮动体积
讨论
0.0 表示“静音所有音频”,1.0 表示“以当前项目的最大音量播放”。可用性
在 OS X v10.7 及更高版本中可用。声明于
AVPlayer.h
编辑:
您可以尝试获取系统音量。这个link提供了2种方式。
【讨论】: