2012-11-25 76 views
0

我正在使用AVPlayer播放廣播流。 爲了初始化播放器我正在使用下面的代碼:如何在播放廣播流時設置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設定的音量。

請幫幫我!謝謝!

回答

2

我已經試過很多解決方案,但要做到這一點的最好辦法是實現一個實例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

+0

你能告訴我,什麼也我應該知道將MPVolumeView添加到我的視圖。我遇到了一些問題 - 當我使用此代碼將其添加到視圖中時,它不會顯示在我的視圖中。我不明白爲什麼。謝謝 – BergP

+1

滑塊沒有出現在模擬器中,MPVolumeView滑塊鏈接到硬件音量按鈕,它只有在iPhone/iPad上測試時纔會出現。但除此之外,它的效果很好,用戶界面與其他音量滑塊相同。 – EmilDo

+0

@ Emk0DJ你用這個保存了我的培根!我嘗試了一切,所以歡呼! –