阳光宽频Android点播SDK集成方法

1 简介

TTVideoEngine是阳光宽频Android客户端中使用的通用点播SDK, 它旨在帮助开发者迅速完成视频点播业务的开发。开发者只需要调用几个接口就能轻松实现视频播放的逻辑,并且能实时统计视频播放的质量、重试、多清晰度选择等功能。这篇文章将简要介绍TTVideoEngine的使用方法。

2 安装

引用TTVideoSDK工程

3 使用

a. 创建TTVideoEngine

* 构造TTVideoEngin
* @param videoDepend 监听播放器状态的接口
* @param videoId 视频的Video Id
* @param featureType 业务类型(直播,点播),非必需
*/
public TTVideoEngine(ITTMediaPlayerCallback videoDepend, String videoId, int featureType) {
this(videoDepend, videoId, featureType, SSMediaPlayerWrapper.TYPE_PLAYER_NONE);
}

可以监听对应的各种状态变化,主要有

public interface ITTMediaPlayerCallback {//监听播放器的各种状态
void onSeekCompleted(); //拖动进度条完成
void onPrepared(); //播放器准备完成
void onError(int errorCode); //播放出错
void onCompleted(int errorCode); //播放结束
void onBufferUpdate(int percent); //进度更新
…
public interface IGetPlayUrlCallback { //获取播放地址回调
public static final int ERROR_PLAY_URL_API_ILLEGAL = 1;
public static final int ERROR_PLAY_ULR_NET_ERROR = 2;
void onPlayUrlSuccess(VideoDataContainer dataContainer); //获取播放地址成功
void onPlayUrlError(int errorCode); //获取播放地址失败
}

public interface IRetryCallback { // 重试相关状态回调
void onRetryTrigger(); //触发重试
void onRetryError(); //重试出错
void onRetryStart(); //开始重试
}

b. 设置视频承载的View(支持SurfaceView和TextureView)

* 在surfaceTextureCreated调用(使用TextureView)
*
* @param surface
*/
public void setSurface(final SurfaceTexture surface)

/**
* 在surfaceCreated调用(使用SurfaceView)
*
* @param holder
*/
public void setDisplay(final SurfaceHolder holder)

c. 调用play方法开始视频播放,目前支持传入视频的video id,视频的url:

public boolean play(String url, final long seekWhenPrepared, final boolean isPauseOtherMusicVolume)

4 控制播放行为

public void resume(boolean isPauseOtherMusicVolume)//继续播放
public void seekTo(long position, boolean isOutOfBuffer)//seek到指定位置

5 获取视频相关信息

public boolean isPaused()//是否暂停
public boolean isPrepared()//是否准备完成
public boolean isInitalized()//是否已经初始化
public boolean isCompleted() //是否已经播放完成

6 多清晰度选择

* 多清晰度却换
* @param toDefinition 指定的清晰度
*/
public void changeClarity(String toDefinition)

7 播放超时重试

* 是否需要超时重试
* @param isNeedRetry
*/
public void setIsNeedRetry(boolean isNeedRetry)

/**
* 设置超时时间
* @param delayMillis
*/
public void setRetryDelayMillis(int delayMillis)

阳光宽频iOS点播SDK集成方法

简介

TTVideoEngine是阳光宽频iOS客户端中使用的通用点播SDK, 它旨在帮助开发者迅速完成视频点播业务的开发。开发者只需要调用几个接口就能轻松实现视频播放的逻辑,并且能实时统计视频播放的质量。这篇文章将简要介绍TTVideoEngine的使用方法。

安装

目前TTVideoEngine支持通过CoacoaPods的方式安装,支持iOS 7及以上。
只需要简单的在Podfile中添加以下一行:

pod 'TTVideoEngine', '0.0.5'

然后在命令行中输入 pod install 即可给你的工程添加好依赖。
想了解更多关于CocoaPods的内容,可以看这些教程

使用

