在 iOS 中获取 AVPlayer 的音量
Posted
技术标签:
【中文标题】在 iOS 中获取 AVPlayer 的音量【英文标题】:Get Volume of AVPlayer in iOS 【发布时间】:2012-08-23 01:50:52 【问题描述】:有很多问题询问如何设置AVPlayer
的音量,但如何在 ios 中获取播放器的当前音量? p>
例如,我试图将一首歌曲从其当前级别淡出。我可以将卷保存在其他地方并引用它,但宁愿直接从 AVPlayer 读取值。
【问题讨论】:
【参考方案1】: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:
参数要求指向浮点数的指针,这就是提取音量值的机制。【参考方案2】:
根据 Apple 的 AVPlayer
documentation for OS X,它列出了一个 volume 属性,但 same class in iOS 的文档没有列出一个。您的项目是否允许您改用AVAudioPlayer
?那个确实有一个iOS的综合音量属性,更容易设置/检索。
【讨论】:
感谢 Shaun,但我正在使用 AVPlayer 流式传输远程 mp3 -AVAudioPlayer
似乎无法实现这一点【参考方案3】:
你可以使用 AVPlayer 类的 volume 属性。这是AVPlayer class reference 链接。引用自它:
音量 表示播放器当前的音量。
@property(nonatomic) 浮动体积 讨论 0.0 表示“静音所有音频”,1.0 表示“以当前项目的最大音量播放”。
可用性 在 OS X v10.7 及更高版本中可用。
声明于 AVPlayer.h
编辑:
您可以尝试获取系统音量。这个link提供了2种方式。
【讨论】:
该属性仅在 OS X 上可用。iOS 没有。以上是关于在 iOS 中获取 AVPlayer 的音量的主要内容,如果未能解决你的问题,请参考以下文章