gpt4 book ai didi

ios - 使用 MPMoviePlayerController 播放视频时如何静音/取消静音?

转载 作者:技术小花猫 更新时间:2023-10-29 11:01:51 24 4
gpt4 key购买 nike

我已经创建了自己的自定义控件以与 MPMoviePlayerController 一起使用。到目前为止,除了静音按钮控件外,一切正常。

在创建 MPMoviePlayerController 实例之前,我已经使用以下代码配置了 AVAudioSession

    NSError *modeError = nil;
[self.audioSession setMode:AVAudioSessionModeMoviePlayback error:&modeError];
if (modeError != nil) {
NSLog(@"Error setting mode for AVAudioSession: %@", modeError);
}

NSError *categoryError = nil;
[self.audioSession setCategory:AVAudioSessionCategoryPlayback error:&categoryError];
if (categoryError != nil) {
NSLog(@"Error setting category for AVAudioSession: %@", categoryError);
}

然后在我的静音按钮回调方法中,我有以下代码:

    NSError *activeError = nil;
[self.audioSession setActive:NO error:&activeError];
if (activeError != nil) {
NSLog(@"Error setting inactive state for AVAudioSession: %@", activeError);
}

单击“静音”按钮时出现以下无用错误:

Error Domain=NSOSStatusErrorDomain Code=560030580 "The operation couldn’t be completed. (OSStatus error 560030580.)"

我正在链接到 AVFoundation 框架。

这真的开始困扰我,因为我终生无法找到一种方法来减少或静音我的应用程序的播放音​​频。

我不想只更改 AVAudioSession AVAudioSessionCategoryPlayback 类别定义的应用程序级音量。

您似乎可以设置AVAudioPlayer 的音量,但不能设置MPMoviePlayerController。我在 SO 上看到其他帖子说只是创建一个 AVAudioPlayer 实例并设置音量,但这只会导致我的应用程序崩溃,我希望它与我正在做的事实有关不使用 initWithContentsOfURL:error:initWithData:error: 而是使用 `init'。

如有任何帮助,我们将不胜感激。

最佳答案

在与 Apple 技术人员交谈后发现无法使用 MPMoviePlayerController 控制或静音音频。

相反,您必须使用 AVFoundations AVPlayer 类创建自己的 Controller 。

一旦您开始使用它,您只需创建自定义混音并设置音量即可。它实际上非常有效。

示例代码:

    AVURLAsset * asset = [AVURLAsset URLAssetWithURL:[self localMovieURL] 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 a new Player, and set the player to use the player item
// with the muted audio mix
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];

self.mPlayer = player;

[mPlayer play];

我编写了一个 MPMoviePlayerController 替换类,它添加了对音量级别的支持。我会尽快上传到 github 并在这篇文章中添加链接。

关于ios - 使用 MPMoviePlayerController 播放视频时如何静音/取消静音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15948661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com