如何用avplayer播放本地视频怎么2倍播放

以下为网友对AVPlayer 超强媒体播放器怎么样及好不好用的评价:
1楼 非凡网友就 AVPlayer 超强媒体播放器 评价内容: 14:41:47
5000) { content.focus(); alert('评论内容字数超过5000!'); }
if(username.value=='') { username.focus(); alert('昵称不能为空!'); }
评分100857055402510
杀毒举报无毒霸瑞星NOD卡巴360杀毒360卫士
热门专题推荐iOS 教你使用MP、AVPlayer、AVPlayerVC构建一个完整的视频播放器 - 简书
下载简书移动应用
写了6816字,被93人关注,获得了156个喜欢
iOS 教你使用MP、AVPlayer、AVPlayerVC构建一个完整的视频播放器
标题必须要浮夸!要感觉像是一个大新闻。长者如是说。其实是前几天去面试的时候,被要求说必须做过视频播放相关项目。有点闹心之余,就花了点时间在家写了一个简单播放器,基本实现了主流播放器的大致功能。之前项目没有需求用到过视频播放,所以写的时候难免会遇到一些坑,花了一些时间解决。
苹果在视频播放方面提供了多个框架供我们选择使用。分别为:
基于mediaPlayer类库的MPMediaPlayerController(iOS9后遭到废弃,被AVPlayerViewController所替代)
基于AVFounditon类库的AVPlayer
基于AVKit类库的AVPlayerViewController(iOS8后才可使用)
AVPlayer与MPMediaPlayerController比较:
AVplayer有更多的灵活性,当然,也需要你去自定义构建UI。还有一大优势,例如其扩展的AVQueuePlayer,可以实现视频无缝队列播放、多视频同时播放、视频转换、编解码等功能。
MPMediaPlayerController实际上是基于AVPlayer的简单UI封装,对于一般的播放要求,几行代码就可实现,省心省事。因为MPMediaPlayerController是对AVPlayer进行的单例封装,所以不能进行多视频播放。
播放器Demo(全屏)已实现功能点:
push到播放器页面,横屏显示。
单机隐藏or显示上方标题栏与下方操作栏。
呼出右侧设置栏。
视频播放操作与进度条设置。
在屏幕上左右拖动,进行视频快进与快退。
在屏幕左侧上下拖动,进行亮度调整。
在屏幕右侧上下拖动,进行音量调整。
想到但是暂未实现的功能点:(大多为优化或与业务相关)
屏幕或进度条拖动快进操作时,添加提示框进行快进时间的实时提示。
用户无操作两三秒之后自动隐藏上下View。
视频清晰度调整按钮。(更换视频源)
操作加锁按钮。(加锁后未进行解锁操作之前不可进行操作)
弹幕相关。
用户允许横屏状态下,横屏竖屏自动进行页面切换与动画效果等。
网络视频的缓存、下载等。
软硬解码模式切换等。
笔者Demo选择使用了AVPlayer进行视频播放器的构建。由于UI的代码实现,加上略蛋疼的逻辑代码,播放器页面的代码量达到400多行,之后有时间的话会再进行优化。这里只贴出部分代码,想要查看或借鉴完整Demo,可以到本人去下载。
使用AVPlayer构建播放器
1.导入头文件
#import &AVFoundation/AVFoundation.h&
2.其实没什么可说的,很简单,先初始化AVPlayer,然后添加到AVPlayerLayer,最后将其添加到视图的layer层。
#pragma mark - Demo中此视图的属性
#define TopViewHeight 55
#define BottomViewHeight 72
#define mainWidth [UIScreen mainScreen].bounds.size.width
#define mainHeight [UIScreen mainScreen].bounds.size.height
//上层建筑
@property (nonatomic,strong)UIView *topV
@property (nonatomic,strong)UIButton *backB
@property (nonatomic,strong)UILabel *titleL
@property (nonatomic,strong)UIButton *settingsB
//经济基础
@property (nonatomic,strong)UIView *bottomV
@property (nonatomic,strong)UIButton *playB
@property (nonatomic,strong)UILabel *textL
@property (nonatomic,assign)BOOL isP
@property (nonatomic,strong)UISlider *movieProgressS//进度条
@property (nonatomic,assign)CGFloat ProgressBeginToM
@property (nonatomic,assign)CGFloat totalMovieD//视频总时间
//核心躯干
@property (nonatomic,strong)AVPlayer *
//神之右手
@property (nonatomic,strong)UIView *settingsV
@property (nonatomic,strong)UIView *rightV
@property (nonatomic,strong)UIButton *setTestB
//touch evens
@property (nonatomic,assign)BOOL isShowV
@property (nonatomic,assign)BOOL isSettingsViewS
@property (nonatomic,assign)BOOL isSlideOrC
@property (nonatomic,strong)UISlider *volumeViewS
@property (nonatomic,assign)float systemV//系统音量值
@property (nonatomic,assign)float systemB//系统亮度
@property (nonatomic,assign)CGPoint startP//起始位置坐标
@property (nonatomic,assign)BOOL isTouchBeganL//起始位置方向
@property (nonatomic,copy)NSString *isSlideD//滑动方向
@property (nonatomic,assign)float startP//起始进度条
#pragma mark - 播放器躯干
- (void)createAvPlayer{
//设置静音状态也可播放声音
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
CGRect playerFrame = CGRectMake(0, 0, self.view.layer.bounds.size.height, self.view.layer.bounds.size.width);
AVURLAsset *asset = [AVURLAsset assetWithURL: _url];
Float64 duration = CMTimeGetSeconds(asset.duration);
//获取视频总时长
_totalMovieDuration =
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset: asset];
_player = [[AVPlayer alloc]initWithPlayerItem:playerItem];
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:_player];
playerLayer.frame = playerF
playerLayer.videoGravity = AVLayerVideoGravityResizeA
[self.view.layer addSublayer:playerLayer];
//需要设置自动播放的直接play即可
//[_player play];
屏幕单击手势与视频快进
屏幕单击1.符合条件的情况下(手指按下后离开屏幕,并且没有拖动)通过BOOL值判断,隐藏或显示上下View
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
CGPoint point = [[touches anyObject] locationInView:self.view];
if (_isShowView) {
//上下View为显示状态,此时点击上下View直接return
if ((point.y&CGRectGetMinY(self.topView.frame)&&point.y& CGRectGetMaxY(self.topView.frame))||(point.y&CGRectGetMaxY(self.bottomView.frame)&&point.y&CGRectGetMinY(self.bottomView.frame))) {
_isShowView = NO;
[UIView animateWithDuration:0.5 animations:^{
_topView.alpha = 0;
_bottomView.alpha = 0;
_isShowView = YES;
[UIView animateWithDuration:0.5 animations:^{
_topView.alpha = 1;
_bottomView.alpha = 1;
2.右侧View显示的状态下,点击屏幕左半空白区域,隐藏右侧View
if (_isSettingsViewShow) {
if (point.x&CGRectGetMinX(_rightView.frame)&&point.x& CGRectGetMaxX(_rightView.frame)) {
_settingsView.alpha = 0;
_isSettingsViewShow = NO;
拖动快进1.计算后得出拖动方向为横向拖动。
CGPoint location = [[touches anyObject] locationInView:self.view];
CGFloat changeY = location.y - _startPoint.y;
CGFloat changeX = location.x - _startPoint.x;
if(fabs(changeX) & fabs(changeY)){
_isSlideDirection = @"横向";//设置为横向
}else if(fabs(changeY)&fabs(changeX)){
_isSlideDirection = @"纵向";//设置为纵向
_isSlideOrClick = NO;
NSLog(@"不在五行中。");
2.根据手指按下与离开屏幕后,横向位移的坐标值,对视频播放进度进行刷新。
if (_isSlideOrClick) {
_isSlideDirection = @"";
_isSlideOrClick = NO;
CGFloat changeY = point.y - _startPoint.y;
CGFloat changeX = point.x - _startPoint.x;
//如果位置改变 刷新进度条
if(fabs(changeX) & fabs(changeY)){
[self scrubberIsScrolling];
//拖动进度条
-(void)scrubberIsScrolling{
//计算出拖动的当前秒数(总长*当前百分比)
NSInteger dragedSeconds = floorf(_totalMovieDuration * _movieProgressSlider.value);
CMTime newCMTime = CMTimeMake(dragedSeconds, 1);
[_player seekToTime:newCMTime completionHandler:^(BOOL finished) {
[_player play];
[_playBtn setTitle:@"暂停" forState:UIControlStateNormal];
MPMediaPlayerController与AVPlayerViewController的使用介绍
MPMediaPlayerController与AVPlayerViewController,两者都是基于AVPlayer的简单UI封装,如果只是需要简单的视频播放功能,可以使用这两个类快速的构建视频播放器。
MPMediaPlayerController1.导入头文件
#import &MediaPlayer/MediaPlayer.h&
2.初始化mp,几行代码既可以实现。
@property (nonatomic,strong)MPMoviePlayerController *
NSURL *url1 = [[NSBundle mainBundle]URLForResource:@"chenyifaer" withExtension:@"mp4"];
_mp = [[MPMoviePlayerController alloc] initWithContentURL:url1];
_mp.controlStyle = MPMovieControlStyleN
_mp.view.frame = CGRectMake(0, 0, self.view.layer.bounds.size.height, self.view.layer.bounds.size.width);
[self.view addSubview:_mp.view];
[_mp play];
controlStyle属性有三个值:
MPMovieControlStyleNone,
MPMovieControlStyleEmbedded,
//有全屏按钮与控制
MPMovieControlStyleFullscreen, // 默认全屏,有退出和控制
当然还有一些其他属性,有需要可以自行进行设置。
AVPlayerViewController1.导入框架与头文件
#import &AVKit/AVKit.h&
2.初始化AVPlayerViewController,创建一个AVPlayer添加上。然后将其添加到视图上,再将View添加到self.View上,然后play即可
NSURL *url1 = [[NSBundle mainBundle]URLForResource:@"chenyifaer" withExtension:@"mp4"];
AVPlayer * player = [AVPlayer playerWithURL:url1];
AVPlayerViewController *playerController = [[AVPlayerViewController alloc]init];
playerController.player =
[self addChildViewController:playerController];
[self.view addSubview:playerController.view];
playerController.view.frame = CGRectMake(0, 0, self.view.layer.bounds.size.height, self.view.layer.bounds.size.width);
[player play];
同样几行代码,即可实现。
1.导入头文件
#import &MediaPlayer/MediaPlayer.h&
2.借助MPVolumeView类来获取到其音量进度条,进而进行音量获取与控制
@property (nonatomic,strong)UISlider *movieProgressS//进度条
MPVolumeView *volumeView = [[MPVolumeView alloc] init];
_volumeViewSlider =
for (UIView *view in [volumeView subviews]){
if ([view.class.description isEqualToString:@"MPVolumeSlider"]){
_volumeViewSlider = (UISlider *)
3.触摸屏幕时,记录手指按下的位置、获取按下时系统的音量(实现touchesBegan方法)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
_startProgress = _movieProgressSlider.
4.手指在规定行为下(手指按下位置为视图右半区,且纵向滑动)持续滑动时,动态改变系统音量(实现touchesMoved方法)
//手指持续滑动,此方法会持续调用
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
CGPoint location = [[touches anyObject] locationInView:self.view];
int index = location.y - _startPoint.y;
if(index&0){
[_volumeViewSlider setValue:_systemVolume - (abs(index)/10 * 0.05) animated:YES];
[_volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];
[_volumeViewSlider setValue:_systemVolume + (abs(index)/10 * 0.05) animated:YES];
[_volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];
1.触摸屏幕时,记录手指按下的位置、按下时屏幕的亮度(实现touchesBegan方法)2.手指在规定行为下(手指按下位置为视图左半区,且纵向滑动)持续滑动时,不断动态处理(实现touchesMoved方法)3.改变屏幕亮度:[UIScreen mainScreen].brightness = X (0~1);
//手指持续滑动,此方法会持续调用
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
CGPoint location = [[touches anyObject] locationInView:self.view];
int index = location.y - _startPoint.y;
if(index&0){
[UIScreen mainScreen].brightness = _systemBrightness - abs(index)/10 * 0.01;
_movieProgressSlider.value = _startProgress - abs(index)/10 * 0.008;
1.设置应用支持横屏(默认支持)。2.在根视图中设置默认竖屏(Nav、TabBar、VC基类)
- (BOOL)shouldAutorotate{
return NO;
- (UIInterfaceOrientationMask)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskP
3.在需要横屏的VC中重写下列方法即可
//允许横屏旋转
- (BOOL)shouldAutorotate{
return YES;
//支持左右旋转
- (UIInterfaceOrientationMask)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscapeRight|UIInterfaceOrientationMaskLandscapeL
//默认为右旋转
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationLandscapeR
点此下载:源码作者其他文章推荐:
怎么样,实现一个简单的视频播放器是不是很简单。当然,要做一个好的视频播放器,需要更多的优化处理、UI处理、业务功能扩展、动画效果....笔者Demo中关于timer与进度条的互动之间不甚完美,还有些小问题。总之,初次尝试写,水平有限,如有错误,还望指正。
参考:1.2.3.4.其他小问题多在查询解决。
PS:最后吐槽一下。因为写的稍微有点多,想做个快速电梯树进行页内跳转,结果发现简书竟然不支持&span id="jump"&正文&/span&这样使用锚点进行页内跳转的语法。简直坑爹。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
如果你是程序员,或者有一颗喜欢写程序的心,喜欢分享技术干货、项目经验、程序员日常囧事等等,欢迎投稿《程序员》专题。
专题主编:小...
· 154361人关注
玩转简书的第一步,从这个专题开始。
想上首页热门榜么?好内容想被更多人看到么?来投稿吧!如果被拒也不要灰心哦~入选文章会进一个队...
· 125281人关注
分享 iOS 开发的知识,解决大家遇到的问题,讨论iOS开发的前沿,欢迎大家投稿~
· 24874人关注
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:求助,百度云已经下载好的视频如何用avplayer看_ipad吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:386,375贴子:
求助,百度云已经下载好的视频如何用avplayer看收藏
如题啊,看学习资料想加速着看,结果下载了不知道怎么用av播放器放,谢谢了
三叔正版授权网游公测!
恩“学习资料”我懂的
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或iOS多媒体播放音乐AVAudioPlayer和AVPlayer
iOS多媒体播放音乐AVAudioPlayer和AVPlayer
1 iOS的音频播放方式
AVAudioPlayer AVPlayer 系统声音音频排列
AVAudioPlayer
使用简单方便,但只能播放本地音频,不支持流媒体播放
iOS4.0以后,可以使用AVPlayer播放本地音频和支持流媒体播放,但是提供接口较少,处理音频不够灵活
音频队列主要处理流媒体播放,提供了强大且灵活的API接口(C行数的接口),但是处理起来较为复杂。
2 AVAudioPlayer的使用
使用AVAudioPlayer和AVPlayer需要引用AVFoundation类库
在.m文件中的loadview方法中添加以下方法
NSBundle* bundle=[NSBundle mainBundle];
//音频文件路径
NSString* urlString=[bundle pathForResource:@"第一夫人" ofType:@"mp3"];
//初始化url
NSURL* url=[[NSURL alloc]initFileURLWithPath:urlString];
AVAudioPlayer* audioplayer=[[AVAudioPlayeralloc]initWithContentsOfURL:url error:NULL];
NSLog(@"hello");
//准备播放
[audioplayer prepareToPlay];
//[audioplayer play];
if ([audioplayer play]) {
NSLog(@"开始播放");
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'无敌视频播放器AVPlayer、RushPlayer使用教程及评测
很多买了iOS设备的同学都会有想在漂亮的屏幕上看视频,但我们的iPhone、iTouch和iPad官方支持的视频只有MP4、MOV和m4v这几种格式,这几种格式在国外非常流行,但对于国内的用户来说,最常用的视频是AVI、WMV、RMVB、MKV等,如何实现在iOS设备上播放这些视频呢?笔者今天为大家推荐两款比较全能的视频播放器—AVPlayer和RushPlayer。这两款软件都是主打本地视频的播放,在讲解这两款软件的用法之前,需要视频播放器的朋友请先拉到文章的末尾下载这两款播放器哦。安装完这两款播放器之后,怎么使用呢?两款软件的使用方法相同,我们就以AVPlayer为例说明一下怎么使用吧。(以下方法都需要在电脑上操作哦)方法一:使用同步助手(未安装同步助手的同学请在浏览器输入下载安装)1.首先将你的设备连上同步助手,在设备的“文件管理”里有个“我的视频”,如果安装了AVPlayer的同学就可以看到AVPlayer下的文件夹。2.将你想要在iOS设备上播放的视频拖拽进来这个文件夹里,然后打开iOS设备上的AVPlayer或者RushPlayer即可。方法二:使用iTunes1.将设备连上iTunes,待iTunes识别之后点击左侧的你的设备,然后点击右侧的应用程序2.进入应用程序后,滚动条拉到底部的“文件共享”,点击AVPlayer或者RushPlayer,跟前面操作相同,将视频拖到这里即可,iTunes会自动同步进iOS设备中。方法三:还是使用同步助手1.连接设备到同步助手,点击文件管理。2.文件管理下还有个文件管理,里面有个iTunes文件共享,使用方法跟方法二相同,适合那些没有安装iTunes的朋友。接下来说说这两款播放器怎么使用,其实也蛮简单的,因为这两款软件都是中文界面,打开AVPlayer主界面,第一个“Media Explorer”就是你从电脑传到此处的视频文件,点进去可以看到文件的名称、分辨率、格式、大小等信息。点击播放之后,可以看到AVPlayer的界面还是比较花哨的,但那些图标只要单击一下即可隐藏,在播放的时候可以快进、看下一首、查看影片信息、倍速播放、字幕开关、旋转锁定、调节色彩等功能。而RushPlay的界面就比较简单,跟iOS自带的设备比较相似,上手超简单。最后说说视频播放的效果,笔者用的iPhone 4,所以还不能代表iOS设备目前的最高水准,在测试720P()的MKV、AVI的文件的时候,两款播放器都比较流畅(720P以下的自然更加流畅了)。最后说说RMVB这个网上最流行的格式,小编将一个码率高达10Mbps速率的720P()的放在两款播放器上,都出现了比较卡顿的问题,所以推荐大家最好不要把太高分辨率或者太高码率的RMVB放到AV和Rush这两款播放器上。但在比较低一点分辨率的RMVB方面,RushPlayer要比AVPlayer上更加流畅一些,所以说如果你的电脑上RMVB视频较多的话,建议选择RushPlayer。最后,经过一番的试用,AVPlayer和RushPlayer确实都算是iOS平台上非常优秀的视频播放器,突破了苹果限制的多种视频播放对国内用户的作用很大。就如前文所说,如果你需要更多的功能和更多的DIY,那么建议选择AVPlayer,如果你喜欢简洁或者比较喜欢下载RMVB文件的话,选择RushPlayer吧。注:本文是同步网络原创作品,如需转载请注明出处!
AVPlayer: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? RushPlayer:? ? ? ? ? ? ? ? ? ? ?
转载请注明 《无敌视频播放器AVPlayer、RushPla...》转自同步推资讯
评论可能会在缓存5分钟后显示
同类目其他文章
12345678910
&&闽网文(-036号&&增值电信业务经营许可证闽[号
厦门同步网络有限公司&&版权所有&&
地址:厦门市思明区软件园二期望海路10号之三3F&&
同步助手是最安全易用的苹果手机助手,是iPhone、iPad、iTouch的管理工具,可以下载游戏、软件、壁纸、铃声资源,玩苹果就用同步助手!

我要回帖

更多关于 avplayer播放本地视频 的文章

 

随机推荐