您的位置:首页 > 移动开发 > IOS开发

十.媒体播放

2016-06-27 19:49 441 查看
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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息