オーディオ付きのビデオとmp3があります。mp3を再生しながら、ビデオをミュート(オーディオオフ)で再生したいのですが。私はMPMoviePlayerController
ビデオのAVAudioPlayer
再生とmp3の再生に使用しています。それを行う方法はありますか?
3 に答える
MPMoviePlayerControllerは、音量を制御できないようです。AVPlayerとそれに付随する例をご覧になることをお勧めします。ビデオを再生するのは少し手間がかかりますが、「muted」プロパティを使用して、必要なことを正確に実行できます。
あなたは実際にあなたが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の両方がアプリのオーディオセッションを使用するために機能します(デフォルト)。
ボリュームを以前の設定にリセットできることを確認するために、このメソッドは、再生コントローラー/ビューコントローラーなどのタイプfloat
( )のインスタンス変数にその値を格納しようとします。self.lastVolume
私は自分の質問に答えることを選びました。@nickbonaの答えは問題ありませんでしたが、単純なサンプルコードはありません。したがって、解決策はMPMoviePlayerControllerの代わりにAVPlayerを使用することです。
だからここに誰かがそれを必要とするなら簡単なソースコードの例があります:
//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];
それがお役に立てば幸いです。