我目前正在尝试使用AVPlayer从手机本地iPod库播放音乐,而不是使用应用程序控制器播放MPMusicPlayerController.
我可以使用和MPMediaQuery从本地iPod lib中选择一个曲目,但是当我尝试使用AVMutableAudioMixInputParameters在较低级别启动音频时,它似乎根本不会降低音量.
我使用AVPlayer而不是MPMusicPlayerController的原因是我在后台同时播放其他音频而MPMusicPlayerController无法播放,因为使用AVPlayer的现有音频文件正在占用硬件.我目前的代码是:
// just blindly select all music for now.
MPMediaQuery *everything = [[MPMediaQuery alloc] init];
NSArray *itemsFromGenericQuery = [everything items];
MPMediaItem *song;
NSMutableArray *array = [[NSMutableArray alloc] init];
for (song in itemsFromGenericQuery)
{
[array addObject:song];
}
Run Code Online (Sandbox Code Playgroud)
所以此时数组是我的lib中的一个轨道数组.
现在抓住一个并使用AVPlayer播放它:
// grab the first song off the array
MPMediaItem *song = [array objectAtIndex:0];
NSURL *assetURL = [song valueForProperty:MPMediaItemPropertyAssetURL];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:assetURL options:nil];
NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
AVAssetTrack *track = [audioTracks objectAtIndex:0];
NSMutableArray *allAudioParams = [NSMutableArray array]; …Run Code Online (Sandbox Code Playgroud) 我正在尝试确定是否可以使用AVAudioPlayer该类切换AirPlay支持.
据我所读:
AirPlay是一项技术,可让您的应用程序将音频流传输到Apple TV和第三方AirPlay扬声器和接收器.AirPlay支持内置于
AV Foundation框架和Core Audio框架系列中.您使用这些框架播放的任何音频内容都自动符合AirPlay发行的条件.用户选择使用AirPlay播放音频后,系统会自动路由.[ 参考 ]
根据这些信息; 它应该与AVAudioPlayer一起使用,因为它是AVFoundation框架的一部分; 但我似乎无法找到支持这一假设的任何文件.
我还发现了一些文档说它可以用MPMoviePlayerViewController:
MPMoviePlayerController课程中包括使用AirPlay播放视频的支持.此支持允许您在支持AirPlay的硬件(如Apple TV)上播放基于视频的内容.当allowsAirPlay活动MPMoviePlayerController对象的属性设置为YES并且设备在启用AirPlay的硬件的范围内时,电影播放器向用户呈现用于将视频发送到该硬件的控件.[ 参考 ]
似乎这里有一些相互矛盾的信息.有谁知道它是否可能用于AVAudioPlayer路由到AirPlay或我们被迫使用MPMoviePlayerController该类?
非常感谢.
airplay ×1
avfoundation ×1
avplayer ×1
ios ×1
iphone ×1
mpmediaquery ×1
objective-c ×1
volume ×1