AVFoundation--AVPlayer
//
// AVPlayerNetViewController.m
// PodsTest
//
// Created by ZhuYi on 16/4/29.
// Copyright © 2016年 DDP. All rights reserved.
//
#import "AVPlayerNetViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface AVPlayerNetViewController (){
AVPlayer *player;//播放器对象
UIView *container; //播放器容器
UIButton *playOrPause; //播放/暂停按钮
UIProgressView *progress;//播放进度
AVPlayerItem *playerItem;//播放项
}
@end
@implementation AVPlayerNetViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.view.backgroundColor = [UIColor whiteColor];
[self container];
[self progressView];
[self setUpPlayer];
}
- (void)container{
container = [[UIView alloc] initWithFrame:CGRectMake(, , self.view.frame.size.width, )];
[self.view addSubview:container];
}
- (void)progressView{
progress = [[UIProgressView alloc] initWithFrame:CGRectMake(, , self.view.frame.size.width - , )];
progress.progress = ;
progress.progressTintColor = [UIColor orangeColor];
progress.trackTintColor = [UIColor grayColor];
[self.view addSubview:progress];
playOrPause = [UIButton buttonWithType:UIButtonTypeCustom];
playOrPause.frame = CGRectMake(, , self.view.frame.size.width - , );
playOrPause.selected = NO;
playOrPause.backgroundColor = [UIColor orangeColor];
[playOrPause setTitle:@"播放" forState:UIControlStateNormal];
[playOrPause setTitle:@"暂停" forState:UIControlStateSelected];
[playOrPause addTarget:self action:@selector(playControlClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:playOrPause];
}
- (void)playControlClicked:(UIButton *)sender{
sender.selected = !sender.selected;
if (sender.selected) {
[player play];
}else{
[player pause];
}
}
- (void)setUpPlayer{
NSURL *url = [NSURL URLWithString:@"http://7s1sjv.com2.z0.glb.qiniucdn.com/9F76A25D-9509-DEE9-3D8A-E93F360BB0E5.mp4"];
playerItem = [AVPlayerItem playerItemWithURL:url];
[playerItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil];// 监听status属性
[playerItem addObserver:self forKeyPath:@"loadedTimeRanges" options:NSKeyValueObservingOptionNew context:nil];// 监听缓冲进度
//给AVPlayerItem添加播放完成通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
player = [AVPlayer playerWithPlayerItem:playerItem];
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
playerLayer.frame = container.frame;
[container.layer addSublayer:playerLayer];
}
-(void)playbackFinished:(NSNotification *)notification{
NSLog(@"视频播放完成.");
}
#pragma mark - KVO - status
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
AVPlayerItem *item = (AVPlayerItem *)object;
if ([keyPath isEqualToString:@"status"]) {
if ([item status] == AVPlayerStatusReadyToPlay) {
NSLog(@"AVPlayerStatusReadyToPlay");
CMTime duration = item.duration;// 获取视频总长度
NSLog(@"%f", CMTimeGetSeconds(duration));
}else if([item status] == AVPlayerStatusFailed) {
NSLog(@"AVPlayerStatusFailed");
}else{
NSLog(@"AVPlayerStatusUnknown");
}
}else if ([keyPath isEqualToString:@"loadedTimeRanges"]) {
}
}
@end
AVFoundation--AVPlayer的更多相关文章
- AVPlayer
AVPlayer AVPlayerLayer是CALayer的一个子类,由于AVPlayer这个播放器只能安置在AVPlayerLayer 这个图层之上,所以我们需要实例化一个UIView,并 ...
- 基于 AVPlayer 自定义播放器
如果我只是简单的播放一个视频,而不需要考虑播放器的界面.iOS9.0 之前使用 MPMoviePlayerController, 或者内部自带一个 view 的 MPMoviePlayerViewCo ...
- iOS:基于AVPlayer实现的视频播放器
最近在学习AVFoundation框架的相关知识,写了一个基于AVPlayer的视频播放器,相关功能如下图: 代码github:https://github.com/wzpziyi1/VideoPla ...
- iOS开发 - AVPlayer实现流音频边播边存
边播边下有三套左右实现思路,本文使用AVPlayer + AVURLAsset实现. 概述 1. AVPlayer简介 AVPlayer存在于AVFoundation中,可以播放视频和音频,可以理解为 ...
- AVPlayer的使用本地视频
1引入AVFoundation.framework框架 2引入头文件<AVFoundation/AVFoundation.h>,并拖入需要播放的视频文件 代码如下: 自定义播放的View, ...
- iOS - AVPlayer 音视频播放
前言 NS_CLASS_AVAILABLE(10_7, 4_0) @interface AVPlayer : NSObject @available(iOS 4.0, *) public class ...
- iOS在线音乐播放SZKAVPlayer(基于AVPlayer的封装)
由于最近闲着没事,想找有关在线音乐播放的demo学习一下,在gitHub跟code4APP上面查找了很多帖子,结果很多在线音乐都是基于AudioStream实现的,我感觉用起来不太方便.后来突然发现, ...
- iOS的影片播放 MediaPlayer 和 AVPlayer(转)
分类: Iphone2013-01-28 16:19 5230人阅读 评论(0) 收藏 举报 在iOS開發上,如果遇到需要播放影片,如開機動畫…,我們很習慣地會使用MediaPlayer來播放影片,因 ...
- iOS 视频开发-AVPlayer
如果我只是简单的播放一个视频,而不需要考虑播放器的界面.iOS9.0 之前使用 MPMoviePlayerController, 或者内部自带一个 view 的 MPMoviePlayerViewCo ...
- 第六篇、AVplayer定制视频播放控件
1.引用头文件#import AVFoundation 2.自定义AVPlayer(播放的机器) 3.自定义AVPlayerItem(胶片) >> 视频的URL转成AVAsset 4.AV ...
随机推荐
- JavaEE XML XSL转换(XSLT)
XSL转换(XSLT) @author ixenos 定义: XSL转换机制可以指定将XML文档转换为其他格式的规则,例如,txt纯文本.XHTML或其他任何XML格式. 用途: XSLT通常用来将某 ...
- WPS Office 二次开发简易教程。
http://bbs.wps.cn/forum.php?mod=viewthread&tid=22004642
- python3 介绍
一.历史 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继 ...
- 视频编辑类sdk--lansoeditor--更新啦, 完全免费,欢迎下载
当前版本是20160506 beta, 增加了兼容高通的64位硬件编码器增加MediaInfo类,您可以轻松获取多媒体中的各种信息.增加了演示的15个ffmpeg处理方法,您可以用这些方法实现秒拍图像 ...
- USACO 3.2 Magic Squares
Magic SquaresIOI'96 Following the success of the magic cube, Mr. Rubik invented its planar version, ...
- 如何在MyEclipse中配置jre的编译运行环境
由于在MyEclipse中已经自带了jre编译环境,但由于版本太低,所以有时候需要将编译环境配置为系统的jre版本.在MyEclipse中配置jre的编译运行环境很简单,只需要全局配置一次,则所有项目 ...
- MFC 刷新失效的Picture控件
问题描述:如在摄像头显示时,关闭摄像头,此时Picture控件仍然显示最后一帧图像,需要刷新掉,还原Picture控件.或者重复显示两张不同大小的图片时,第二张背景有第一张图片残留. 解决方法1:(最 ...
- Elasticsearch 快照和恢复
摘要: 在Elasticsearch中的可以创建快照,它创建单个索引或整个群集到一个远程的存储库中.在以前的版本中,系统只支持共享存储的快照创建,最新的版本可以通过插件支持更多的方式.在执行快照操作前 ...
- sharepoint:基于AD的FORM认证
//来源:http://www.cnblogs.com/jindahao/archive/2012/05/07/2487351.html 需求: 1. 认证要基于AD 2. 登入方式要页面的方式(fo ...
- 《HTML5与CSS3权威指南》读书笔记(下册)—CSS3篇
大而全的CSS3 API类型书,并带有一些实用案例讲解,层次分明分类明确,新增技术都做了详情介绍.个人觉得如果在细节和文字表达上再下些功夫会更出色,其中部分内容如:rem.Media Queries网 ...