MPMoviePlayerController 只想要视频,没有音频
Posted
技术标签:
【中文标题】MPMoviePlayerController 只想要视频,没有音频【英文标题】:MPMoviePlayerController want video only, no audio 【发布时间】:2013-11-19 09:32:19 【问题描述】:我在我的应用中使用视频来制作一些教程屏幕。视频没有音轨。我可以正常工作,除非用户已经在收听音频,例如来自音乐应用程序,当其中一个教程视频开始时音频会停止。
有没有办法只播放视频而不影响音频,以便用户可以继续欣赏他们播放的音频?
我尝试在[self.player play]
之前设置[[AVAudiosession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
,但这不起作用。 useApplicationAudioSession
看起来很有希望,但它在 iOS 6 中已被弃用。我也尝试过 AVPlayer
并在 play
之前再次设置 AVAudioSessionCategoryAmbient
但没有运气。
【问题讨论】:
尝试在application:didFinishLaunchingWithOptions:
中设置[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
并尝试在AVPlayer
和AVPreviewLayer
中播放视频。希望这会有所帮助。
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
在 App Delegate 中有效,即使使用 MPMoviePlayerController
!奇怪的是,在play
之前调用它时不起作用。如果您想将此作为答案,我会将其标记为正确。
我不确定,但我认为您应该在初始化电影播放器之前更改音频会话类别。
【参考方案1】:
尝试在application:didFinishLaunchingWithOptions:
中设置[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
并尝试将AVPlayer
与AVPreviewLayer
一起播放视频。希望这会有所帮助。
【讨论】:
【参考方案2】:我不确定这正是您要问的,但我在重新阅读问题之前已经写下了答案,它可能对看这里的人有用……
您无法将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
还可以让您更好地控制播放(例如,更精细的搜索)。
【讨论】:
投反对票有什么理由吗?如何改进答案? 嗨,反对票是我的。我错误地单击了向下箭头,现在除非您编辑答案,否则我无法将其删除:You last voted on this answer Jun 6 at 18:32. Your vote is now locked in unless this answer is edited.
【参考方案3】:
[videoPlayer moviePlayer].useApplicationAudioSession = YES;
[[MPMusicPlayerController applicationMusicPlayer] setVolume:0.0];
【讨论】:
useApplicationAudioSession 已弃用以上是关于MPMoviePlayerController 只想要视频,没有音频的主要内容,如果未能解决你的问题,请参考以下文章
MPMoviePlayerController 只播放第一次,第三次,第五次……以此类推
Airplay:从 MPMoviePlayerController 播放电影只会导致音频流式传输到 Apple tv
Swift 中的 MPMoviePlayerController
MPMoviePlayerController 仅显示白色背景