编辑: XR30273052 2019-12-01
视频边缘智能服务 应用开发指南 应用开发指南 Android应用端接入 工程配置 工程配置 您可以使用视频边缘智能服务提供的应用端Android SDK,实现视频播放的功能.

Android SDK Demo Android SDK提供Demo,供您参考使用.单击下载Android SDK Demo.下载本Demo将默认您同意本软件 许可协议. 配置 在Android工程根目录下的build.gradle 基础配置文件中,加入阿里云仓库地址,进行仓库配置. allprojects { repositories { jcenter() google() // 阿里云仓库地址 maven { url http://maven.aliyun.com/nexus/content/repositories/releases/ } maven { url http://maven.aliyun.com/nexus/content/repositories/snapshots } } } 视频边缘智能服务 应用开发指南

1 - - - 在模块的 build.gradle 中,添加SDK的依赖,引入 SDK:linkvisual-media 混淆配置(proguard-rules.pro) 视频播放器 视频播放器 播放器按功能分为三种: RTMP直播播放器 用于播放摄像头直播源,具有时延低的特点. RTMP点播播放器 用于设备录像回放的播放,可调整播放进度. HLS播放器 用于云端录像回放的播放,支持AES-128加密的ts文件的播放. FFmpeg使用版本为n4.0.1. 音频编码支持AAC_LC和G711a. 视频编码支持H264. Android SDK封装ExoPlayer作为HLS的播放器,版本为2.8.3. 功能列表 implementation('

com.aliyun.iotx:linkvisual-media:1.1.0'

) # keep linkvisual -keep class com.aliyun.iotx.linkvisual.media. # keep netty -keepattributes Signature,InnerClasses -keepclasseswithmembers class io.netty.** { *;

} -dontwarn io.netty.** -dontwarn sun.** 功能 直播播放器 设备录像播放器 HLS播放器 视频边缘智能服务 应用开发指南

2 - - 播放器状态 通过设置播放器状态监听器, 可接收到状态变更事件, 用于相关UI元素的变更. IDLE: 播放器没有任何内容播放时的状态. BUFFERING: 播放器正在缓冲, 当前的位置还不可以播放.状态变更事件如: 开始播放的缓冲、seek后重 视频播放 √ √ √ 音频播放 √ √ √ 暂停/恢复 X √ √ 跳至指定位置播放 X √ √ 总时长 X √ √ 当前播放进度 X √ √ 播放器状态变更通知 √ √ √ 设置播放音量 √ √ √ 变速播放 X X √ 循环播放 X X √ 画面缩放模式设置 √ √ √ 播放器截图 √ √ X 边播边录 √ √ X 视频边缘智能服务 应用开发指南

3 - - 新缓冲. READY: 播放器已经有内容在播放.状态变更事件如: 首帧数据已经渲染. ENDED: 播放器已结束播放.状态变更事件如: 播放中发生错误、主动停止播放、内容播放完毕. 错误列表 RTMP播放器 RTMP播放器 提供两种RTMP播放器,LivePlayer用于rtmp直播源的播放,VodPlayer用于rtmp点播源的播放. RTMP直播播放器(LivePlayer) 直播播放器使用说明: 错误枚举 描述 PlayerException.SOURCE_ERROR 数据源错误 PlayerException.RENDER_ERROR 渲染错误 PlayerException.UNEXPECTED_ERROR 不符合预期的错误 // 创建播放器实例 LivePlayer player = new LivePlayer();

// 设置surfaceview, 必须为GLSurfaceView // 注意:GLSurfaceView必须在Activity的onResume和onPause回调方法中调用GLSurfaceView的onResume和onPause方法 player.setSurfaceView(GLSurfaceView);

// 设置必要的状态监听 player.setOnPlayerStateChangedListener(new OnPlayerStateChangedListener() { @Override public void onPlayerStateChange(int playerState) { Log.d(TAG, play state= + playerState);

switch (playerState) { case Player.STATE_BUFFERING: break;

case Player.STATE_IDLE: break;

case Player.STATE_READY: break;

case Player.STATE_ENDED: 视频边缘智能服务 应用开发指南

4 RTMP点播播放器(VodPlayer) 点播播放器使用说明: break;

default: break;

} } });

