VKVideoPlayer 是一个在 Viki iOS 应用里使用的视频播放器。

主要特性:

完全可定制的 UI
任何大小乃至全屏
支持字幕显示
可定制的字幕显示风格
支持 HTTP 直播流
支持屏幕方向调整
Bulletproof event machine to easily integrate features like video ads
Lots of delegate callbacks for your own logging requirements
VKVideoPlayer是一个经过严格测试的Viki视频播放器,是一个可以处理视频播放的所有技术细节的简单插件。默认情况下,该库使用AVPlayer和AVPlayerItem类在VKVideoPlayerView上播放视频。它是通过进入一个实施VKVideoPlayerTrackProtocol协议的跟踪对象来实现的。默认视频播放器会创建AVPlayer和AVPlayerItem对象来播放视频。

具有一些改进功能:完全自定义UI;没有全屏限制(可设置任意大小);可以显示字幕(支持SRT)并可自定义;支持HTTP Live Streaming协议;支持方向改变,即使开启方向锁定;支持Bulletproof事件机制,可以很容易地集成视频广告等功能;可为日志需求进行delegate callbacks。

iOS视频播放器VKVideoPlayer

VKVideoPlayer用法教程

播放直播流

VKVideoPlayerViewController *viewController = [[VKVideoPlayerViewController alloc] init];
[self presentModalViewController:viewController animated:YES];
[viewController playVideoWithStreamURL:[NSURL URLWithString:@”http://content.viki.com/test_ios/ios_240.m3u8“]];
常用方法

self.player = [[VKVikiVideoPlayer alloc] initWithVideoPlayerView:[[VKVikiVideoPlayer alloc] init]];
self.player.delegate = self;
[self.view addSubview:self.player]

VKVideoPlayerView有简单的方法添加到视图.

  • (void)addSubviewForControl:(UIView *)view;
  • (void)addSubviewForControl:(UIView )view toView:(UIView)parentView;
  • (void)addSubviewForControl:(UIView )view toView:(UIView)parentView forOrientation:(UIInterfaceOrientationMask)orientation;

//展示按钮
[self.player.view addSubviewForControl:newButton toView:self.player.view forOrientation:UIInterfaceOrientationMaskLandscape];

VKVideoPlayer的属性.

//这个属性可以改变的行为取向。如果UIViewController只有Portrait mode,把它设置为YES可以旋转屏幕。
@property (nonatomic, assign) BOOL forceRotate;

//当你旋转播放屏幕时,视频播放器视图将是这个大小。
@property (nonatomic, assign) CGRect landscapeFrame;
This property is used when rotate to Landscape by forceRotate. Video player view will be this frame size.

关于字母

要自定义字幕,有一些方法。改变字体大小,使用vksharedutility。有3个值。
// value accepts @0, @1, @2 or @3;
// @0 : Tiny
// @1 : Medium
// @2 : Large
// @3 : Huge
[VKSharedUtility setValue:@1 forKey:kVKSettingsSubtitleSizeKey];

//或者你可以重写下面的方法来自定义标题样式。

  • (DTCSSStylesheet*)captionStyleSheet:(NSString*)color {
    float fontSize = 1.3f;
    float shadowSize = 1.0f;

switch ([[VKSharedUtility setting:kVKSettingsSubtitleSizeKey] integerValue]) {
case 1:
fontSize = 1.5f;
break;
case 2:
fontSize = 2.0f;
shadowSize = 1.2f;
break;
case 3:
fontSize = 3.5f;
shadowSize = 1.5f;
break;
}

DTCSSStylesheet* stylesheet = [[DTCSSStylesheet alloc] initWithStyleBlock:[NSString stringWithFormat:@”body{\
text-align: center;\
font-size: %fem;\
font-family: Helvetica Neue;\
font-weight: bold;\
color: %@;\
text-shadow: -%fpx -%fpx %fpx #000, %fpx -%fpx %fpx #000, -%fpx %fpx %fpx #000, %fpx %fpx %fpx #000;\
vertical-align: bottom;\
}”, fontSize, color, shadowSize, shadowSize, shadowSize, shadowSize, shadowSize, shadowSize, shadowSize, shadowSize, shadowSize, shadowSize, shadowSize, shadowSize]];
return stylesheet;
}
代理方法

//vkvideoplayer已委托协议vkvideoplayerdelegate。您可以使用它为您的应用程序的日志记录或其他控件。

//这种方法被称为在改变状态之前。如果你还没有,你可以阻止视频播放器的状态改变。
- (BOOL)shouldVideoPlayer:(VKVideoPlayer*)videoPlayer changeStateTo:(VKVideoPlayerState)toState;

//这种方法是在改变状态之前。
- (void)videoPlayer:(VKVideoPlayer*)videoPlayer willChangeStateTo:(VKVideoPlayerState)toState;

//这种方法被称为改变状态。
- (void)videoPlayer:(VKVideoPlayer*)videoPlayer didChangeStateFrom:(VKVideoPlayerState)fromState;

//此方法在载入视频之前被调用。如果视频不应该播放,你可以在它的交通流量之前阻止。
- (BOOL)shouldVideoPlayer:(VKVideoPlayer*)videoPlayer startVideo:(id)track;

//这种方法是在开始视频之前调用的。你不能在这里停止视频。
- (void)videoPlayer:(VKVideoPlayer*)videoPlayer willStartVideo:(id)track;

//这种方法是在启动视频后调用的。
- (void)videoPlayer:(VKVideoPlayer*)videoPlayer didStartVideo:(id)track;

//在播放视频时,这种方法被称为每一秒。
- (void)videoPlayer:(VKVideoPlayer*)videoPlayer didPlayFrame:(id)track time:(NSTimeInterval)time lastTime:(NSTimeInterval)lastTime;

//这种方法被称为完成播放视频。你可以开始播放下一段视频在这里。
- (void)videoPlayer:(VKVideoPlayer*)videoPlayer didPlayToEnd:(id)track;

//这种方法被称为当用户做了一些行动。
- (void)videoPlayer:(VKVideoPlayer*)videoPlayer didControlByEvent:(VKVideoPlayerControlEvent)event;

//这种方法被称为当用户更改的底部标题语言。
- (void)videoPlayer:(VKVideoPlayer*)videoPlayer didChangeSubtitleFrom:(NSString*)fronLang to:(NSString*)toLang;

//这种方法被称为旋转动画之前。
- (void)videoPlayer:(VKVideoPlayer*)videoPlayer willChangeOrientationTo:(UIInterfaceOrientation)orientation;

//这种方法被称为旋转动画后。
- (void)videoPlayer:(VKVideoPlayer*)videoPlayer didChangeOrientationFrom:(UIInterfaceOrientation)orientation;

//调用此方法时发生错误。
- (void)handleErrorCode:(VKVideoPlayerErrorCode)errorCode track:(id)track customMessage:(NSString*)customMessage;

代码下载地址

本文由51ios原创,转载请注明转载自http://www.51ios.net/thirdlibs/5692.html

IOS视频播放器VKVideoPlayer相关推荐

  1. iOS 视频播放器开发

    需求设计 做一个小学生教育辅导视频播放器. 参考小猿搜题视频播放器 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L0GsyFSt-1675164972791)(htt ...

  2. iOS视频播放器,IJKMediaFramework开发环境和测试环境集合包

    iOS视频播放器,IJKMediaFramework开发环境和测试环境集合包,支持https视频流播放,解压后大概160M多一点点.欢迎下载, 链接: https://pan.baidu.com/s/ ...

  3. html ios视频播放器,良心推荐!iOS端的视频播放应用

    不知道大家还记不记得之前小编我推荐的最好用的iOS音乐播放器,如果没看过,可以点击这里.既然之前介绍了一款iOS端的音乐播放器给大家,那么今天就介绍一款iOS端十分好用的万能解码的视频播放器. 使用i ...

  4. IOS视频播放器的制作

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

  5. Android进阶:自定义视频播放器开发(下)

    上一篇文章我们主要讲了视频播放器开发之前需要准备的一个知识,TextureView,用于对图像流的处理.这篇文章开始构建一个基础的视频播放器. 一.准备工作 在之前的文章已经说过了,播放器也是一个vi ...

  6. android 音乐视频播放器(github上十二款最著名的Android播放器开源项目)

    1.ijkplayer 项目地址: https://github.com/Bilibili/ijkplayer 介绍:Ijkplayer 是Bilibili发布的基于 FFplay 的轻量级 Andr ...

  7. 开源视频播放器IjkPlayer使用记录之一--demo的使用及View的简要介绍

    1.初识Ijkplayer Android系统提供的MediaPlayer支持的编码格式有限,这里推荐一款开源的媒体播放器Ijkplayer. ijkplayer 是一个基于 ffplay 的轻量级 ...

  8. 推荐几款比较好Android视频播放器

    1.ijkplayer 项目地址: https://github.com/Bilibili/ijkplayer 介绍:Ijkplayer 是Bilibili发布的基于 FFplay 的轻量级 Andr ...

  9. ijkplayer打造完美视频播放器

    1.ijkplayer简介 ijkplayer是一个基于FFmpeg的轻量级Android/iOS视频播放器.FFmpeg的是全球领先的多媒体框架,能够解码,编码, 转码,复用,解复用,流,过滤器和播 ...

  10. Android vitamio、节操、ijkplayer视频播放器优缺点对比

    Vitamio 是一款 Android 与 iOS 平台上的全能多媒体开发框架 Vitamio 能够流畅播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常见格式的视频,还 ...

最新文章

  1. Python热文Top10,精选自1000篇文章
  2. 《研磨设计模式》chap18 状态模式state(3)应用到场景
  3. wamp httpd-vhosts.conf
  4. 全文搜索引擎 ElasticSearch 还是 Solr?
  5. C语言 按位或 正整数与负整数 之间
  6. vue webpack打包入口文件是哪个_Vue 学习笔记(二十五):webpack 相关
  7. 【软件测试】白盒测试の基路径法
  8. Node项目部署正常启动后不能访问的问题
  9. python sftp模块_python用paramiko模块上传本地目录到远程目录
  10. Strusts2笔记6--拦截器
  11. MP3 Lame 转换 参数 设置(转)
  12. 单片机编程用什么软件?单片机开发软件有哪些?华维告诉你.
  13. windows 驱动开发 DDK与WDK WDM的区别
  14. Linux程序设计第二版练习题(第五章)
  15. ipad尺寸html,HTML5之viewport标签,用于iPhone、iPad等手机网页开发。
  16. 基础sql语句的编写,学会这些sql语句的编写一般情况都够用,适合初学者
  17. WebRTC音频系统 音频发送和接收
  18. TikTok三大流行趋势 钛动带你看懂TikTok
  19. 机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾
  20. git版本回退【快速上手】

热门文章

  1. 计算机速录水平考试,汉字速录水平测试(速录证考试报名网站)
  2. mysql有mdf文件和ldf文件吗_mdf与ldf文件格式
  3. mkcert在windows系统上制作SSL证书
  4. Ueditor编辑器 .Net 版
  5. 十字绣图下载_十字绣与编程有什么关系? 比你想象的更多
  6. EP100的局部地址、逻辑地址和全局地址
  7. 宏基ACER E1-471G拆机心得及注意事项
  8. 微机计算机继电保护原理,微机继电保护的装置构成
  9. html5抓娃娃机微信小游戏源码
  10. 使用前端技术实现静态图片局部流动效果