1- 音频
[1] 音乐往往是存储在iPod曲库(注意位置)中的,可以通过媒体选择器(media picker)或者媒体查询(media query)读取,然后用音乐播放器MPMusicPlayerController播放。
1. MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
2. [musicPlayer setShufleMode: MPMusicShuffleModeSongs];
3. [musicPlayer setRepeatMode: MPMusicRepeatModeAll];
4. [musicPlayer setQueueWithQuery: [MPMediaQuery songsQuery];
5. [musicPlayer play];
applicationMusicPlayer返回的播放器,在你的应用中播放音乐。它不会影响到iPod播放器,也不能从iPod播放器重获取信息。
iPodMusicPlayer返回的是iPod播放器,在你推出应用后,所有的设置都会影响到之后设备上的iPod播放器。
获得音乐播放器后,需要为它设置一个播放队列。可以用setQueueWithQuery:放方法,通过媒体查询MPMediaQuery来设置 播放队列,也可以用setQueueWithItemCollection:方法,通过MPMdiaItemCollection来设置播放队列。
重复模式repeatMode可以设置为不重复、重复当前曲目、或整个播放列表;乱序播放shuffleMode可以设置为不乱序、乱序播放曲目或乱序播放专辑;音量volume的设置与音频播放器一样。
skipToNextItem跳到下一首,skipToPreviousItem跳到上一首,skipToBegin跳到第一首。
对应的宏都是以MPMusic开头。
[2] 利用系统声音服务来播放短暂音效(时长30秒以内),并震动:
1. AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
播放指定音效:
1. NSURL *fileURL = [NSURL fileURLWithPath: path isDirectory: NO];
2. // 创建音效ID
3. SystemSoundID soundID;
4. AudioServiceCreateSystemSoundID((CFURLRef) fileURL, &soundID);
5. // 播放声音
6. AudioServicesPlaySystemSound(soundID);
[3] 音频播放器
没有时长限制
1. NSURL *fileURL = [NSURL fileURLWithPath: path isDirectory: NO];
2. // 用URL来初始化音频播放器-播放的不是iPod曲库中的音乐
3. AVAudioPlayer* player = [AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: NO];
4. // 准备播放
5. [player prepareToPlay];
6. // 设置代理
7. [player setDelegate: self];
方法:play、pause、stop。可以通过playing属性查询播放器是否正在播放当中,可以通过volume属性来修改和查询播放器的播放增益(从0.0到1.0),可通过setting属性查询播放器其他设置。
duration表示音频的时间长度, currentTime表示当前播放到的时间。播放结束后可以通过代理方法audioPlayerDidFinishPlaying:来处理播放后设置。
2- 视频
视频播放可以采用网页视图(UIWebView)进行嵌入式播放(能播放YouTube视频),或者采用电影播放器(MPMoviePlayerController)进行播放。
[1] 电影播放器
1. MPMoviePlayerController *player = [MPMoviePlayerController alloc]initWithContentURL: url];
2. // 设置播放器的大小,并将其加入视图中
3. [player.view setFrame: rectFrame];
4. [self.view addSubView: player.view];
5. 播放器的背景视图backgroundView。
6. 全屏[player setFullscreen: YES animated: YES];
7. 播放另一个影片[player setContentURL: newURL];
8. [player requestThumbnailImagesAtTimes:arrayTimes timeOption:MPMovieTimeOptionNearestKeyFrame]; // 表示播放器不会在你所指定的时间去截取预览,而是在绝对时间的附近几帧中寻找效果最好的帧做为预览。
scalingMode规定了影片的缩放模式。
initialPlaybackTime用来控制视频开始播放的时间,单位是秒。
如果视频源在网络上,那么需要正确设置服务器端的mimeType。