我有一个带有音频和mp3的视频。我想在播放mp3时播放静音(音频关闭)视频。我使用MPMoviePlayerController
播放视频,AVAudioPlayer
播放mp3。有办法吗?
答案 0 :(得分:0)
MPMoviePlayerController似乎没有给你任何控制音量。我建议你看一下AVPlayer和随附的例子。播放视频要多做一些工作,但你可以使用“静音”属性来完成你想要的。
答案 1 :(得分:0)
您实际上可以使用MPMusicPlayerController
来实现您的目标。
- (void)muteVidepPlayer:(BOOL)muteFlag
{
MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
if (muteFlag)
{
self.lastVolume = musicPlayer.volume;
[musicPlayer setVolume:0.0f];
}
else
{
[musicPlayer setVolume:self.lastVolume];
}
}
它的作用是,它使用MPMusicPlayerController
的实例来调整音量。不要太困惑,这也会有效地调整MPMoviePlayerController
实例的音量。这是有效的,因为MPMoviePlayerController
和MPMusicPlayerController都使用应用程序音频会话(默认情况下)。
为了确保您能够将卷重置为以前的设置,此方法会尝试将该值存储在播放控制器/ viewcontroller的float
(self.lastVolume
)类型的实例变量中/无论如何。
答案 2 :(得分:0)
我选择回答我自己的问题:@nickbona答案很好,但它没有简单的示例代码。 所以解决方案是使用AVPlayer而不是MPMoviePlayerController。
所以在这里我有一个简单的源代码示例,如果其他人需要它:
//init player
AVAsset *asset = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"yourfile" ofType:@"mp4"]] options:nil];
AVPlayerItem *anItem = [AVPlayerItem playerItemWithAsset:asset];
AVPlayer *myPlayerController = [AVPlayer playerWithPlayerItem:anItem];
//disable audio (this is the version when you have more than one video in the playlist: i write this version so it should be more useful)
NSArray *playerTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
NSMutableArray *playerParams = [NSMutableArray array];
for (AVAssetTrack *track in playerTracks) {
AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];
[audioInputParams setVolume:0.0 atTime:kCMTimeZero];
[audioInputParams setTrackID:[track trackID]];
[playerParams addObject:audioInputParams];
}
AVMutableAudioMix *muteAudioMix = [AVMutableAudioMix audioMix];
[muteAudioMix setInputParameters:playerParams];
[[myPlayerController currentItem] setAudioMix:muteAudioMix];
希望它可以提供帮助。