SkeyeExPlayer(Windows)开发之接口说明

2023-04-17 10:31:12 浏览数 (1)

SkeyeExPlayer(windows)接口说明如下:

  1. SkeyeExPlayer_Open 说明:打开一个媒体流或者媒体文件进行播放,同时返回一个 player 对象指针 参数说明: fileUrl - 文件路径(可以是网络流媒体的 URL) hWnd - Win32 的窗口句柄/其他平台渲染显示设备句柄 返回值: SkeyeExPlayer _Handle 指针类型,指向 SkeyeExPlayer 对象句柄 声明如下: SkeyeExPlayer_Handle SkeyeExPlayer_Open(char *fileUrl, SKEYE_HANDLE hWnd);
  2. SkeyeExPlayer_Closeundefined说明: 关闭播放 参数说明: player - 指向 SkeyeExPlayer_Open 返回的 player 对象 声明如下: void SkeyeExPlayer_Close(SkeyeExPlayer_Handle player);
  3. SkeyeExPlayer_Play 说明:开始播放,注意:媒体流或者文件打开后不需要调用此函数即开始播放,此函数在暂停、单步播放的时候调用,返回正常播放逻辑 参数说明: player - 指向 SkeyeExPlayer_Open 返回的 player 对象 声明如下: void SkeyeExPlayer_Play(SkeyeExPlayer_Handle player);
  4. SkeyeExPlayer_StepPlay 说明:单步播放,一次播放一帧,调用SkeyeExPlayer_Play返回正常播放 参数说明: player - 指向 SkeyeExPlayer_Open 返回的 player 对象 声明如下: void SkeyeExPlayer_StepPlay(SkeyeExPlayer_Handle player);
  5. SkeyeExPlayer_Pause 说明:暂停播放,调用SkeyeExPlayer_Play返回正常播放 参数说明: player - 指向 SkeyeExPlayer_Open 返回的 player 对象 声明如下: void SkeyeExPlayer_Pause(SkeyeExPlayer_Handle player);
  6. SkeyeExPlayer_Seek 说明:播放进度跳转到指定位置 参数说明: player - 指向 SkeyeExPlayer_Open 返回的 player 对象 seek - 指定位置,以毫秒为单位 声明如下: void SkeyeExPlayer_Seek(SkeyeExPlayer_Handle player, SKEYE_VERYLONG seek);
  7. SkeyeExPlayer_Resizeundefined说明:设置显示区域,有两种显示区域,视频显示区和视觉效果显示区 参数说明: player - 指向 SkeyeExPlayer_Open 返回的 player 对象 type - 指定区域类型 0 - video rect, 1 - audio visual effect rect x,y,width,height - 指定显示矩形区域 函数声明: void SkeyeExPlayer_Resize (SkeyeExPlayer_Handle player, int type, int x, int y, int width, int height);
  8. SkeyeExPlayer_Snapshot 视频播放截图参数说明: player - 指向 SkeyeExPlayer_Open 返回的 player 对象 filePath - 图片存放路径,以.xxx结束(xxx 目前只支持 jpeg 格式) width, height - 指定图片宽高,如果 <= 0 则默认使用视频宽高 waittime - 是否等待截图完成 0 - 不等待,>0 等待超时 ms 为单位 声明如下: int SkeyeExPlayer_Snapshot(SkeyeExPlayer_Handle player, char *filePath, int width, int height, int waitTime);
  9. SkeyeExPlayer_Record 视频播放录像 参数说明: player - 指向 SkeyeExPlayer_Open 返回的 player 对象 filePath - 图片存放路径,以.xxx结束(xxx 目前只支持 mp4 格式) duration - 指定图片宽高,如果 <= 0 则默认使用视频宽高 声明如下: int SkeyeExPlayer_Record (SkeyeExPlayer_Handle player, char *filePath, int duration );
  10. SkeyeExPlayer_Record 视频播放停止录像参数说明: 声明如下: int SkeyeExPlayer_Stoprecord(SkeyeExPlayer_Handle player);
  11. SkeyeExPlayer_SetLogo 设置台标/LOGO 参数说明: player - 指向 SkeyeExPlayer_Open 返回的 player 对象 bIsUse - 是否使用水印 1=启用 0=不启用 ePos - 台标位置:1==leftttop 2==righttop 3==leftbottom 4==rightbottom eStyle - 水印的风格,见WATERMARK_ENTRY_TYPE声明 x - 水印左上角位置x坐标 y - 水印左上角位置y坐标 width - 宽 height - 高 logopath - 水印图片路径 声明如下: int SkeyeExPlayer_SetLogo (void hplayer, int bIsUse, int ePos, int eStyle, int x, int y, int width, int height, char logopath);
  12. SkeyeExPlayer_SetOSD 设置叠加字幕参数说明: player - 指向 SkeyeExPlayer_Open 返回的 player 对象 bIsUse - 是否使用水印 1=启用 0=不启用 -1=删除 nMoveType - 移动类型:0--固定位置,1--从左往右,2--从右往左, R,G,B - 字体颜色对应三个分量红绿蓝0-255 x - 字幕显示左上角位置x坐标 y - 字幕显示左上角位置y坐标 weight - 字体权重,见如下声明 // / Font Weights / // #define FW_DONTCARE 0 // #define FW_THIN 100 // #define FW_EXTRALIGHT 200 // #define FW_LIGHT 300 // #define FW_NORMAL 400 // #define FW_MEDIUM 500 // #define FW_SEMIBOLD 600 // #define FW_BOLD 700 // #define FW_EXTRABOLD 800 // #define FW_HEAVY 900 // #define FW_ULTRALIGHT FW_EXTRALIGHT // #define FW_REGULAR FW_NORMAL // #define FW_DEMIBOLD FW_SEMIBOLD // #define FW_ULTRABOLD FW_EXTRABOLD // #define FW_BLACK FW_HEA width - 宽 height - 高 fontname - 字体名称,如“宋体”“楷体”“隶书”“华文行楷”...... tittleContent - OSD显示内容 声明如下: int SkeyeExPlayer_SetOSD (void hplayer, int bIsUse, int nMoveType, int R, int G, int B, int weight, int x, int y, int width, int height, char fontname, char* tittleContent);
  13. SkeyeExPlayer_Setparam 设置参数参数说明: player - 指向 SkeyeExPlayer_Open 返回的 player 对象 param_id - 参数ID,见SKEYE_PARAM_ID定义 param - 参数指针 声明如下: void SkeyeExPlayer_Setparam(SkeyeExPlayer_Handle player, SKEYE_PARAM_ID param_id, SKEYE_HANDLE param);
  14. SkeyeExPlayer_Setparam 获取参数参数说明: player - 指向 SkeyeExPlayer_Open 返回的 player 对象 param_id - 参数ID,见SKEYE_PARAM_ID定义 param - 参数指针 声明如下: void SkeyeExPlayer_Getparam(SkeyeExPlayer_Handle player, SKEYE_PARAM_ID param_id, SKEYE_HANDLE param);

