软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 下载中心 > 开发制作 > 编程控件 > 斗鱼TV直播伴侣插件下载

斗鱼TV直播伴侣插件

  • 软件语言:简体中文
  • 软件类型:国产软件
  • 软件大小:24 KB
  • 软件等级:3星级
  • 相关链接:Home Page
  • 软件授权:免费版
运行环境:WinXP/Vista/Win7/8/10
更新时间:2016-04-11 16:23:22
有无插件:无插件,请您放心使用!

斗鱼TV直播伴侣插件来自斗鱼官网,斗鱼直播伴侣是斗鱼直播平台自行开发的直播软件,使用简单,一键直播,极大程度的方便了主播的直播。

斗鱼直播伴侣即将推出插件功能,同时也欢迎大家开发自己的特色功能插件。只要通过我们的审核要求,就能把你的插件分享给众多主播一起使用,同时还有各种惊喜等着你。如果通过审核我们会给你回复上线时间并提供相应的奖励,快拿出你的作品和小伙伴一起玩耍吧。

111.png

222.jpg

斗鱼直播伴侣插件位置

插件请发送到指定邮箱:yangliang@douyu.tv

斗鱼TV插件系统文档

一、 插件入口函数
IPlugin* dyLoadPlugin(IPluginContext* context)
该函数为插件DLL的导出函数,在该DLL中一定要导出该函数,否则直播伴侣将不会判定该DLL为直播伴侣插件。
参数:context为插件运行的上下文环境
返回值:返回为NULL则判定加载该插件失败
二、 IPluginContext接口
该接口为插件运行环境接口,从dyLoadPlugin函数的参数中传入。
1. bool SendChatMessage(char* msg)
发送聊天信息,参数为要发送的文本,采用GBK编码
2. bool GetUserName(char* name)
获取直播伴侣中登陆的用户名,参数为待获取的用户名称,GBK编码
3. bool GetUserID(int* id)
获取直播伴侣中登陆的用户ID
4. bool IsBroadcasting(int* broad)
判断直播伴侣当前是否在直播,参数返回0为非直播状态,为1表示直播状态
三、 IPlugin接口
该接口需要被使用者继承实现以下的两个接口函数,该接口作为dyLoadPlugin函数的返回值返回给直播伴侣,当返回值为空时,直播伴侣则将判断加载插件失败。
1. char* GetName()
获取插件名称,采用GBK编码
2. IPluginElement* CreateElement()
创建插件功能接口,如果返回空,则直播伴侣判定加载插件失败
四、 IPluginElement接口
该接口需要被使用者继承试下部分接口,但是某些接口函数是必须要继承实现的。
1. bool Open(char* env)
改接口必须被继承实现,参数env为通过调用GetCurrentStatus接口返回的字符串,用于保存直播伴侣退出后插件的配置信息。在使用该参数时一定要判断该参数是否为NULL。返回true时,表示插件插件成功,否则直播伴侣判定加载插件失败。
2. bool ReadVideo(uint8_t* pixels,intbufsize)
该接口为可选实现的接口函数。读取插件的图像,参数pixels为图像字节缓冲区,bufsize为需要拷贝的字节大小。
返回true时表示读取图像成功,可以在直播伴侣预览区域显示,否则读取图像失败。
3. bool ReadAudio(uint8_t* pcm,intbufsize)
该接口为可选实现的接口函数。读取插件的音频数据,参数pcm为音频字节缓冲区,bufsize为需要拷贝的字节大小。返回true时表示读取音频成功,可以在直播伴侣中播放该音频声音,否则读取音频失败。
4. bool Destroy()
该接口为可选实现的接口函数。对插件进行销毁。
5. bool GetParameters(PluginElementParam* param)
该接口为可选实现的接口函数。该接口主要是获取图像和声音的参数信息,如要读取的图像的宽高,图像像素格式,或者音频的采样率,声道数等信息。如果要插件在直播伴侣上面显示图像或者播放声音,那么该接口函数必须要实现。返回true时可以成功获取图像或者音频的参数信息,否则不能显示图像和播放音频。
6. void SetConfig()
目前没有调用逻辑
7. void OnStartLive()
目前没有调用逻辑
8. void OnStopLive()
目前没有调用逻辑
9. void OnChatMessage(intid,char* msg,char* sendername,intdeserveLev)
该接口为可选实现的接口函数。通知弹幕消息
参数id:发送者的用户id
参数msg:弹幕内容,GBK编码
参数sendername:发送者的昵称
参数deserveLev:发送者的酬勤等级
10. void OnDonaterMessage(intid,char* senderName,int sliver)
该接口为可选实现的接口函数。通知鱼丸消息
参数 id:发送者的用户id
参数sendername:发送者的昵称
参数sliver:赠送的鱼丸数量
11. void OnDeserveMessage(intid,char* senderName,intnum,int lev)
该接口为可选实现的接口函数。通知酬勤消息
参数 id:发送者的用户id
参数senderName:发送者的昵称
参数num:酬勤数量
参数lev:发送者的酬勤等级
12. void OnUserEnterMessage(char* senderName,int lev)
该接口为可选实现的接口函数。通知用户进入房间
参数senderName:进入房间的用户昵称
参数lev:获取用户的酬勤等级
13. char* GetCurrentStatus()
该接口为可选实现的接口函数。获取当前的插件配置信息
返回值不为NULL,时直播伴侣会保存配置信息到数据库中,下次重新启动直播伴侣时,在该接口的Open函数中的参数env就为该接口返回的字符串。
14. bool OnCaptureData(uint8_t* pixels[3],int pitch[3],intwidth,intheight,PluginPixelFormatfmt,ImageSourceType type)
该接口为可选实现的接口函数。用于对视频图像的后处理。
参数pixels:图像的像素。当为YUV类型的图像时,pixels[1]和pixels[2]可能为非空值,在使用时一定要判断数组是否为空
参数pitch:图像每一个平面的字节行距。
参数width:图像宽度
参数height:图像高度
参数fmt:图像像素类型,详见受支持的图像像素类型格式
参数type:图像源类型,详见ImageSourceType
15. void ShowPlugin(bool show)
该接口为可选实现的接口函数。控制是否显示插件
参数show:为true时显示插件,false时不显示插件
五、 像素格式
插件系统中受支持的像素格式如下
enumPluginPixelFormat
{
PPF_NONE,
PPF_ARGB32, //B0 B1 B2 B3 B4 B5 B6 B7 G0 G1 G2 G3 G4 G5 G6 G7 R0 R1 R2 R3 R4 R5 R6 R7 A0 A1 A2 A3 A4 A5 A6 A7
PPF_BGRA32, //R0 R1 R2 R3 R4 R5 R6 R7 G0 G1 G2 G3 G4 G5 G6 G7 B0 B1 B2 B3 B4 B5 B6 B7 A0 A1 A2 A3 A4 A5 A6 A7
PPF_I420, //YUV 420 12bit 平面格式,分为Y、U、V三个平面 Y0 Y1 Y2 Y3 U0 U1 V0 V1
PPF_NV12, //YUV 420 12bit 平面格式,分为Y、UV两个平面 Y0 Y1 Y2 Y3 U0V0 U1V1
PPF_RGB565, //B0 B1 B2 B3 B4 G0 G1 G2 G3 G4 G5 R0 R1 R2 R3 R4
PPF_RGB555, //B0 B1 B2 B3 B4 G0 G1 G2 G3 G4 R0 R1 R2 R3 R4 A0
PPF_YUY2, //YUV 422 16bit 打包格式,只有一个平面 Y0U0Y1V0 Y2U1Y3V1
PPF_UYVY, //YUV 422 16bit 打包格式,只有一个平面 U0Y0V0Y1 U1Y2V1Y3
PPF_YVYU, //YUV 422 16bit 打包格式,只有一个平面 Y0V0Y1U0 Y2V1Y3U1
PPF_YV12, //YUV 420 12bit 平面格式,分为Y、U、V三个平面 Y0 Y1 Y2 Y3 V0 V1 U0 U1
};
六、 图像源类型
直播伴侣插件系统中受支持的图像源类型如下
enumImageSourceType
{
IST_CAMERA, //摄像头数据
IST_IMAGE, //图片数据
IST_VIDEO, //视频文件数据
IST_PLUGIN, //插件图像数据
};
七、 音视频参数信息
typedefstruct _PluginElementParam
{
intvideoWidth; //图像宽度
intvideoHeight; //图像高度
PluginPixelFormat pf; //像素格式
int pitch[3]; //行距

PluginAudioFormataf;
intaudioSampleRate; //音频采样率
intaudioChannels; //音频声道数
intaudioFramesize; //一次采样数
intaudioSound; //音量值
}PluginElementParam;

