我一直在努力,現在制定出這個問題的一個很好的48小時,也沒有拿出任何東西。我有2個AVPlayer對象播放不同的http直播流。顯然,我不希望他們同時播放音頻,所以我需要一種方法來靜音其中一個視頻。靜音的HTTP實時流中的AVPlayer
蘋果suggests this用於靜音的音軌在AVPlayer玩....
NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVPlayerItemTrack *track in [_playerItem tracks]) {
if ([track.assetTrack.mediaType isEqualToString:AVMediaTypeAudio]) {
AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];
[audioInputParams setVolume:0.0 atTime:CMTimeMakeWithSeconds(0,1)];
[audioInputParams setTrackID:[track.assetTrack trackID]];
[allAudioParams addObject:audioInputParams];
// Added to what Apple Suggested
[track setEnabled:NO];
}
}
AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix];
[audioZeroMix setInputParameters:allAudioParams];
[_playerItem setAudioMix:audioZeroMix];
當這個沒有工作(後多次迭代),我發現AVPlayerItemTrack enabled屬性和嘗試,設置爲NO。也沒什麼。這甚至不註冊爲做任何事情,因爲當我嘗試了的NSLog(@「%X」,track.enabled),但它仍然顯示爲1
我不知所措,我想不出我可以閱讀和重新閱讀另一份文件,以獲得一個很好的答案。如果有人能幫上忙,那太棒了。
* 更新:我得到了蘋果的舉行,並根據AVFoundation團隊,這是不可能靜音或禁用HLS視頻的軌道。我個人認爲,這是一個錯誤,所以我提交了一個bug report(你應該這樣做,告訴蘋果,這是一個問題)。您也可以嘗試通過反饋頁面提交feature enhancement request。
感謝您的回答這開闢了一條路徑,我要的,我試圖解決的問題之一。我試圖用OpenAL做同樣的事情,但沒有找到一個簡單的方法來做到這一點。我知道你可以通過alSourcef(sourceID,AL_GAIN,volume)減小音量;但不知道如何靜音,有沒有快速的解決方法呢? – chathuram 2014-04-14 15:54:34