【发布时间】:2012-07-16 04:45:39
【问题描述】:
我已经尝试解决这个问题 48 小时了,但没有提出任何建议。我有 2 个 AVPlayer 对象播放不同的 http 直播流。显然,我不希望他们同时播放音频,所以我需要一种方法来静音其中一个视频。
Apple 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 的启用属性并尝试将其设置为 NO。也没什么。这甚至没有注册为做任何事情,因为当我尝试 NSLog(@"%x",track.enabled) 时,它仍然显示为 1。
我很茫然,我想不出另一篇我可以阅读并重新阅读以获得好的答案的文档。如果有人可以提供帮助,那就太好了。
*更新:我拿到了 Apple,根据 AVFoundation 团队的说法,不可能静音或禁用 HLS 视频的轨道。我个人觉得这是一个错误,所以我提交了一个bug report(你应该这样做告诉苹果这是一个问题)。你也可以 尝试通过他们的反馈页面提交feature enhancement request。
【问题讨论】:
标签: objective-c ios streaming avplayer http-live-streaming