设置和获取参数参考SKEYE_PARAM_ID结构,详细说明如下:

SKEYE_PARAM_MEDIA_DURATION 和 SKEYE_PARAM_MEDIA_POSITION

用于获取多媒体文件的总长度和当前播放位置(毫秒为单位)

LONGLONG total = 1, pos = 0;

SkeyeExPlayer_Getparam(g_hplayer, SKEYE_PARAM_MEDIA_DURATION, &total);

SkeyeExPlayer_Getparam(g_hplayer, SKEYE_PARAM_MEDIA_POSITION, &pos );

SKEYE_PARAM_VIDEO_WIDTH 和 SKEYE_PARAM_VIDEO_HEIGHT

用于获取多媒体文件的视频宽度和高度(像素为单位)

int vw = 0, vh = 0;

SkeyeExPlayer_Getparam(g_hplayer, PARAM_VIDEO_WIDTH , &vw);

SkeyeExPlayer_Getparam(g_hplayer, PARAM_VIDEO_HEIGHT, &vh);

SKEYE_PARAM_VIDEO_MODE

用于获取和设置视频显示方式,有两种方式可选:

代码语言:txt复制
1. SKEYE_VIDEO_MODE_LETTERBOX - 按比例缩放到显示区域
2. SKEYE_VIDEO_MODE_STRETCHED - 拉伸到显示区域(注:视频显示区域由 SkeyeExPlayer_Resize 进行设定)
int mode = 0;
SkeyeExPlayer_Getparam(g_hplayer, SKEYE_PARAM_VIDEO_MODE, &mode);
mode = VIDEO_MODE_STRETCHED;
SkeyeExPlayer_Setparam(g_hplayer, SKEYE_PARAM_VIDEO_MODE, &mode);

SKEYE_PARAM_AUDIO_VOLUME

用于设置播放音量,不同于系统音量,player 内部具有一个 -30dB 到 12dB 的软件音量控制单元

音量范围:-182, 73,-182 对应 -30dB,73 对应 12dB

特殊值 :0 对应 0dB 增益,-255 对应静音, 255 对应最大增益

int volume = -0;

SkeyeExPlayer_Setparam(g_hplayer, SKEYE_PARAM_AUDIO_VOLUME, &volume);

SKEYE_PARAM_PLAY_SPEED

用于设置播放速度,player 支持变速播放

int speed = 150;

