测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可证 | Apache 2 |
发布上次发布 | 2014年12月 |
由 Jarrold Ong 维护。
依赖 | |
DTCoreText | ~> 1.6.11 |
CocoaLumberjack | ~> 1.7.0 |
VKFoundation | = 0.1.1 |
VKVideoPlayer 是我们在 Viki iOS App 中使用的已过战斗的视频播放器,它被世界上数十万名用户所喜爱。
一些高级功能包括
要运行示例项目;克隆存储库,然后在 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;
此方法在发生错误时被调用。
iOS 5.0 及更高版本
VKVideoPlayer 根据 Apache License 2.0 许可。有关更多信息,请参阅 LICENSE 文件。