gpt4 book ai didi

ios - Airplay 上的 AVPlayer 音频音量?

转载 作者:行者123 更新时间:2023-11-29 13:26:43 25 4
gpt4 key购买 nike

有谁知道在 Airplay 上播放时调整 AVPlayer 音轨音量的方法吗?我已经尝试过 AVAudioMix 和 MPVolumeView 但它们都不起作用。我已经在 iOS 5 和 iOS 6 上试过,并且正在使用最新的 xcode 4.5.1。这不起作用的一个简单示例是 Apple 的 AVPlayerTestApp,它使用 setVolumeRampFromStartVolume 进行简单的淡出。这在设备上工作正常,但如果通过 Airplay 连接则不行。

在 ViewDidLoad 中,我加载了一个轨道并开始播放(这全部取自 AVPlayerTestApp)

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:TRUE error:nil];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];

self.mediaItems = [[[MPMediaQuery songsQuery] items] mutableCopy];

NSURL *anUrl = [[mediaItems objectAtIndex: 0] valueForProperty:MPMediaItemPropertyAssetURL];
AVAsset *asset = [AVURLAsset URLAssetWithURL:anUrl options:nil];
AVPlayerItem *myPlayerItem = [AVPlayerItem playerItemWithAsset:asset];


self.myPlayer1 = [[[AVPlayer alloc] initWithPlayerItem:myPlayerItem] retain];

[myPlayer1 play];

然后我有一个按钮可以打开一个警报 View ,允许用户设置音量并打开播放

MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame: CGRectMake(10, 37, 260, 20)] autorelease];
UIAlertView *volumeAlert = [[UIAlertView alloc] initWithTitle:@"Volume" message:@"" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[volumeView sizeToFit];
[volumeAlert addSubview:volumeView];
[volumeAlert show];
[volumeAlert release];

然后是另一个淡出当前播放轨道的按钮

AVAsset *asset = [myPlayer1.currentItem asset];
NSArray *keys = [NSArray arrayWithObject:@"tracks"];
[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^(void) {
NSError *error = nil;
AVKeyValueStatus trackStatus = [asset statusOfValueForKey:@"tracks" error:&error];
CMTime currentTime;
switch (trackStatus) {
case AVKeyValueStatusLoaded:
if(myPlayer1)
{
NSArray *tracks = [asset tracksWithMediaType:AVMediaTypeAudio];
NSMutableArray * allAudioParams = [NSMutableArray array];
for (AVAssetTrack *t in tracks) {
AVMutableAudioMixInputParameters *params =[AVMutableAudioMixInputParameters audioMixInputParameters];

float fadeOutSeconds = 5;

currentTime = [myPlayer1 currentTime];

[params setVolumeRampFromStartVolume: 1.0 toEndVolume: 0.0 timeRange: CMTimeRangeMake(currentTime, CMTimeMakeWithSeconds(fadeOutSeconds, 1))];

[params setTrackID:[t trackID]];
[allAudioParams addObject:params];
}
AVMutableAudioMix * zeromix = [AVMutableAudioMix audioMix];
[zeromix setInputParameters:allAudioParams];

[myPlayer1.currentItem setAudioMix:zeromix];
}

break;
case AVKeyValueStatusFailed:
// error occured loading AVAsset
NSLog(@"error occured loading AVAsset");
break;
case AVKeyValueStatusCancelled:
// loading of the AVAsset was cancelled
NSLog(@"loading of the AVAsset was cancelled");
break;
default:
break;
}
}];

这在设备上按预期工作,并在点击按钮时降低音量。但是,如果打开 Airplay,则无法更改音量。使用 MPMoviePlayController 我可以自己做淡入淡出,这在 Airplay 上工作,但 AVPlayer 比 Airplay 的延迟更少,所以我宁愿使用它。

非常感谢任何帮助。

最佳答案

由于 Sam_899 没有发布答案,所以我必须这样做。据我所知,除非在打开镜像的情况下建立连接,否则无法通过 airplay 控制 avplayer 的音量。由于打开镜像的唯一方法是从您的应用程序外部打开,因此唯一的选择是告知用户如何自行打开它并希望他们对此感到满意!对于那些不知道如何通过 airplay 打开镜像的人;双击主页按钮,向左滑动到音量控制,点击 airplay 图标,选择要连接的 airplay 设备,然后打开镜像。

关于ios - Airplay 上的 AVPlayer 音频音量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12953316/

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