最近业余时间整理的一个ios播放器,界面采用storyboard,以前几乎都是用代码布局,但是用过一个项目storyboard后,就感觉storyboard很靠谱,团队合作版本控制的问题解决其实很简单,每个人一个storyboard就可以了。播放代码使用的是avplayer,最大的优化就是播放界面和播放代码完全分离。

-(void)createPlayer
{ self.playBackView=[[AVPlayerDemoPlaybackView alloc] initWithFrame:viewBounds];
[self.view addSubview:self.playBackView]; self.playerManager=[[AVPlayerManager alloc] init];
//设置url
//self.playerManager.URL=[[NSBundle mainBundle] URLForResource:@"1" withExtension:@"mp4"];
//self.playerManager.URL=[[NSBundle mainBundle] URLForResource:@"2" withExtension:@"mov"];
self.playerManager.URL=[NSURL URLWithString:@"http://static.tripbe.com/videofiles/20121214/9533522808.f4v.mp4"];
//设置播放界面
self.playerManager.mPlaybackView=self.playBackView;
//设置时间轴
self.playerManager.scrubSlider=self.scrubSlider;
//播放出错回调
self.playerManager.failedBlock=^(NSError *error){
if (error) {
UIAlertView *alert=[[UIAlertView alloc] initWithTitle:[error description] message:[error debugDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
};
__weak ViewController *weakself=self;
//播放状态改变
self.playerManager.statusChangeBlock=^(BOOL isPlaying){
weakself.playBtn.hidden=isPlaying;
weakself.pauseBtn.hidden=!isPlaying;
};
//播放结束
self.playerManager.playEndBlock=^(){
NSLog(@"播放结束");
};
//准备好播放
self.playerManager.readyToPlayBlock=^(){
weakself.totalTimeLabel.text=[weakself convertTimetoString:weakself.playerManager.duration];
weakself.playBtn.enabled=YES;
weakself.pauseBtn.enabled=YES;
[weakself.playerManager play]; };
//播放过程时间改变
self.playerManager.timeChangedBlock=^(double time)
{
weakself.currentTimeLabel.text=[weakself convertTimetoString:time];
};
//声音发生改变
self.playerManager.volumeChangedBlock=^(){
weakself.volumeSlider.value=weakself.playerManager.volume;
};
//缓冲时间
self.playerManager.bufferChangedBlock=^(double buffered){
weakself.processBar.progress=buffered/weakself.playerManager.duration;
weakself.speedLabel.text=[NSString stringWithFormat:@"%0.0fkb/s",weakself.playerManager.bufferSpeed];
}; //初始化完毕,准备播放
[self.playerManager prepare]; }

  

代码下载:http://pan.baidu.com/s/1eyVMm

ios视频播放器,代码和界面分离的更多相关文章

  1. 网页中插入Flvplayer视频播放器代码

    http://blog.csdn.net/china_skag/article/details/7424019 原地址:http://yuweiqiang.blog.163.com/blog/stat ...

  2. [ZT]嵌入视频播放器代码

    http://www.cnblogs.com/liulanglang/archive/2007/11/29/976638.html 页面插入REAL播放器代码: < id=video1 styl ...

  3. Android短信管家视频播放器代码备份

    自己保留备份,增强记忆   这是video的类 public class VideoActivity extends Activity { /** * 解析网络页面 */ private WebVie ...

  4. IOS视频播放器的制作

    利用自带MPMoviePlayerController来实现视频播放,首先要在项目中导入MediaPlayer.Framework框架包. 在视图控制器中 #import "MediaPla ...

  5. [刘阳Java]_酷炫视频播放器制作_界面篇

    今天开始分享一篇酷炫播放器制作,包括界面+JS.整个案例非常类似腾讯视频,优酷视频,爱奇艺视频.我们先看一下效果图,然后这篇文章主要界面篇 是不是效果比较酷炫,那么我接着来给大家说一下这个界面设计思路 ...

  6. iOS视频播放器

    用AVPlayer写的一个简单的播放器,支持横竖屏旋转! https://github.com/shumingli/module 欢迎加iOS开发交流群:516318591

  7. flv视频播放器代码

    <div class="txt1"> <script type="text/javascript"> var swf_width=307 ...

  8. iOS AVPlayer视频播放器

    代码地址如下:http://www.demodashi.com/demo/11168.html 一.运行效果 二.实现过程 ①.创建播放器avPlayer //创建播放器 url = [url str ...

  9. [刘阳Java]_酷炫视频播放器制作_JS篇

    此文章是接着上次写的<酷炫视频播放器制作_界面篇>将其完善,我们主要给大家介绍一下如何利用JS脚本来控制视频的播放.为了让大家能够保持对要完成的功能有直接的了解,我们还是将效果图附到文章里 ...

随机推荐

  1. Sql server2012还原备份文件语句

    --sql2012还原sql2008语句 --选择master数据库,新建查询 输入下面sql语句 --选择兼容模式(sql 2008)创建数据库db(还原时db写成原生数据库名称) RESTORE ...

  2. 《Python数据分析》环境搭建之安装Jupyter工具(一)

    (免责声明:本文档是针对Python有经验的用户,如果您对Python了解很少,或者从未使用,建议官方教程用Anaconda安装) 前期准备:Python环境 虽然Jupyter可以运行多种编程语言, ...

  3. Nginx+FastCGI运行原理

    Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用.FastCGI接口在Linux下是socket(这个socket可以是文件socket,也可 ...

  4. Open 语法的使用

    我们通常会需要在命令中,打开文件输入信息,在python中我们就会使用open语法,进行此方面的操作.详细方式如下:#Python open 函数# 作用:打开一个文件# 语法:open(file[, ...

  5. 多栏多列布局(display:flex)

    display:flex 多栏多列布局浏览器支持情况:火狐直接支持w3c无前缀写法,谷歌和opera支持-webkit- 前缀写法,比较适合移动端开发使用, display:flex 这个牛逼的css ...

  6. Redis——学习之路二(初识redis服务器命令)

    上一章我们已经知道了如果启动redis服务器,现在我们来学习一下,以及如何用客户端连接服务器.接下来我们来学习一下查看操作服务器的命令. 服务器命令: 1.info——当前redis服务器信息   s ...

  7. 让mysql不能为空的字段为空时也能插入

    第一步: 在mysql安装目录中找到my.ini将: #sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTIT ...

  8. hack

    1.Firefox @-moz-document url-prefix() { .selector { property: value; } }上面是仅仅被Firefox浏览器识别的写法,具体如: @ ...

  9. js中获取css的样式

    因为给定一个div宽度或者其他样式之后,再设置一个border的宽度在js中得到的obj.setoffWidth就会变成width加上border的二倍宽度,因此可以自己写一个方法来获取样式.(obj ...

  10. Struts 2

    <默认>execute -- 默认方法success -- 默认返回值 <配置><package><package name="default&qu ...