我正在使用AVPlayer播放实时流(m3U8文件)。它使用AVPlayer完美播放,但我无法将其静音。
我正在使用以下代码来静音。
NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVPlayerItemTrack *track in _player.currentItem.tracks)
{
if ([track.assetTrack.mediaType isEqual:AVMediaTypeAudio])
{
AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];
[audioInputParams setVolume:0.0 atTime:kCMTimeZero];
[audioInputParams setTrackID:[track.assetTrack trackID]];
[allAudioParams addObject:audioInputParams];
}
}
AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix];
[audioZeroMix setInputParameters:allAudioParams];
[[_player currentItem] setAudioMix:audioZeroMix];
使用相同的代码,我可以将本地视频文件以及我在相同AVPlayer代码中播放的渐进式视频网址静音。
(可能对于直播视频,AVPlayer实例中可用的曲目可以设置为ZERO,但下一个缓冲曲目是新鲜的音量,我是对还是其他原因?)
任何人都对这个问题有任何想法。对此的任何帮助都非常值得赞赏。
答案 0 :(得分:3)
你的假设是正确的。您无法将正在播放HTTP直播的播放器静音。我已就此提交了一份RADAR。
在我的应用程序中,我们控制流,因此我们生成了一个没有音频的流,一个带有音频的相同流,并在2之间切换以打开和关闭声音。这是你能做的最好的事情。
AVAudioMix解决方案不适用于直播流。我试过了。查看底部的说明,说明它仅适用于基于文件的资产: http://developer.apple.com/library/ios/#qa/qa1716/_index.html
看起来Mac开发者在他们的AVPlayer上获得了一个静音属性,但iOS尚未拥有它。
现在,如果可以,您将不得不解决流中的问题。
答案 1 :(得分:1)
作为一种解决方法,您可以使用MPVolumeView
课程来调整任何视频的音量。这将允许用户根据需要静音视频。但是,如果不使用未记录的API,则不太可能无法自定义此滑块的外观。
MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame: CGRectMake(10, 37, 260, 20)] autorelease];
UIAlertView *volumeAlert = [[UIAlertView alloc] initWithTitle:@"Volume" message:@"" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[volumeView sizeToFit];
[volumeAlert addSubview:volumeView];
[volumeAlert show];
[volumeAlert release];