IOS视频播放器VKVideoPlayer简单教程
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。
VKVideoPlayer用法教程
播放直播流
- VKVideoPlayerViewController*viewController=[[VKVideoPlayerViewControlleralloc]init];
- [selfpresentModalViewController:viewController animated:YES];
- [viewController playVideoWithStreamURL:[NSURLURLWithString:@"http://content.viki.com/test_ios/ios_240.m3u8"]];
常用方法
- self.player=[[VKVikiVideoPlayeralloc]initWithVideoPlayerView:[[VKVikiVideoPlayeralloc]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)CGRectlandscapeFrame;
- Thispropertyisusedwhenrotate toLandscapebyforceRotate.Videoplayer view will bethisframe size.
- 关于字母
- 要自定义字幕,有一些方法。改变字体大小,使用vksharedutility。有3个值。
- // value accepts @0, @1, @2 or @3;
- // @0 : Tiny
- // @1 : Medium
- // @2 : Large
- // @3 : Huge
- [VKSharedUtilitysetValue:@1forKey:kVKSettingsSubtitleSizeKey];
- //或者你可以重写下面的方法来自定义标题样式。
- -(DTCSSStylesheet*)captionStyleSheet:(NSString*)color{
- floatfontSize=1.3f;
- floatshadowSize=1.0f;
- switch([[VKSharedUtilitysetting:kVKSettingsSubtitleSizeKey]integerValue]){
- case1:
- fontSize=1.5f;
- break;
- case2:
- fontSize=2.0f;
- shadowSize=1.2f;
- break;
- case3:
- fontSize=3.5f;
- shadowSize=1.5f;
- break;
- }
- DTCSSStylesheet*stylesheet=[[DTCSSStylesheetalloc]initWithStyleBlock:[NSStringstringWithFormat:@"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]];
- returnstylesheet;
- }
代理方法
- //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;
IOS视频播放器VKVideoPlayer简单教程相关推荐
- iOS 视频播放器开发
需求设计 做一个小学生教育辅导视频播放器. 参考小猿搜题视频播放器 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L0GsyFSt-1675164972791)(htt ...
- iOS视频播放器,IJKMediaFramework开发环境和测试环境集合包
iOS视频播放器,IJKMediaFramework开发环境和测试环境集合包,支持https视频流播放,解压后大概160M多一点点.欢迎下载, 链接: https://pan.baidu.com/s/ ...
- html ios视频播放器,良心推荐!iOS端的视频播放应用
不知道大家还记不记得之前小编我推荐的最好用的iOS音乐播放器,如果没看过,可以点击这里.既然之前介绍了一款iOS端的音乐播放器给大家,那么今天就介绍一款iOS端十分好用的万能解码的视频播放器. 使用i ...
- pyglet -- 视频播放器 (简单实现,效果不是太好,切换资源会卡死)(三)
实现一个简单的视频播放器,效果不是很好.这里不多说,直接贴代码了. 1 #-*- coding:gbk -*- 2 import pyglet 3 import os 4 from pyglet.gl ...
- IOS视频播放器的制作
利用自带MPMoviePlayerController来实现视频播放,首先要在项目中导入MediaPlayer.Framework框架包. 在视图控制器中 #import "MediaPla ...
- ios逆向之frida简单教程
1. 准备: mac电脑 越狱好的手机 一个待分析的app 2. app砸壳 文章参考https://www.jianshu.com/p/80c1311530c3 3. 反编译出头文件 文章参考htt ...
- 强大的视频播放器 KMPlayer 简单使用
KMPlayer 可以以任意倍速播放视频,且不会变成女声(对比某播放器) shift + +加速 shift + -减速 音频延迟调节(默认每次10ms) + . - 以上均为小键盘的加减键 win6 ...
- MFC创建MEDIA_PLAYER播放器,简单教程
我使用的工具是vs2013. 1.创建MFC工程(对话框),不介绍了.删掉工程生成的对话插件,确定和取消按钮: 2.在上面图示中,鼠标右键插入ActiveX控件,找到Windows Media Pla ...
- Windows10系统电脑怎样设置默认的视频播放器【图文教程】
参考:
- 最简单的基于DirectShow的示例:视频播放器自定义版
===================================================== 最简单的基于DirectShow的示例文章列表: 最简单的基于DirectShow的示例:视 ...
最新文章
- 2022-2028年中国汽车铝合金冲压件行业市场运营模式及未来发展潜力报告
- Go 语言的包依赖管理
- Task和async/await详解
- 第十节:进一步扩展两种安全校验方式
- 使用Python编写简单网络爬虫抓取视频下载资源
- JavaScript中call,apply,bind方法的总结。
- Navicat for mysql 远程连接 mySql数据库10061、1045错误
- Windows NAS迁移工具
- 自己动手写操作系统2011040101
- 用java怎么实现多语言翻译_快速实现中文翻译多国语言
- 4G标准LTE FDD与LTE TDD的不同
- FPGA串口传图sobel边缘检测
- 用three.js渲染上海外滩模型
- 在线的h5编辑器汇总和分析
- thinkadmin 内置小程序授权获取openid和生成小程序二维码的使用
- 关于大屏拼接方案 触摸屏 红外 和 电容屏
- 大学新生不知道去哪里找论文参考文献?
- 51nod - 1204 Parity
- php 时间戳 精确到秒,时间戳与时间相互转换(php .net精确到毫秒)
- Web容器(一):Web容器简介
热门文章
- 解决Win7 64位安装 Microsoft .NET Framework 4 失败的情况
- 评价得分计算:确立权重的方法
- centos6.3 mysql安装_CentOS 6.3 安装MySQL-5.7.10
- powerbuilder防止反编译: pbkiller无法解析的部分公布
- 注册Flash8.ocx控件
- 搭建一个网站的价格以及步骤全面解读
- 电力系统微型计算机继电保护试题及答案,全国2010年月高等教育自学考试电力系统微型计算机继电保护试题及答案.doc...
- java基础:网络编程(三)UDP编程
- 全网最新Linux全套教程
- linux全自动备份网站到百度云盘,Linux定时备份数据到百度云盘