概览
播放器负责音视频解码、播放功能,底层依赖于 P2P 库的推流及音视频同步功能。
类型定义
连接类型
typedef enum CONNECT_TYPE{IV_CONN_TYPE_VIDEO_CALL = 0, //双向视频监控IV_CONN_TYPE_MONITOR = 1, //监控IV_CONN_TYPE_PLAY_REC_FILE = 2, //回放IV_CONN_TYPE_TRANSMISSION = 3, //数据传输IV_CONN_TYPE_NONE = 0xFF}CONNECT_TYPE;
分辨率类型
typedef enum DEFINITION{VIDEO_DEFINITION_FL = 0, //流畅VIDEO_DEFINITION_SD = 1, //标清VIDEO_DEFINITION_HD = 2, //高清}DEFINITION;
播放器状态类型
typedef enum {STATE_IDLE = 0; //播放器初始状态STATE_INITIALIZED = 1; //已经初始化STATE_PREPARING = 2; //准备中STATE_READY = 3; //准备完毕STATE_LOADING = 4; //加载STATE_PLAY = 5; //播放状态STATE_PAUSE = 6; //暂停STATE_STOP = 7; //停止}PlayerStateEnum;
编码参数类型
typedef enum {/*** 音频类型*/AUDIO_TYPE_PCM = 0;AUDIO_TYPE_G711A = 1;AUDIO_TYPE_G711U = 2;AUDIO_TYPE_PT_G726 = 3;AUDIO_TYPE_PT_AAC = 4;AUDIO_TYPE_PT_AMR = 5;AUDIO_TYPE_PT_ADPCMA = 6;AUDIO_TYPE_MAX = 7;/*** 音频采样率*/AUDIO_SAMPLE_RATE_8000 = 8000; //!< 8K samplerateAUDIO_SAMPLE_RATE_11025 = 11025; //!< 11.025K samplerateAUDIO_SAMPLE_RATE_12000 = 12000; //!< 12K samplerateAUDIO_SAMPLE_RATE_16000 = 16000; //!< 16K samplerateAUDIO_SAMPLE_RATE_22050 = 22050; //!< 22.050K samplerateAUDIO_SAMPLE_RATE_24000 = 24000; //!< 24K samplerateAUDIO_SAMPLE_RATE_32000 = 32000; //!< 32K samplerateAUDIO_SAMPLE_RATE_44100 = 44100; //!< 44.1K samplerateAUDIO_SAMPLE_RATE_48000 = 48000; //!< 48K samplerateAUDIO_SAMPLE_RATE_64000 = 64000; //!< 64K samplerateAUDIO_SAMPLE_RATE_96000 = 96000; //!< 96K samplerate/*** 音频声音模式*/AUDIO_SOUND_MODE_MOMO = 0; /*mono*/AUDIO_SOUND_MODE_STEREO = 1; /*stereo*/AUDIO_SOUND_MODE_NONE = 2;/*** 音频位宽*/AUDIO_BIT_WIDTH_8 = 0; /* 8bit width */AUDIO_BIT_WIDTH_16 = 1; /* 16bit width*/AUDIO_BIT_WIDTH_32 = 2; /* 32bit width*/AUDIO_BIT_WIDTH_NONE = 3;/*** 音频每帧采样数*/AUDIO_SAMPLE_NUM_80 = 80; //!<AUDIO_SAMPLE_NUM_160 = 160; //!<AUDIO_SAMPLE_NUM_320 = 320; //!<AUDIO_SAMPLE_NUM_480 = 480; //!<AUDIO_SAMPLE_NUM_1024 = 1024; //!<AUDIO_SAMPLE_NUM_2048 = 2048; //!</*** 视频类型*/VIDEO_TYPE_NONE = 0; //!<VIDEO_TYPE_H264 = 1; //!<VIDEO_TYPE_MPEG4 = 2; //!<VIDEO_TYPE_JPEG = 3; //!<VIDEO_TYPE_MJPEG = 4; //!<VIDEO_TYPE_H265 = 5; //!<}AVConstants;
播放器功能接口
初始化播放器数据源
/*** 初始化播放器数据源** @param deviceId 设备id* @param callType 类型参考CONNECT_TYPE* @param definition 类型参考枚举DEFINITION* @param sourceId 视频源ID:设备的视频源编号,如一个多摄像头的设备,可用不同的视频源ID来实现多个视频流播放*/void setDataResource(char *deviceId, CONNECT_TYPE callType, DEFINITION definition, uint16_t sourceId);
设置音视频渲染组件
/*** 设置音视频渲染组件** @param view 视频渲染组件*/void setVideoView(IotVideoView view);
设置视频编码器
/*** 设置视频编码器** 说明:音视频语音对讲时可配置,* 如果设置,播放器视频编码将采用用户自定义的视频编码器。* 如果不设置,将采用内置的编码器。* @param encoder 视频编码器*/void setVideoEncoder(IVideoEncoder encoder)
设置视频解码器
/*** 设置视频解码器** 说明:如果设置,播放器视频解码将采用用户自定义的视频解码器。* 如果不设置,将采用内置的解码器。* @param decoder 视频解码器*/void setVideoDecoder(IVideoDecoder decoder);
设置音频编码器
/*** 设置视频编码器** 说明:音视频语音对讲时可配置,* 如果设置,播放器视频编码将采用用户自定义的视频编码器。* 如果不设置,将采用内置的编码器。* @param encoder 视频编码器*/void setVideoEncoder(IVideoEncoder encoder)
设置音频解码器
/*** 设置视频解码器** 说明:如果设置,播放器视频解码将采用用户自定义的视频解码器。* 如果不设置,将采用内置的解码器。* @param decoder 视频解码器*/void setVideoDecoder(IVideoDecoder decoder);
设置视频渲染
/*** 设置视频渲染** 说明:如果用户自定义视频帧渲染可以设置该接口* 解码的视频帧(yuv420格式)以回调的形式返回*/void setVideoRender(IVideoRender listener);
设置音频渲染
/*** 设置音频渲染** 说明:如果用户自定义音频渲染可以设置该接口* 解码的音频帧(PCM格式)以回调的形式返回*/void setAudioRender(IAudioRender listener);
准备播放
/*** 准备播放** 说明:prepare回调可以通过设置setPreparedListener进行监听*/void prepare();
开始播放
/*** 开始播放**/void play();
停止播放
/*** 停止播放**/void stop();
释放资源
/*** 释放** 说明:播放器使用完毕需要释放*/void release();
静音状态判断
/*** 静音* @return true==静音,false==非静音*/boolean isMute();
静音状态设置
/*** 设置静音* @param on true==静音,false==非静音*/void mute(boolean on);
开始录像
/*** 录像** @param path 录像文件路径* @param listener 录像回调*/void startRecord(String path, final IResultListener listener);
停止录像
/*** 停止录像**/void stopRecord();
截图
/*** 视频画面截图** @param path 截图文件路径* @param listener 截图回调*/void snapShot(String path, final IResultListener listener);
获取播放状态类型
/*** 获取播放状态** @return 状态枚举,参考:* {@link PlayerStateEnum#STATE_IDLE} 播放器初始状态*/int getPlayState()
获取播放的视频宽度
/*** 获取视频宽** 说明:prepare 后才能获取到该数据,否则返回0* @return 视频宽度*/int getVideoWidth()
获取播放的视频高度
/*** 获取视频宽** 说明:prepare 后才能获取到该数据,否则返回0* @return 视频高度*/int getVideoHeight()
是否正在播放标识
/*** 是否在播放** @return true==播放, false==没有播放*/bool isPlaying()
设置状态回调
/*** 设置准备回调**/void setPreparedListener(IPreparedListener listener);
设置时间回调
/*** 设置时间回调**/void setTimeListener(ITimeListener listener);
设置错误回调
/*** 设置错误回调**/void setErrorListener(IErrorListener listener);
发送视频函数
void sendVideoData(AVData *data);
发送音频函数
void sendAudioData(AVData *data);