播放广播流时如何设置 AVPLayer 的音量

Posted

技术标签:

【中文标题】播放广播流时如何设置 AVPLayer 的音量【英文标题】:How can i set volume of AVPLayer when it's playing radio stream 【发布时间】:2012-11-25 21:35:11 【问题描述】:

我正在使用 AVPlayer 播放广播流。 为了初始化播放器,我正在使用下一个代码:

self.asset = [AVAsset assetWithURL:self.url];
self.item = [AVPlayerItem playerItemWithAsset:self.asset];
self.player = [AVPlayer playerWithPlayerItem:self.item];

我读过这个问题Adjusting the volume of a playing AVPlayer

我正在尝试使用滑块值设置音量

- (void)setVolume:(float )volume

    _volume = volume;
    NSArray *audioTracks = self.asset.tracks;
    NSMutableArray *allAudioParams = [NSMutableArray array];

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

    AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
    [audioMix setInputParameters:allAudioParams];
    NSLog(@"%@", self.player.currentItem);
    NSLog(@"%f", volume);
    [self.player.currentItem setAudioMix:audioMix];

我也在尝试设置

[audioInputParams setVolume:volume atTime:self.player.currentTime];

但该数组 (self.asset.tracks) 中没有任何轨道, 它对音量没有任何影响。 (我也无法获得任何元数据), 我不能使用 AVAudioPlayer 通过 url 播放音频流

AVAudioPlayer 类的一个实例,称为音频播放器, 提供文件或内存中音频数据的播放。

Apple 建议您使用此类进行音频播放,除非您 正在播放从网络流中捕获的音频或需要非常低的音频 I/O 延迟。

我正在考虑使用该代码https://github.com/DigitalDJ/Audiostreamer/downloads 用于播放广播流,但我不知道如何使用 Audiotoolbox 设置音量。

请帮帮我!谢谢!

【问题讨论】:

【参考方案1】:

我尝试了很多解决方案,但最好的方法是实现一个实例 ov MPVolumeVIew:

 self.myViewVolume = [[MPVolumeView alloc] initWithFrame:CGRectMake(20, 330, 280, 50)];
[self.myViewVolume sizeToFit];
[self.view addSubview:self.myViewVolume];

你可以将它添加到你想要的任何 UIView,只需将类更改为 MPVolumeView 不要忘记添加 MediaPlayer 框架。

如果您想从流中获取元数据,您必须执行以下操作:

 [playerItem addObserver:self forKeyPath:@"timedMetadata" options:NSKeyValueObservingOptionNew context:NULL];

有了这个,您可以简单地将信息添加到任何 UILabel

【讨论】:

你能告诉我,将 MPVolumeView 添加到我的视图中我还应该知道什么。我有一些问题 - 当我使用此代码将它添加到我的视图中时,它不会出现在我的视图中。我不明白为什么。谢谢 模拟器中不显示滑块,MPVolumeView滑块与硬件音量按钮相关联,只有在iPhone/iPad上测试时才会出现。但除此之外,它的效果很好,并且 UI 与其他音量滑块相同。 @Emk0DJ 你用这个救了我的培根!我什么都试过了,干杯! 你不能从模拟器中使用 MPVolumeView。

以上是关于播放广播流时如何设置 AVPLayer 的音量的主要内容,如果未能解决你的问题,请参考以下文章

使用 AVPlayer 从 url 流式传输广播 - > iPhone 播放器控件不起作用

AVPlayer 带有滑块和 iphone 按钮的音量控制

如何在具有 AVPlayer 类的应用程序中设置放大音量?

如何在 AVplayer 中为视频文件实现音量控制?

迅速。在模拟器上播放良好的 mp3 文件,但在设备上播放时没有音量。 AVPlayer

音量滑块没有效果