我正在开发一个应用程序,它一次在屏幕上显示 3 个实时视频源。为此,我在 AVFoundation 框架中使用 AVPlayer。
但是,要求视频仅在单击并选择后才输出音频。目前,我可以同时播放视频和音频。
因此,我试图创建一种方法来使每个 AVPlayer 上的音频静音。
我已经搜索了各种线程来寻找答案,但到目前为止还没有找到任何答案。
我最接近创建它的是通过 AVAssestTrack 获取提要中的音轨,并通过 AVMutableAudioMix 更改音量。
但是,我在我的音轨数组中取回了 0 个项目!
请有人看看我的代码,看看我在哪里犯了错误,或者是否有更好的方法来做到这一点?
谢谢你的帮助!
- (IBAction)touchVolumeButton:(id)sender {
float volume = 0.0f;
AVPlayerItem *currentItem = self.player.currentItem;
NSArray *audioTracks = [currentItem.asset tracksWithMediaType:AVMediaTypeAudio];
NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVAssetTrack *track in audioTracks) {
AVMutableAudioMixInputParameters *audioInputParams =
[AVMutableAudioMixInputParameters audioMixInputParameters];
[audioInputParams setVolume:volume atTime:kCMTimeZero];
[audioInputParams setTrackID:[track trackID]];
[allAudioParams addObject:audioInputParams];
}
if ([allAudioParams count] > 0) {
AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
[audioMix setInputParameters:[NSArray arrayWithObject:allAudioParams]];
[currentItem setAudioMix:audioMix];
AVAssetExportSession *session = [AVAssetExportSession exportSessionWithAsset:currentItem.asset presetName:@"current"];
session.audioMix = audioMix;
}
}