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用法教程

播放直播流


  1. VKVideoPlayerViewController*viewController=[[VKVideoPlayerViewControlleralloc]init];
  2. [selfpresentModalViewController:viewController animated:YES];
  3. [viewController playVideoWithStreamURL:[NSURLURLWithString:@"http://content.viki.com/test_ios/ios_240.m3u8"]];

常用方法


  1. self.player=[[VKVikiVideoPlayeralloc]initWithVideoPlayerView:[[VKVikiVideoPlayeralloc]init]];
  2. self.player.delegate=self;
  3. [self.view addSubview:self.player]
  4. VKVideoPlayerView有简单的方法添加到视图.
  5. -(void)addSubviewForControl:(UIView*)view;
  6. -(void)addSubviewForControl:(UIView*)view toView:(UIView*)parentView;
  7. -(void)addSubviewForControl:(UIView*)view toView:(UIView*)parentView forOrientation:(UIInterfaceOrientationMask)orientation;
  8. //展示按钮
  9. [self.player.view addSubviewForControl:newButton toView:self.player.view forOrientation:UIInterfaceOrientationMaskLandscape];
  10. VKVideoPlayer的属性.
  11. //这个属性可以改变的行为取向。如果UIViewController只有Portrait mode,把它设置为YES可以旋转屏幕。
  12. @property(nonatomic,assign)BOOL forceRotate;
  13. //当你旋转播放屏幕时,视频播放器视图将是这个大小。
  14. @property(nonatomic,assign)CGRectlandscapeFrame;
  15. Thispropertyisusedwhenrotate toLandscapebyforceRotate.Videoplayer view will bethisframe size.
  16. 关于字母
  17. 要自定义字幕,有一些方法。改变字体大小,使用vksharedutility。有3个值。
  18. // value accepts @0, @1, @2 or @3;
  19. // @0 : Tiny
  20. // @1 : Medium
  21. // @2 : Large
  22. // @3 : Huge
  23. [VKSharedUtilitysetValue:@1forKey:kVKSettingsSubtitleSizeKey];
  24. //或者你可以重写下面的方法来自定义标题样式。
  25. -(DTCSSStylesheet*)captionStyleSheet:(NSString*)color{
  26. floatfontSize=1.3f;
  27. floatshadowSize=1.0f;
  28. switch([[VKSharedUtilitysetting:kVKSettingsSubtitleSizeKey]integerValue]){
  29. case1:
  30. fontSize=1.5f;
  31. break;
  32. case2:
  33. fontSize=2.0f;
  34. shadowSize=1.2f;
  35. break;
  36. case3:
  37. fontSize=3.5f;
  38. shadowSize=1.5f;
  39. break;
  40. }
  41. DTCSSStylesheet*stylesheet=[[DTCSSStylesheetalloc]initWithStyleBlock:[NSStringstringWithFormat:@"body{
  42. text-align: center;
  43. font-size: %fem;
  44. font-family: Helvetica Neue;
  45. font-weight: bold;
  46. color: %@;
  47. text-shadow: -%fpx -%fpx %fpx #000, %fpx -%fpx %fpx #000, -%fpx %fpx %fpx #000, %fpx %fpx %fpx #000;
  48. vertical-align: bottom;
  49. }",fontSize,color,shadowSize,shadowSize,shadowSize,shadowSize,shadowSize,shadowSize,shadowSize,shadowSize,shadowSize,shadowSize,shadowSize,shadowSize]];
  50. returnstylesheet;
  51. }

代理方法


  1. //vkvideoplayer已委托协议vkvideoplayerdelegate。您可以使用它为您的应用程序的日志记录或其他控件。
  2. //这种方法被称为在改变状态之前。如果你还没有,你可以阻止视频播放器的状态改变。
  3. -(BOOL)shouldVideoPlayer:(VKVideoPlayer*)videoPlayer changeStateTo:(VKVideoPlayerState)toState;
  4. //这种方法是在改变状态之前。
  5. -(void)videoPlayer:(VKVideoPlayer*)videoPlayer willChangeStateTo:(VKVideoPlayerState)toState;
  6. //这种方法被称为改变状态。
  7. -(void)videoPlayer:(VKVideoPlayer*)videoPlayer didChangeStateFrom:(VKVideoPlayerState)fromState;
  8. //此方法在载入视频之前被调用。如果视频不应该播放,你可以在它的交通流量之前阻止。
  9. -(BOOL)shouldVideoPlayer:(VKVideoPlayer*)videoPlayer startVideo:(id)track;
  10. //这种方法是在开始视频之前调用的。你不能在这里停止视频。
  11. -(void)videoPlayer:(VKVideoPlayer*)videoPlayer willStartVideo:(id)track;
  12. //这种方法是在启动视频后调用的。
  13. -(void)videoPlayer:(VKVideoPlayer*)videoPlayer didStartVideo:(id)track;
  14. //在播放视频时,这种方法被称为每一秒。
  15. -(void)videoPlayer:(VKVideoPlayer*)videoPlayer didPlayFrame:(id)track time:(NSTimeInterval)time lastTime:(NSTimeInterval)lastTime;
  16. //这种方法被称为完成播放视频。你可以开始播放下一段视频在这里。
  17. -(void)videoPlayer:(VKVideoPlayer*)videoPlayer didPlayToEnd:(id)track;
  18. //这种方法被称为当用户做了一些行动。
  19. -(void)videoPlayer:(VKVideoPlayer*)videoPlayer didControlByEvent:(VKVideoPlayerControlEvent)event;
  20. //这种方法被称为当用户更改的底部标题语言。
  21. -(void)videoPlayer:(VKVideoPlayer*)videoPlayer didChangeSubtitleFrom:(NSString*)fronLang to:(NSString*)toLang;
  22. //这种方法被称为旋转动画之前。
  23. -(void)videoPlayer:(VKVideoPlayer*)videoPlayer willChangeOrientationTo:(UIInterfaceOrientation)orientation;
  24. //这种方法被称为旋转动画后。
  25. -(void)videoPlayer:(VKVideoPlayer*)videoPlayer didChangeOrientationFrom:(UIInterfaceOrientation)orientation;
  26. //调用此方法时发生错误。
  27. -(void)handleErrorCode:(VKVideoPlayerErrorCode)errorCode track:(id)track customMessage:(NSString*)customMessage;

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. pyglet -- 视频播放器 (简单实现,效果不是太好,切换资源会卡死)(三)

    实现一个简单的视频播放器,效果不是很好.这里不多说,直接贴代码了. 1 #-*- coding:gbk -*- 2 import pyglet 3 import os 4 from pyglet.gl ...

  5. IOS视频播放器的制作

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

  6. ios逆向之frida简单教程

    1. 准备: mac电脑 越狱好的手机 一个待分析的app 2. app砸壳 文章参考https://www.jianshu.com/p/80c1311530c3 3. 反编译出头文件 文章参考htt ...

  7. 强大的视频播放器 KMPlayer 简单使用

    KMPlayer 可以以任意倍速播放视频,且不会变成女声(对比某播放器) shift + +加速 shift + -减速 音频延迟调节(默认每次10ms) + . - 以上均为小键盘的加减键 win6 ...

  8. MFC创建MEDIA_PLAYER播放器,简单教程

    我使用的工具是vs2013. 1.创建MFC工程(对话框),不介绍了.删掉工程生成的对话插件,确定和取消按钮: 2.在上面图示中,鼠标右键插入ActiveX控件,找到Windows Media Pla ...

  9. Windows10系统电脑怎样设置默认的视频播放器【图文教程】

    参考:

  10. 最简单的基于DirectShow的示例:视频播放器自定义版

    ===================================================== 最简单的基于DirectShow的示例文章列表: 最简单的基于DirectShow的示例:视 ...

最新文章

  1. 2022-2028年中国汽车铝合金冲压件行业市场运营模式及未来发展潜力报告
  2. Go 语言的包依赖管理
  3. Task和async/await详解
  4. 第十节:进一步扩展两种安全校验方式
  5. 使用Python编写简单网络爬虫抓取视频下载资源
  6. JavaScript中call,apply,bind方法的总结。
  7. Navicat for mysql 远程连接 mySql数据库10061、1045错误
  8. Windows NAS迁移工具
  9. 自己动手写操作系统2011040101
  10. 用java怎么实现多语言翻译_快速实现中文翻译多国语言
  11. 4G标准LTE FDD与LTE TDD的不同
  12. FPGA串口传图sobel边缘检测
  13. 用three.js渲染上海外滩模型
  14. 在线的h5编辑器汇总和分析
  15. thinkadmin 内置小程序授权获取openid和生成小程序二维码的使用
  16. 关于大屏拼接方案 触摸屏 红外 和 电容屏
  17. 大学新生不知道去哪里找论文参考文献?
  18. 51nod - 1204 Parity
  19. php 时间戳 精确到秒,时间戳与时间相互转换(php .net精确到毫秒)
  20. Web容器(一):Web容器简介

热门文章

  1. 解决Win7 64位安装 Microsoft .NET Framework 4 失败的情况
  2. 评价得分计算:确立权重的方法
  3. centos6.3 mysql安装_CentOS 6.3 安装MySQL-5.7.10
  4. powerbuilder防止反编译: pbkiller无法解析的部分公布
  5. 注册Flash8.ocx控件
  6. 搭建一个网站的价格以及步骤全面解读
  7. 电力系统微型计算机继电保护试题及答案,全国2010年月高等教育自学考试电力系统微型计算机继电保护试题及答案.doc...
  8. java基础:网络编程(三)UDP编程
  9. 全网最新Linux全套教程
  10. linux全自动备份网站到百度云盘,Linux定时备份数据到百度云盘