IOS利用AVPlayer开发多媒体在线播放器
在这里给AVPlayer播放在线音频文件作个记号
1.在H文件中初始:
==============
AVPlayer *mp3Player;
AVPlayerItem *mp3PlayerItem;
id audioMix;
id volumeMixInput;
2.在MM文件中:
view source
?
01.
//作品播放
02.
NSURL * songUrl = [NSURL URLWithString:userInfo.songUrl];
03.
AVURLAsset *movieAsset = [[[AVURLAsset alloc]initWithURL:songUrl options:nil]autorelease];
04.
05.
06.
self. mp3PlayerItem = [AVPlayerItem playerItemWithAsset:movieAsset];
07.
[self. mp3PlayerItem addObserver:self forKeyPath:@"status" options:0 context:NULL];
08.
self. mp3Player = [AVPlayer playerWithPlayerItem:self. mp3PlayerItem];
09.
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:self. mp3Player];
10.
playerLayer.frame = self.view.layer.bounds;
11.
playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;
12.
[self.view.layer addSublayer:playerLayer];
13.
[self. mp3Player setAllowsExternalPlayback:YES];
3.实现代理方法:
view source
?
01.
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
02.
{
03.
if ([keyPath isEqualToString:@"status"])
04.
{
05.
if (AVPlayerItemStatusReadyToPlay == self. mp3Player.currentItem.status)
06.
{
07.
[self. mp3Player play];
08.
}
09.
}
10.
}
4.现实音量调整
view source
?
01.
-(void) setVolume:(float)volume{
02.
//作品音量控制
03.
NSMutableArray *allAudioParams = [NSMutableArray array];
04.
AVMutableAudioMixInputParameters *audioInputParams =[AVMutableAudioMixInputParameters audioMixInputParameters];
05.
[audioInputParams setVolume:volume atTime:kCMTimeZero];
06.
[audioInputParams setTrackID:1];
07.
[allAudioParams addObject:audioInputParams];
08.
audioMix = [AVMutableAudioMix audioMix];
09.
[audioMix setInputParameters:allAudioParams];
10.
[self. mp3PlayerItem setAudioMix:audioMix]; // Mute the player item
11.
12.
[avAudioPlayer setVolume:volume];
13.
}
5.取得播放时间
view source
?
01.
- (NSTimeInterval) playableDuration
02.
{
03.
AVPlayerItem * item = self.worksPlayer.currentItem;
04.
if (item.status == AVPlayerItemStatusReadyToPlay) {
05.
return CMTimeGetSeconds(self.worksPlayer.currentItem.duration);
06.
}
07.
else
08.
{
09.
return(CMTimeGetSeconds(kCMTimeInvalid));
10.
}
11.
}
12.
- (NSTimeInterval) playableCurrentTime
13.
{
14.
AVPlayerItem * item = self.worksPlayer.currentItem;
15.
16.
if (item.status == AVPlayerItemStatusReadyToPlay) {
17.
NSLog(@"%f\n",CMTimeGetSeconds(self.worksPlayer.currentItem.currentTime));
18.
if (!playBeginState&&CMTimeGetSeconds(self.worksPlayer.currentItem.currentTime)==CMTimeGetSeconds(self.worksPlayer.currentItem.duration)) {
19.
[streamer stop];
20.
}
21.
playBeginState = NO;
22.
return CMTimeGetSeconds(self.worksPlayer.currentItem.currentTime);
23.
}
24.
else
25.
{
26.
return(CMTimeGetSeconds(kCMTimeInvalid));
27.
}
28.
}
IOS利用AVPlayer开发多媒体在线播放器相关推荐
- iOS开发:音乐播放器
/****************** iOS开发:音乐播放器 *****************/ 要求:给button一个触发事件,点击一下播放歌曲,显示暂停提示: 再点击一下 ...
- Java实现简单在线播放器——支持优酷和土豆
今天本来是打算继续写"Java新浪微博客户端开发"的,也实现了"系统托盘","点击查看大图"的功能,写到一半,想起上篇博文中有CSDN有一网 ...
- M3U8文件简介及在线播放器
m3u8文件格式 M3U8是Unicode版本的M3U,用UTF-8编码."M3U" 和 "M3U8" 文件都是苹果公司使用的 HTTP Live Stream ...
- 基于android平台多媒体播放器的设计与实现,基于Android的多媒体音乐播放器设计论文...
中图分类号:TP317 文献标识码:A 文章编号:1009-3044(2016)03-0240-02 随着计算机网络与手机的迅速发展,各种音乐资源成为人们生活中必不可少的一部分,音乐播放软件成了手机必 ...
- 微信PHP开发《音乐播放器》
文章目录 前言 一.简介 二.引入Vant框架 1.引入库 2.需要用到的知识 三.页面编写,以及js的实现 1.首页 2.搜索页 3.获取搜索歌曲 4.播放页 5.榜单列表页 6.对应页面的json ...
- 基于嵌入式linux的音乐播放器设计,基于嵌入式Linux的多媒体音乐播放器的设计与实现...
中图分类号:TP316.5 文献标识码:A 文章编号:1009-2552(2009)06-0102-03 基于嵌入式Linux的多媒体音乐播放器的设计与实现 王 奇 (黑龙江八一农垦大学信息技术学院, ...
- 在线播放器 在网页中插入MediaPlayer 兼容IE和FF的代码调试
<!– 在线播放器 在网页中插入MediaPlayer 兼容IE和FF的代码调试 Internet Explorer 和 Netscape 都支持 <embed> 元素,但它不是标准 ...
- .net vue漂亮登录界面_基于 electron-vue 开发的音乐播放器「实践」
作者:XiaoTuGou 转发链接:https://github.com/SmallRuralDog 前言 基于 electron-vue 开发的音乐播放器,界面模仿QQ音乐. 技术栈electron ...
- Android应用开发--MP3音乐播放器滚动歌词实现
Android应用开发--MP3音乐播放器滚动歌词实现 2013年6月2日 简.美音乐播放器开发记录 -----前话 有网友给我博客评论说,让我借鉴好的Android代码,代码贴出来的时候最好整体先 ...
最新文章
- Java8的集合:LinkedList的实现原理
- 虚拟存储:迈向私有云的关键一步
- ERP项目管理,哪一环才是关键节点?
- Win10 IoT 10 中文显示乱码或报错的问题
- phaser java_死磕 java同步系列之Phaser源码解析
- 重新认识一遍JavaScript - 2
- 【转】Linux 移动或重命名文件/目录-mv 的10个实用例子
- Android 12 重磅亮相!阔别 2 年的 Google I/O 开发者大会回来了
- 在线CSS3压缩美化格式化
- 5.1 百度寻人 ios解析 和 天气预报解析
- 炫酷文字消失动画网站404页面源码
- 程序员如何写简历之项目篇(二)
- Xbox One Dance Central Spotlight 歌曲列表
- SOF-SLAM:一种面向动态环境的语义视觉SLAM(2019,JCR Q1,	4.076)
- Codeforces Edu Hacking
- MOV AX,BX和MOV AX,[BX]的区别
- MySQL的SQL基础(五)
- 什么是SSR服务端渲染
- iOS 保持APP在后台长时间运行
- 为什么说php是个玩具,买玩具的目的是什么
热门文章
- 五年后的你想做什么? (----以此作开博纪念,送给朋友们!---)
- 高并发限流:8个步骤快速解决高并发问题!
- python使用localStorage.setItem()写入本地存储转义符的问题
- 怎样实现大整数相加?
- Codeforces - Parking Lot
- 从CSDN博客专家变动引发的随想
- 关于万向锁(Gimbal lock)问题的理解及解决
- 精雕细琢!阿里打磨出来的 MyBatis+设计模式 架构指南
- 画面撕裂、卡顿、垂直同步
- android layout v19,android-复制API 19之前的RelativeLayout.LayoutParam...