MPMoviePlayerController只需要视频,不需要音频



我在应用程序中使用视频作为一些教程屏幕。视频没有音轨。除了用户已经在听音频(比如音乐应用程序),当其中一个教程视频开始时,音频会停止之外,我的一切都正常工作。

有没有一种方法可以只播放视频而不影响音频,这样用户就可以继续享受他们播放的音频?

我尝试在[self.player play]之前设置[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];,但没有成功。useApplicationAudioSession看起来很有前途,但在iOS6中遭到了弃用。我也尝试过AVPlayer,并在play之前再次设置AVAudioSessionCategoryAmbient,但没有成功。

尝试在application:didFinishLaunchingWithOptions:中设置[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];,并尝试AVPlayerAVPreviewLayer一起播放视频。希望这能有所帮助。

我不确定这正是你所问的,但我在重读这个问题之前已经写好了答案,这可能对看这里的人有用…


您无法使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]

然后,您需要将AVPlayerplayerLayer添加到视图控制器的视图层次结构中。

AVPlayer还提供了对播放的更大控制(例如,细粒度搜索)。

[videoPlayer moviePlayer].useApplicationAudioSession = YES;
[[MPMusicPlayerController applicationMusicPlayer] setVolume:0.0];

最新更新