我有一个.mp4文件,其中包含视频轨道和音频轨道。我只想在后台播放音轨, AVFoundation 有什么办法吗?
或其他框架?
任何想法将不胜感激
最佳答案
修订的解决方案
我认为以下链接/示例将帮助您解决问题。答案在于可以在选择播放资产之前禁用视频轨道。
How to mute a video's audio track是一个示例,您可以反转并外推有关如何禁用视频轨道的解决方案。当人们认为视频只是资产的另一个AVPlayerItemTrack时,此功能似乎是可能的:
我认为关键组件是禁用AVPlayerItemTrack,其中包含来自myTracks数组中的视频,而不是禁用音频轨道。您将需要隔离适当的条件,以将视频轨道与“音频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 Reference Docs
关于objective-c - 在AVFoundation中仅在后台播放音轨,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13467407/