八、 插件开发demo
以下代码表示如何利用斗鱼插件系统开发直播伴侣插件。该demo的功能是实现简单的截屏功能
#define DYPLUGIN_EXPORT

//包含插件头文件
#include "plugin.h"
#include <Windows.h>

classScreenCaptureElement;

//继承实现IPluginElement接口
classScreenCaptureElement : public IPluginElement
{
public:
ScreenCaptureElement()
{
HWND h = GetDesktopWindow();
HDC dc = GetDC(h);
m_dc = CreateCompatibleDC(dc);
ReleaseDC(h,dc);

RECT rt;
::GetClientRect(h,&rt);

m_width = rt.right;
m_height = rt.bottom;

m_size = rt.bottom * rt.right * 4;

BITMAPINFO bi;
memset(&bi,0,sizeof(bi));

BITMAPINFOHEADER &bih = bi.bmiHeader;
bih.biSize = sizeof(bih);
bih.biBitCount = 32;
bih.biWidth =rt.right;
bih.biHeight = -rt.bottom;
bih.biPlanes = 1;

m_bitmap = CreateDIBSection(m_dc, &bi, DIB_RGB_COLORS, (void**)&m_captureBits, NULL, 0);
m_bitmapOld = (HBITMAP)SelectObject(m_dc, m_bitmap);

m_show = true;
}

//open接口一定要重载,并返回true
virtual bool Open(char* env){return true;}

virtual bool ReadVideo(uint8_t* pixels,int size)
{
if (m_show)
{
HDC dc = GetDC(NULL);
BitBlt(m_dc,0,0,m_width,m_height,dc,0,0,SRCCOPY);
ReleaseDC(NULL,dc);
memcpy(pixels,m_captureBits,m_size);
}
return true;
}

virtual bool Destroy()
{
DeleteObject(m_bitmap);
return true;
}

//要显示截屏图像,一定要重载GetParameters接口,设置正确的图像参数,并返回true
virtual bool GetParameters(PluginElementParam* param)
{
param->pf = PPF_ARGB32;
param->pitch[0] = m_width * 4;
param->videoWidth = m_width;
param->videoHeight = m_height;
param->af = PAF_NONE;
return true;
}

virtual void SetConfig(){}

virtual void ShowPlugin(bool show)
{
m_show = show;
}

protected:
HDC m_dc;
HBITMAP m_bitmap,m_bitmapOld;
uint8_t* m_captureBits;
intm_size;
intm_width;
intm_height;
boolm_show;
};

//继承IPlugin接口
classScreenCapturePlugin : public IPlugin
{
public:
//获取插件名称
virtual char* GetName()
{
return "ScreenCapturePlugin";
}
//创建插件接口
virtualIPluginElement* CreateElement()
{
ScreenCaptureElement* elem = new ScreenCaptureElement();
returndynamic_cast<IPluginElement*>(elem);
}
};


//DLL导出函数
DYPLUGIN_LOAD IPlugin* dyLoadPlugin(IPluginContext* context)
{
returndynamic_cast<IPlugin*>(new ScreenCapturePlugin);
}

 报告下载错误
点击链接开始下载
本类最新
相关教程
下载说明
栏目导航
推荐软件