VKVideoPlayer 0.1.4

VKVideoPlayer 0.1.4

测试已测试
Lang语言 Obj-CObjective C
许可证 Apache 2
发布上次发布2014年12月

Jarrold Ong 维护。



 
依赖
DTCoreText~> 1.6.11
CocoaLumberjack~> 1.7.0
VKFoundation= 0.1.1
 


  • Jarrold Ong, Jonathan Ong 和 Keisuke Matsuo

VKVideoPlayer

VKVideoPlayer 是我们在 Viki iOS App 中使用的已过战斗的视频播放器,它被世界上数十万名用户所喜爱。

在我们的工程博客上阅读简介

一些高级功能包括

  • 完全可定制的 UI
  • 没有全屏限制(可以设置为任何大小和位置!)
  • 显示字幕(支持默认的 SRT 格式)
  • 自定义字幕(使用 DTCoreText 的 CSS 进行样式化)
  • 支持 HTTP Live 流
  • 支持方向变化(即使在设置为锁定方向时)
  • 提供可靠的进程事件机,可以轻松集成视频广告等特性
  • 提供了丰富的回调函数,满足您自己的日志记录需求

使用方法

要运行示例项目;克隆存储库,然后在 VKVideoPlayer 目录中首先运行 pod install。安装 pod 后,在 Xcode 中打开 VKVideoPlayer.xcworkspace 来运行示例应用程序。

安装

开始使用

简单播放 Http Live 流内容的方法。

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]

此外, 提供了一种简单的额外控制方式。

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

示例

// Display newButton when screen is landscape mode.
[self.player.view addSubviewForControl:newButton toView:self.player.view forOrientation:UIInterfaceOrientationMaskLandscape]

要配置 VKVideoPlayer,有一些属性。

@property (nonatomic, assign) BOOL forceRotate;

此属性可以改变方向的 behavior。如果 UIViewController 只支持Portrait 模式,但设置为 YES 后可以旋转到 Landscape。

@property (nonatomic, assign) CGRect portraitFrame;

此属性用于强制旋转到 Portrait 时。视频播放器视图将具有此框架大小。

@property (nonatomic, assign) CGRect landscapeFrame;

此属性用于强制旋转到 Landscape 时。视频播放器视图将具有此框架大小。

字幕

要自定义字幕,有一些方法。要更改字体大小,请使用 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。您可以使用它来为应用程序提供日志记录或其他控制。所有方法都是 @optional

- (BOOL)shouldVideoPlayer:(VKVideoPlayer*)videoPlayer changeStateTo:(VKVideoPlayerState)toState;

此方法在改变状态之前被调用。如果您返回 NO,可以防止视频播放器改变状态。

- (void)videoPlayer:(VKVideoPlayer*)videoPlayer willChangeStateTo:(VKVideoPlayerState)toState;

此方法在改变状态之前被调用。同时也在调用 -shouldVideoPlayer:changeStateTo: 之前。

- (void)videoPlayer:(VKVideoPlayer*)videoPlayer didChangeStateFrom:(VKVideoPlayerState)fromState;

此方法在改变状态后被调用。

- (BOOL)shouldVideoPlayer:(VKVideoPlayer*)videoPlayer startVideo:(id<VKVideoPlayerTrackProtocol>)track;

此方法在加载视频之前被调用。如果视频不应该播放,您可以阻止它产生流量。

- (void)videoPlayer:(VKVideoPlayer*)videoPlayer willStartVideo:(id<VKVideoPlayerTrackProtocol>)track;

此方法在开始播放视频之前被调用。在这里您不能停止视频。

- (void)videoPlayer:(VKVideoPlayer*)videoPlayer didStartVideo:(id<VKVideoPlayerTrackProtocol>)track;

此方法在开始播放视频后被调用。

- (void)videoPlayer:(VKVideoPlayer*)videoPlayer didPlayFrame:(id<VKVideoPlayerTrackProtocol>)track time:(NSTimeInterval)time lastTime:(NSTimeInterval)lastTime;

此方法在播放视频的每秒都被调用。

- (void)videoPlayer:(VKVideoPlayer*)videoPlayer didPlayToEnd:(id<VKVideoPlayerTrackProtocol>)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<VKVideoPlayerTrackProtocol>)track customMessage:(NSString*)customMessage;

此方法在发生错误时被调用。

可用的字幕格式

  • SRT

要求

iOS 5.0 及更高版本

许可

VKVideoPlayer 根据 Apache License 2.0 许可。有关更多信息,请参阅 LICENSE 文件。