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
版权声明:本文为博主原创文章,未经博主允许不得转载。