// 设置错误监听 player.setOnErrorListener(new OnErrorListener() { @Override public void onError(PlayerException exception) { makeToast( errorcode: + exception.getCode() + n + exception.getMessage());

} });

// 设置rtmp地址 player.setDataSource( rtmp://live.hkstv.hk.lxdns.com/live/hks2 );

// 设置数据源就绪监听器 player.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared() { // 数据源就绪后开始播放 player.start();

} });

player.prepare();

... // 停止播放 player.stop();

... // 释放播放器资源 player.release();

// 创建播放器实例 VodPlayer player = new VodPlayer();

// 设置surfaceview, 必须为GLSurfaceView // 注意:GLSurfaceView必须在Activity的onResume和onPause回调方法中调用GLSurfaceView的onResume和onPause方法 player.setSurfaceView(GLSurfaceView);

// 设置必要的状态监听 player.setOnPlayerStateChangedListener(new OnPlayerStateChangedListener() { @Override public void onPlayerStateChange(int playerState) { Log.d(TAG, play state= + playerState);

switch (playerState) { case Player.STATE_BUFFERING: break;

视频边缘智能服务 应用开发指南

5 接口说明: LivePlayer case Player.STATE_IDLE: break;

case Player.STATE_READY: break;

case Player.STATE_ENDED: break;

default: break;

} } });

// 设置错误监听 player.setOnErrorListener(new OnErrorListener() { @Override public void onError(PlayerException exception) { makeToast( errorcode: + exception.getCode() + n + exception.getMessage());

} });

// 设置支持点播的rtmp地址 player.setDataSource( rtmp://xxxx );

// 设置数据源就绪监听器 player.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared() { // 数据源就绪后开始播放 player.start();

} });

player.prepare();

... // 暂停播放 player.pause();

... // 恢复播放 player.resume();

... // 停止播放 player.stop();

... // 释放播放器资源 player.release();

视频边缘智能服务 应用开发指南

6 - - - - - - 构造方法 设置非加密播放源 设置加密播放源 校验和准备数据 开始播放视频 停止播放 /** * 支持{@link #setDataSource(String)} * {@link #setDataSource(String, boolean, byte[], byte[])}的源 */ LivePlayer();

/** * 设置播放源 * @param url RTMP地址 */ void setDataSource(String url) throws IllegalArgumentException;

/** * 设置加密播放源(请确保源是做过AES加密) * @param url rtmp源地址 * @param isEncrypted 是否是加密源 * @param decryptIv 解密向量,16 byte array * @param decryptKey 解密密钥,

16 byte array * @throws IllegalArgumentException */ void setDataSource(String url, boolean isEncrypted, byte[] decryptIv, byte[] decryptKey) throws IllegalArgumentException;

/** * 校验和准备数据 */ void prepare();

/** * 开始播放视频 */ void start();

/** * 停止播放 视频边缘智能服务 应用开发指南

7 - - - - - - 重置播放器 释放播放器资源 截图 开始录屏 结束录屏 设置播放器音量 */ void stop();

/** * 重置播放器 */ void reset();

/** * 释放播放器资源 */ void release();

/** * 当前视频画面截图 * * @return 如果当前无画面则返回 null */ Bitmap snapShot();

/** * 开始录制当前播放内容,生成MPEG-4格式转存到指定的文件中 * 文件名后缀必须为.mp4 * 须在{@link PlayerState#STATE_READY}时调用有效 * * @param contentFile * @return 操作成功与否 */ boolean startRecordingContent(File contentFile) throws IOException;

/** * 停止记录播放内容 * @return 操作成功与否 */ boolean stopRecordingContent();

视频边缘智能服务 应用开发指南

8 - - - - - 设置音频流通道类型 设置画面缩放模式 设置surfaceview 清除surfaceview 设置数据源准备就绪事件监听器 /** * 设置播放器音量 * @param audioVolume 范围 0-1, 0为静音 */ void setVolume(float audioVolume);

/** * 设置音频流通道类型,see {@link android.media.AudioManager} * 如果音频正在播放,则会因为重新创建AudioTrack导致有短暂停顿. * @param streamType */ void setAudioStreamType(int streamType);

