【问题标题】:AVPlayer Dynamic Volume controlAVPlayer 动态音量控制
【发布时间】:2012-04-18 09:54:57
【问题描述】:

如何动态更改 AVPlayer 的音量?我的意思是,我想在每次按下按钮时静音。给定的代码似乎只在编译时改变它。运行时怎么办???

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:[self myAssetURL] options:nil];
NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVAssetTrack *track in audioTracks) {
    AVMutableAudioMixInputParameters *audioInputParams =[AVMutableAudioMixInputParameters audioMixInputParameters];
    [audioInputParams setVolume:0.0 atTime:kCMTimeZero];
    [audioInputParams setTrackID:[track trackID]];
    [allAudioParams addObject:audioInputParams];
}
AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix];
[audioZeroMix setInputParameters:allAudioParams];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
[playerItem setAudioMix:audioZeroMix]; 
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
self.mPlayer = player;
[mPlayer play];

【问题讨论】:

    标签: objective-c ios media-player avfoundation avplayer


    【解决方案1】:

    您可以在播放期间发送playerItem AVMutableAudioMix 的新实例以动态更改级别。只需将您的按钮链接到一个操作方法,该方法使用适当的值创建一个新的 AVMutableAudioMix 实例(就像您在上面所做的那样),然后使用 playerItem 的 setAudioMix: 方法设置新的混合值。 (如果您正在跨方法工作,请不要忘记保存对 playerItem 实例的引用以便以后访问它。)

    (注意,setAudioMix: 没有在 AVPlayerItem docs 中明确提及,因为它是 audioMix 属性的综合设置器。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多