  1. 1. TTVideoEngine的初始化
TTVideoEngine *videoEngine = [[TTVideoEngine alloc] initWithVid:vid];

TTVideoEngine的初始化只需要视频的vid作为参数
2. 添加播放器视图

[self.view addSubview:videoEngine.playerView];

只需要将播放器视图添加到你想要的展示界面上即可,播放器会自适应播放画面。
3. 控制播放行为

/**
It's used to play video. You can use it to start or resume the player.
Make sure you've already called setVideoID: method
*/
- (void)play;

/**
 It's used to pause the video playing.
 */
- (void)pause;

/**
 It's used to stop the video and it will reset the internal player.
 */
- (void)stop;

play接口用于控制播放器开始播放或者从暂停状态恢复, pause接口用于暂停视频播放,stop接口用于终止视频的播放。
4. 监听播放状态
通过设置videoEngine的delegate便可监听播放的状态,以下是videoEngine delegate的定义:

@protocol TTVideoEngineDelegate <NSObject>

@optional

- (void)videoEngine:(TTVideoEngine *)videoEngine playbackStateDidChanged:(TTVideoEnginePlaybackState)playbackState;
- (void)videoEngine:(TTVideoEngine *)videoEngine loadStateDidChanged:(TTVideoEngineLoadState)loadState;
- (void)videoEngineReadyToPlay:(TTVideoEngine *)videoEngine;
- (void)videoEngineDidFinish:(TTVideoEngine *)videoEngine error:(NSError *)error;

@end

@property (nonatomic, weak) id<TTVideoEngineDelegate> delegate;

-(void)videoEngine:(TTVideoEngine *)videoEngine playbackStateDidChanged:(TTVideoEnginePlaybackState)playbackState 方法会通知你播放器播放状态的变化

-(void)videoEngine:(TTVideoEngine *)videoEngine loadStateDidChanged:(TTVideoEngineLoadState)loadState 方法会通知你播放器加载状态的变化,你可以用它来做加载缓冲的动画等

-(void)videoEngineReadyToPlay:(TTVideoEngine *)videoEngine 这个方法用于通知你视频即将开始播放

-(void)videoEngineDidFinish:(TTVideoEngine *)videoEngine error:(NSError *)error; 该方法用于通知你播放完成,你可以根据error是否为空判断是否需要展示错误信息。
5. 播放进度条
播放器进度条相关的属性有当前播放时间、视频总时长、缓冲时长:

@property (nonatomic, assign, readonly) NSTimeInterval currentPlaybackTime;
@property (nonatomic, assign, readonly) NSTimeInterval duration;
@property (nonatomic, assign, readonly) NSTimeInterval playableDuration;

以下两个方法可用于周期性监听播放器的播放进度、缓冲进度等信息

/**
 It's used to periodicly get something from the player, such as current currentPlaybackTime, playableDuration...

 @param interval the time interval in seconds
 @param queue target queue to perform action
 @param block periodic work to do
 */
- (void)addPeriodicTimeObserverForInterval:(NSTimeInterval)interval queue:(dispatch_queue_t)queue usingBlock:(void (^)())block;

/**
 remove the observer
 */
- (void)removeTimeObserver;

通过addPeriodicTimeObserverForInterval方法建立周期性观察,在block里面获取播放器的播放进度信息等用于展示,最后再通过removeTimeObserver释放观察者。
6. 多清晰度切换
与清晰度切换相关的有如下两个方法:

/**
 It's used to get the supported resolutions for the video

 @return an Array of numbers(TTVideoEngineResolutionType)
 */
- (NSArray<NSNumber *> *)supportedResolutionTypes;

/**
 It's used to set the default resolution and it can also used to switch resolution

 @param currentResolution the default resolution, or the resolution to switch
 */
- (void)setCurrentResolution:(TTVideoEngineResolutionType)currentResolution;

supportedResolutionTypes可以返回当前支持的清晰度,setCurrentResolution可以用于指定想要设置的清晰度,如果当前清晰度与你指定的清晰度不一致则会发生清晰度的切换。
7. 播放日志调试

默认播放器的调试日志处于关闭状态,你可以通过如下方法打开播放器的调试日志:

/**
 This method is used to enable or disable log

 @param enabled YES to enable log
 */
+ (void)setLogEnabled:(BOOL)enabled;

只需要将enalbed设置为YES即可打开调试日志。

如需接入sdk,发邮件至videosdk@163.com,邮件注明sdk合作。