SkeyeExPlayer_Setparam(g_hplayer, SKEYE_PARAM_PLAY_SPEED, &speed);

参数 speed 为百分比速度,150 表示以 150% 进行播放

速度没有上限和下限,设置为 0 没有意义,内部会处理为 1%

播放速度的实际上限,由处理器的处理能力决定,超过处理器能力,播放会出现卡顿现象

SKEYE_PARAM_DECODE_THREAD_COUNT

用于设置视频解码线程数,可榨干 cpu 资源

int count = 6;

SkeyeExPlayer_Setparam(g_hplayer, SKEYE_PARAM_DECODE_THREAD_COUNT, &count);

设置为 0 为将自动获取设备的 CPU 核心个数来计算和设置解码线程个数

设置为 1 为单线解码,设置为 >= 2 的值为多线程解码

并不是设置后一定就能运用上多线程解码,还要看对应的 decoder 是否支持多线程解码

一般情况下设置为 4 - 10 左右的值就能充分榨取 cpu 资源,保证播放的流畅性了

SKEYE_PARAM_VISUAL_EFFECT

用于指定视觉效果的类型,player 支持视觉效果,主要是对音频进行视觉效果的呈现

int mode = 0;

SkeyeExPlayer_Getparam(g_hplayer, SKEYE_PARAM_VISUAL_EFFECT, &mode);

mode = SKEYE_AUDIO_VISUAL_EFFECT_WAVEFORM;

SkeyeExPlayer_Setparam(g_hplayer, SKEYE_PARAM_VISUAL_EFFECT, &mode);

目前总共有三种视觉效果:

代码语言:txt复制
1. VISUAL_EFFECT_DISABLE  - 关闭
2. VISUAL_EFFECT_WAVEFORM - 波形
3. VISUAL_EFFECT_SPECTRUM - 频谱(注:视觉效果区域由 SkeyeExPlayer_Resize 进行设定)

SKEYE_PARAM_AVSYNC_TIME_DIFF

用于设置 audio 和 video 的时间同步差值(毫秒为单位)

int diff = 100;

SkeyeExPlayer_Setparam(g_hplayer, SKEYE_PARAM_AVSYNC_TIME_DIFF, &diff);

Eg: 设置为 100 后,音频将比视频快 100ms,设置为 -100 则慢 100ms

SKEYE_PARAM_PLAYER_CALLBACK

用于设置播放器事件回调函数,回调函数的原型定义如下:

typedef void (*SkeyeExPlayer_CALLBACK)(int32 msg, int64 param);

回调时的参数定义如下:

代码语言:txt复制
msg   - PLAY_PROGRESS 播放进行中,PLAY_COMPLETED 播放完成
代码语言:txt复制
param - 当前播放进度,以毫秒为单位

SKEYE_PARAM_VDEV_RENDER_TYPE

用于设置视频渲染方式,目前有 SKEYE_VIDEO_RENDER_TYPE_GDI 和 SKEYE_VIDEO_RENDER_TYPE_D3D 两种可选

int mode = 0;

SkeyeExPlayer_Getparam(g_hplayer, PARAM_VDEV_RENDER_TYPE, &mode);

mode = SKEYE_VIDEO_RENDER_TYPE_D3D;

SkeyeExPlayer_Setparam(g_hplayer, PARAM_VDEV_RENDER_TYPE, &mode);

SKEYE_PARAM_AUDIO_STREAM_TOTAL

SKEYE_PARAM_VIDEO_STREAM_TOTAL

SKEYE_PARAM_SUBTITLE_STREAM_TOTAL

以上三个是只读的(Get),分别用于获取 audio, video, subtitle 的流总数

int streamCount = 0;

SkeyeExPlayer_Getparam(g_hplayer, SKEYE_PARAM_AUDIO_STREAM_TOTAL, &streamCount);

SKEYE_PARAM_AUDIO_STREAM_CUR

SKEYE_PARAM_VIDEO_STREAM_CUR

SKEYE_PARAM_SUBTITLE_STREAM_CUR

以上三个参数,分别用于获取(Get)或设置(Set)当前播放的 audio, video, subtitle 流编号

SKEYE_PARAM_RECORD_TIME

SKEYE_PARAM_RECORD_PIECE_ID

以上三个是只读的(Get),分别用于获取录像的时间和当前切片的ID

float recordTime = 0;

SkeyeExPlayer_Getparam(g_hplayer, SKEYE_PARAM_RECORD_TIME, &recordTime);

int recordPieceId = 0;

SkeyeExPlayer_Getparam(g_hplayer, SKEYE_PARAM_RECORD_PIECE_ID, &recordPieceId);

所有的参数,都是可以 get 的,但并不是所有的参数都可以 set,因为有些参数是只读的。

0 人点赞