我在应用程序中使用视频作为一些教程屏幕。视频没有音轨。除了用户已经在听音频(比如音乐应用程序),当其中一个教程视频开始时,音频会停止之外,我的一切都正常工作。
有没有一种方法可以只播放视频而不影响音频,这样用户就可以继续享受他们播放的音频?
我尝试在[self.player play]
之前设置[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
,但没有成功。useApplicationAudioSession
看起来很有前途,但在iOS6中遭到了弃用。我也尝试过AVPlayer
,并在play
之前再次设置AVAudioSessionCategoryAmbient
,但没有成功。
尝试在application:didFinishLaunchingWithOptions:
中设置[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
,并尝试AVPlayer
与AVPreviewLayer
一起播放视频。希望这能有所帮助。
我不确定这正是你所问的,但我在重读这个问题之前已经写好了答案,这可能对看这里的人有用…
您无法使MPMoviePlayerController
上的音频静音。但是,您可以切换到使用AVPlayer
,并按如下方式删除音频:
// Load the video asset
AVURLAsset *asset = [AVURLAsset URLAssetWithURL: <your-video-URL> options:nil];
NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
// Mute all the audio tracks
NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVAssetTrack *track in audioTracks) {
AVMutableAudioMixInputParameters *audioInputParams =[AVMutableAudioMixInputParameters audioMixInputParameters];
[audioInputParams setVolume:0.0 atTime:kCMTimeZero];
[audioInputParams setTrackID:[track trackID]];
[allAudioParams addObject:audioInputParams];
}
AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix];
[audioZeroMix setInputParameters:allAudioParams];
// Create a player item
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
[playerItem setAudioMix:audioZeroMix]; // Mute the player item
// Create an AVPlayer
AVPlayer * moviePlayer = [AVPlayer playerWithPlayerItem: playerItem]
然后,您需要将AVPlayer
的playerLayer
添加到视图控制器的视图层次结构中。
AVPlayer
还提供了对播放的更大控制(例如,细粒度搜索)。
[videoPlayer moviePlayer].useApplicationAudioSession = YES;
[[MPMusicPlayerController applicationMusicPlayer] setVolume:0.0];