2

我有一个 .mp4 文件,带有视频轨道和音频轨道。我只想在后台播放音轨,AVFoundation有什么办法吗?

还是其他框架?

任何想法将不胜感激

4

1 回答 1

0

修改后的解决方案

我认为以下链接/示例将帮助您解决问题。答案在于在您选择播放资产之前禁用视频轨道的能力。

如何使视频的音轨静音是一个可以反转和推断如何禁用视频轨道的解决方案的示例。当人们认为视频只是资产的另一个 AVPlayerItemTrack 时,此功能似乎是可能的:

AVFoundation AVPlayerItemTrack

我认为关键组件是禁用包含 myTracks 数组中的视频的 AVPlayerItemTrack,而不是禁用音轨。您需要隔离适当的标准,以区分视频轨道与音频 R 和音频 L 轨道。我相信这个框架会带来成功。让我知道事情进展如何。

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
                        change:(NSDictionary *)change context:(void *)context {

    if(context == &TracksStatusContext && [Utilities 
                   getSettings].videoMuted == YES)
    {
        NSArray * myTracks = self.myPlayerItem.tracks;
        for(int i = 0; i < [myTracks count]; i++)
        {
            if([[[myTracks objectAtIndex:i] assetTrack].mediaType 
                            isEqualToString:AVMediaTypeAudio] == YES)
            {
                ((AVPlayerItemTrack *)[myTracks 
                            objectAtIndex:i]).enabled = NO;
            }
        }
        return;
    }

    if (context == &ItemStatusContext) {
        [self.myPlayerView.player play];
        return;
    }
    return;
}

Apple AVFoundation 参考文档

于 2013-10-17T15:48:12.707 回答