/** * 设置视频画面缩放模式, 默认为{@link android.media.MediaCodec#VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING} * @param videoScalingMode 参考: * {@link android.media.MediaCodec#VIDEO_SCALING_MODE_SCALE_TO_FIT} * {@link android.media.MediaCodec#VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING} */ void setVideoScalingMode(int videoScalingMode);

/** * 设置SurfaceView, 必须为GLSurfaceView * @param surfaceview */ void setSurfaceView(SurfaceView surfaceview);

/** * 清除surfaceview */ void clearSurfaceView();

/** * 设置数据源准备就绪事件监听器 * 视频边缘智能服务 应用开发指南

9 - - - - - 设置播放器错误事件监听器 设置播放状态变更事件监听器 设置首帧被渲染事件监听器 获取音量 获取播放器状态 * @param listener */ void setOnPreparedListener(OnPreparedListener listener);

/** * 设置播放器错误事件监听器,错误类型参考: * {@link PlayerException.SOURCE_ERROR} * {@link PlayerException.RENDER_ERROR} * {@link PlayerException.UNEXPECTED_ERROR} * @param listener */ void setOnErrorListener(OnErrorListener listener);

/** * 设置播放状态变更事件监听器 * @param listener */ void setOnPlayerStateChangedListener(OnPlayerStateChangedListener listener);

/** * 设置首帧被渲染事件监听器 * @param listener */ void setOnRenderedFirstFrameListener(OnRenderedFirstFrameListener listener);

/** * 获取音量 * @return 范围0-1 */ float getVolume();

/** * 获取播放状态 * @return 状态枚举,参考: * {@link PlayerState#STATE_IDLE} 播放器初始状态 * {@link PlayerState#STATE_BUFFERING} 缓冲中状态 * {@link PlayerState#STATE_READY} 缓冲结束开始播放状态 * {@link PlayerState#STATE_ENDED} 播放完成状态 视频边缘智能服务 应用开发指南

10 - - - - - 获取播放器当前流的连接类型 获取播放器当前的帧率/码率等信息 VodPlayer 构造方法 设置非加密播放源 设置加密播放源 */ int getPlayState();

/** * 获取播放器当前流的连接类型 * 播放器状态为{@link PlayerState#STATE_READY}时调用有效 * * @return {@link StreamConnectType} */ StreamConnectType getStreamConnectType();

/** * 获取播放器当前的帧率/码率等信息 * 播放器状态为{@link PlayerState#STATE_READY}时调用有效 * * @return 包含帧率/码率等信息的json string */ PlayInfo getCurrentPlayInfo();

/** * 对于一般rtmp数据源,使用该构造方法初始化 * 支持{@link #setDataSource(String)} * {@link #setDataSource(String, boolean, byte[], byte[])}的源 */ VodPlayer();

/** * 设置播放源 * @param url RTMP地址 */ void setDataSource(String url) throws IllegalArgumentException;

/** * 设置加密播放源(请确保源是做过AES加密) * @param url rtmp源地址 * @param isEncrypted 是否是加密源 视频边缘智能服务 应用开发指南

11 - - - - - - 校验和准备数据 开始或恢复播放视频 暂停播放 seek到指定位置 停止播放 重置播放器 * @param decryptIv 解密向量,16 byte array * @param decryptKey 解密密钥,

16 byte array * @throws IllegalArgumentException */ void setDataSource(String url, boolean isEncrypted, byte[] decryptIv, byte[] decryptKey) throws IllegalArgumentException;

/** * 校验和准备数据 */ void prepare();

/** * 开始播放或恢复播放视频 */ void start();

/** * 暂停播放, 调用start()恢复播放 */ void pause();

/** * seek到指定位置 * @param position 毫秒 */ void seekTo(long positionInMs);

/** * 停止播放 */ void stop();

/** 视频边缘智能服务 应用开发指南

12 - - - - - 释放播放器资源 截图 开始录屏 结束录屏 设置播放器音量 * 重置播放器 */ void reset();

/** * 释放播放器资源 */ void release();

/** * 当前视频画面截图 * * @return 如........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题