iOS: ios视频播放(MPMediaPlayerController,AVPlayer,AVPlayerViewcontroller、ffmpeg-AVPlayer)

简介:

介绍:

和音频播放一样,ios也提供个很多的API。如mediaPlayer.framework下的MPMediaPlayerController、AVFounditon.framework下的AVPlayer和AVKit下的AVPlayerViewcontroller。MPMovieplayerController已经在ios9.0中被废弃了,用来替代的是AVPlayerViewcontroller。尽管如此,但还是说一下比较熟悉的MPMovieplayerController.

 

1、MPMovieplayerController

<1>初始化MPMovieplayerController

复制代码
// 创建本地URL(也可创建基于网络的URL)

NSURL* movieUrl = [[NSBundlemainBundle]URLForResource:@"movie"withExtension:@"mp4"];

// 使用指定URL创建MPMoviePlayerController

// MPMoviePlayerController将会播放该URL对应的视频

MPMoviePlayerController *moviePlayer = [[MPMoviePlayerControlleralloc]initWithContentURL:movieUrl];
复制代码

<2>设置属性并添加到当前控制器的View上

复制代码
// 设置该播放器的控制条风格。
moviePlayer.controlStyle =MPMovieControlStyleEmbedded;

// 设置该播放器的缩放模式
moviePlayer.scalingMode =MPMovieScalingModeAspectFit;

//设置播放视图大小
 _movieplayer.view.frame = self.view.bounds;

//设置播放视图宽高自适应调整
_movieplayer.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

//添加到当前控制器的View上
[self.View  addSubview:moviePlayer.view];
复制代码

 <3>播放选择

复制代码
//播放缓冲
[self.movieplayer prepareToPlay];

//播放开始
[moviePlayer play];

//播放暂停
[moviePlayer pause];

//播放停止
[moviePlayer stop];
复制代码

由于属性太多,这里只列出能完成简单的播放器的属性,其他属性可在头文件中查找,注意:播放的状态的监听和截图功能都是通过通知实现的。

这里给一个具体的代码:

ViewController类

  View Code

PlayViewController类

  View Code
  View Code

演示结果截图: 

播放前:                                             播放中:                          

  

  播放过程中一个指定时间点的视频截图

 

2、AVPlayer

AVPlayer既可以播放音乐又可以播放视频;使用AVPlayer不能直接显示视频,必须要加入AVPlayerLayer中,并添加到其他能显示的layer中。

复制代码
//获取播放源的url
NSString *filePath = [[NSBundlemainBundle] pathForResource:@"backspace"ofType:@"mov"];
NSURL *sourceMovieURL = [NSURLfileURLWithPath:filePath];

//创建播放器
AVAsset *movieAsset= [AVURLAsset URLAssetWithURL:sourceMovieURL options:nil];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:movieAsset];
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];


//创建播放图层
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
playerLayer.frame = self.view.layer.bounds;
playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;
[self.view.layer addSublayer:playerLayer];

//开始播放
[player play];
复制代码

 

3、AVPlayerViewcontroller

AVPlayerViewcontroller继承自UIViewController,一般适用于点击一个视频缩略图,modal出一个新的界面来进行播放的情况。

用法:

复制代码
//创建播放器
AVPlayerViewController *player = [[AVPlayerViewController alloc]init];
player.player = [[AVPlayer alloc]initWithURL:movieUrl];

//模态出播放器
[self presentViewController:player animated:YES completion:nil];
复制代码

 

4、ffmpeg-AVPlayer-for-iOS——强大的iOS视频播放框架

ffmpeg-avplayer-for-ios是一个微小但是强大的iOS视频播放框架,能够播放大多数的音频和视频格式文件(包括网络音频和视频流),没有格式转换的烦恼,不依赖VLC和SDL。支持播放1080P视频,但是建议只在iPad Air & iPhone 5s设备上播放1080P视频。

 
ffmpeg-avplayer-for-ios是专门针对iOS开发者编写的AVPlayer SDK,只需几行代码便可在应用中加入强大的视频播放器。
ffmpeg-avplayer-for-ios依赖于iOS OpenGL ES 2.0框架和基于LGPL协议开源的FFmpeg类库。
 
截图:
 
