ビデオ トラックとオーディオ トラックを含む .mp4 ファイルがあります。バックグラウンドでオーディオ トラックのみを再生したいのですが、AVFoundationでそれを行う方法はありますか?
または他のフレームワーク?
どんなアイデアでもいただければ幸いです
ビデオ トラックとオーディオ トラックを含む .mp4 ファイルがあります。バックグラウンドでオーディオ トラックのみを再生したいのですが、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;
}