阿里云 录播 集成文档:
https://help.aliyun.com/document_detail/51991.html
阿里云 录播 在线测试:
https://player.alicdn.com/aliplayer/setting/setting.html?spm=a2c4g.11186623.2.16.46b46782BOP3P6
阿里云在线 诊断:
http://player.alicdn.com/detection.html?from=h5&vid=&source=https%3A%2F%2Fplayer.alicdn.com%2Faliplayer%2Fsetting%2Fsetting.html%3Fspm%3Da2c4g.11186623.2.16.46b46782BOP3P6%2F%2Fplayer.alicdn.com%2Fvideo%2Faliyunmedia.mp4%26_t%3D1565168961665&uuid=8F46CCE7-2D63-4969-8B15-E5E6FF603AD7&lang=zh-cn
播放功能使用
播放功能的基本流程如下:
1.创建播放器
创建播放器通过AliPlayerFactory类创建播放器。可以创建两种播放器:AliPlayer和AliListPlayer。单个播放功能使用AliPlayer。创建方法如下:
AliPlayer aliyunVodPlayer;
.....
aliyunVodPlayer = AliPlayerFactory.createAliPlayer(getApplicationContext());
如果播放的视频是通过播放器SDK安全下载后的本地文件,那么还需要设置一个加密校验信息(在Application中配置一次即可):
PrivateService.initService(getApplicationContext(), "encryptedApp.dat的本地路径");
2.设置播放器监听事件
播放器提供了多种监听事件,比如:onPrepared,onCompletion等事件。使用方法如下:
aliyunVodPlayer.setOnCompletionListener(new IPlayer.OnCompletionListener() {
@Override
public void onCompletion() {
//播放完成事件
}
});
aliyunVodPlayer.setOnErrorListener(new IPlayer.OnErrorListener() {
@Override
public void onError(ErrorInfo errorInfo) {
//出错事件
}
});
aliyunVodPlayer.setOnPreparedListener(new IPlayer.OnPreparedListener() {
@Override
public void onPrepared() {
//准备成功事件
}
});
aliyunVodPlayer.setOnVideoSizeChangedListener(new IPlayer.OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(int width, int height) {
//视频分辨率变化回调
}
});
aliyunVodPlayer.setOnRenderingStartListener(new IPlayer.OnRenderingStartListener() {
@Override
public void onRenderingStart() {
//首帧渲染显示事件
}
});
aliyunVodPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
@Override
public void onInfo(int type, long extra) {
//其他信息的事件,type包括了:循环播放开始,缓冲位置,当前播放位置,自动播放开始等
}
});
aliyunVodPlayer.setOnLoadingStatusListener(new IPlayer.OnLoadingStatusListener() {
@Override
public void onLoadingBegin() {
//缓冲开始。
}
@Override
public void onLoadingProgress(int percent, float kbps) {
//缓冲进度
}
@Override
public void onLoadingEnd() {
//缓冲结束
}
});
aliyunVodPlayer.setOnSeekCompleteListener(new IPlayer.OnSeekCompleteListener() {
@Override
public void onSeekComplete() {
//拖动结束
}
});
aliyunVodPlayer.setOnSubtitleDisplayListener(new IPlayer.OnSubtitleDisplayListener() {
@Override
public void onSubtitleShow(long id, String data) {
//显示字幕
}
@Override
public void onSubtitleHide(long id) {
//隐藏字幕
}
});
aliyunVodPlayer.setOnTrackChangedListener(new IPlayer.OnTrackChangedListener() {
@Override
public void onChangedSuccess(TrackInfo trackInfo) {
//切换音视频流或者清晰度成功
}
@Override
public void onChangedFail(TrackInfo trackInfo, ErrorInfo errorInfo) {
//切换音视频流或者清晰度失败
}
});
aliyunVodPlayer.setOnStateChangedListener(new IPlayer.OnStateChangedListener() {
@Override
public void onStateChanged(int newState) {
//播放器状态改变事件
}
});
aliyunVodPlayer.setOnSnapShotListener(new IPlayer.OnSnapShotListener() {
@Override
public void onSnapShot(Bitmap bm, int with, int height) {
//截图事件
}
});
3. 创建DataSource,准备播放
播放器支持4种播放源:VidSts,VidAuth,VidMps,UrlSource。其中UrlSource是直接的url播放,其余的三种是通过vid进行播放:VidSts,VidAuth点播用户使用;VidMps仅限MPS用户使用。
以VidSts举例,使用方式如下:
//创建VidSts
VidSts aliyunVidSts = new VidSts();
aliyunVidSts.setVid(视频vid);
aliyunVidSts.setAccessKeyId(临时akId);
aliyunVidSts.setAccessKeySecret(临时akSecret);
aliyunVidSts.setSecurityToken(安全token);
aliyunVidSts.setRegion(接入区域);
//设置播放源
aliyunVodPlayer.setDataSource(aliyunVidSts);
......
//准备播放
aliyunVodPlayer.prepare();
4. 设置显示的view
如果源有画面,那么需要设置显示的view到播放器中,用来显示画面。支持SurfaceView和TextureView。
以SurfaceView举例:
surfaceView = (SurfaceView) findViewById(R.id.playview);
surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
aliyunVodPlayer.setDisplay(holder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
aliyunVodPlayer.redraw();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
aliyunVodPlayer.setDisplay(null);
}
});
- 播放控制
户自行创建播放器的播放控制按钮,在按钮事件里面实现播放器控制接口。基本控制功能有播放、停止、暂停、拖动(seek),其中Seek功能仅对点播有效,直播使用暂停功能时会使画面停留在当前画面,使用恢复后会开始播放当前画面。使用示例如下:
// 开始播放。
aliyunVodPlayer.start();
//暂停播放
aliyunVodPlayer.pause();
//停止播放
aliyunVodPlayer.stop();
// 跳转到。不精准。
aliyunVodPlayer.seekTo(long position);
// 重置
aliyunVodPlayer.reset();
//释放。释放后播放器将不可再被使用。
aliyunVodPlayer.release();
分享个返利程序,可以赚点零花钱。