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 に答える