特性:
1、支持ARC;
2、支持armv7, armv7s, arm64, i386和x86-64;
3、支持播放本地文件;
4、支持Windows SMB/CIFS文件 (PRO version only);
5、支持http, https和rtmp协议;
6、解析音频和视频持续时间、帧尺寸信息;
7、获取视频缩略图;
8、实时位&帧率和网络缓冲进度计算;
9、查询当前播放时间信息;
10、播放速度控制;
11、亮度,对比度,饱和度控制;
12、支持音频、视频播放背景;
13、支持全屏模式;
14、系统音量控制;
15、从指定的事件位置播放;
16、支持播放、暂停、停止、重播、快进、快退。
17、支持音频会话中断处理程序;
18、自定义字幕字体;
19、支持嵌入字幕格式;
20、支持多个音频、字幕流;
21、支持SRT, ASS, SSA, SMI格式;
 
 
 
程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/5159726.html ,如需转载请自行联系原作者
相关文章
|
4月前
|
编解码 Linux 开发工具
iOS平台如何实现RTSP|RTMP播放端录像?
我们在做RTSP、RTMP直播播放器的时候,有个比较重要的功能,就是拉流端实时录像,包括设置单个录像文件大小、文件前缀、audio转AAC、只录制视频或只录制音频、开始录像、停止录像事件状态回调等。
|
4月前
|
图形学 Android开发 iOS开发
穿越数字洪流,揭秘Unity3d中的视频魔法!Windows、Android和iOS如何征服RTSP与RTMP的终极指南!
【8月更文挑战第15天】在数字媒体的海洋中,实时视频流是连接世界的桥梁。对于那些渴望在Unity3d中搭建这座桥梁的开发者来说,本文将揭示如何在Windows、Android和iOS平台上征服RTSP与RTMP的秘密。我们将深入探讨这两种协议的特性,以及在不同平台上实现流畅播放的技巧。无论你是追求稳定性的RTSP拥趸,还是低延迟的RTMP忠实粉丝,这里都有你需要的答案。让我们一起穿越数字洪流,探索Unity3d中视频魔法的世界吧!
64 2
|
6月前
|
iOS开发
技术好文:xcode动态图,ios实现动态图,iosgif,暂停和继续播放
技术好文:xcode动态图,ios实现动态图,iosgif,暂停和继续播放
58 1
|
7月前
|
Android开发 iOS开发
ios后台播放声音的三种实现方式
ios后台播放声音的三种实现方式
526 1
|
编解码 开发工具 Android开发
安卓端/iOS端如何播放4K分辨率的RTMP/RTSP流
4K分辨率即4096×2160的像素分辨率,它是2K投影机和高清电视分辨率的4倍,属于超高清分辨率。在此分辨率下,观众将可以看清画面中的每一个细节,每一个特写。影院如果采用惊人的4096×2160像素,无论在影院的哪个位置,观众都可以清楚的看到画面的每一个细节,影片色彩鲜艳、文字清晰锐丽,再配合超真实音效,这种感觉真的是一种难以言传的享受。
322 0
安卓端/iOS端如何播放4K分辨率的RTMP/RTSP流
|
视频直播 API iOS开发
微信团队分享:详解iOS版微信视频号直播中因帧率异常导致的功耗问题
功耗优化一直是 app 性能优化中让人头疼的问题,尤其是在直播这种用户观看时长特别久的场景。怎样能在不影响主体验的前提下,进一步优化微信iOS端视频号直播的功耗占用,本文给出了一个不太一样的答案。
168 0
|
开发工具 图形学 Android开发
Windows/Android/IOS平台如何在Unity3d播放RTSP/RTMP流
如果基于Unity3d完全重新开发一个播放器,代价大,周期长,不适合快速出产品,最好的方式就是集成现有Native平台上成熟稳定播放器.
149 1
|
JavaScript Android开发 iOS开发
layui框架实战案例(6):上传图片和视频自动调用IOS或安卓系统的摄像头功能
layui框架实战案例(6):上传图片和视频自动调用IOS或安卓系统的摄像头功能
507 0
|
iOS开发
iOS MachineLearning 系列(6)—— 视频中的物体轨迹分析
轨迹分析是比物体追踪更上层的一种应用。Vision框架中提供了检测视频中多个物体的运动轨迹等能力,在健身,体育类应用中非常有用。
153 0
|
算法 API vr&ar
iOS MachineLearning 系列(5)—— 视频中的物体运动追踪
本系列的前面几篇文章中,我们将静态图片分析相关的API做了详尽的介绍。在Vision框架中,还提供了视频中物体追踪的能力。 仔细想来,其实视频的分析和静态图片的分析本质上并无太大的区别,我们可以将视频拆解成图片帧,之后再对图片进行静态分析。将所有图片帧的分析结果反馈到视频上,即实现了对视频的分析能力。 视频中物体运动的跟踪常在一些AR游戏中应用,这些现实增强类的应用常常需要实时追踪显示中的物体。
206 0