几行代码轻松实现网页视频聊天

    网络上视频主播的火热带动了网络视频聊天室开发行业的火热。现在网上企业或者工作室在弄网页的视频聊天室。通过个人学习,借用别人的开发Demo(AnyChat SDK,网上随便搜索一下就可以下载的),加上几十行JavaScript脚本就能轻松实现视频通话;也不用去下载指定的什么浏览器,因为IE、firefox、chrome等windows平台主流浏览器全部通过,完美运行。下边就跟大伙分享分享我的成果,布局代码就不贴出来了,只贴JavaScript脚本。

下面是我所使用的开发包的特点:

1.        支持Windows平台浏览器上的音频即时通讯应用开发

2.        提供JavaScript语言API接口,脚本编程

3.        兼容IE、Chrome、Firefox、360、遨游等主流浏览器

4.        支持iOS、Android、PC等设备和Web之间的互联互通

 

一、加载AnyChat for Web SDK

首先还是得先加载AnyChatfor Web SDK

<scriptlanguage="javascript" type="text/javascript"src="./javascript/anychatsdk.js"charset="GB2312"></script>

<scriptlanguage="javascript" type="text/javascript"src="./javascript/anychatevent.js"charset="GB2312"></script>

 

二、全局变量定义

 定义全局变量

var mDefaultServerAddr ="demo.anychat.cn";                 // 默认服务器地址

var mDefaultServerPort = 8906;                                       // 默认服务器端口号

var mSelfUserId = -1;                                                // 本地用户ID

var mTargetUserId = -1;                                    // 目标用户ID(请求了对方的音视频)

 

三、调用初始化函数

网页加载完成后判断有没有安装插件和插件是否是最新

// 页面加载完成 初始化

function LogicInit(){    // 初始化  

    varNEED_ANYCHAT_APILEVEL = "0";

    varerrorcode = BRAC_InitSDK(NEED_ANYCHAT_APILEVEL);

    if(errorcode == GV_ERR_SUCCESS)    // 初始化插件成功  

       document.getElementById("login_div").style.display ="block";  // 显示登录界面  

   else    // 没有安装插件,或是插件版本太旧,显示插件下载界面  

       document.getElementById("prompt_div").style.display ="block";    // 显示提示层  

}

 

四、调用登录函数

在这里服务器地址和端口都写死,输入用户名就可以登录

登录按钮点击事件:

// 登录系统

function LoginToHall() {

   BRAC_Connect(mDefaultServerAddr, mDefaultServerPort);  // 连接服务器  

   BRAC_Login(document.getElementById("username").value, "",0);    // 登录系统,密码为空也可登录  

}

 

调用登录函数后首先会触发连接服务器函数

// 客户端连接服务器,bSuccess表示是否连接成功,errorcode表示出错代码

functionOnAnyChatConnect(bSuccess, errorcode) {

    if(errorcode == 0) { }    // 连接服务器成功      

     elsealert("连接服务器失败");     //连接失败作提示,此时系统不会触发登录系统函数

}

 

连接服务器成功后会触发登录系统回调函数

// 客户端登录系统,dwUserId表示自己的用户ID号,errorcode表示登录结果:0 成功,否则为出错代码,参考出错代码定义

functionOnAnyChatLoginSystem(dwUserId, errorcode) {

    if(errorcode == 0) {    // 登录成功,显示大厅界面,隐藏登录界面。失败的话什么也不做,维持原状  

       mSelfUserId = dwUserId; 

       document.getElementById("login_div").style.display ="none";   //隐藏登录界面  

       document.getElementById("hall_div").style.display ="block";   //显示大厅界面  

    }

}

 

、调用进入房间函数

登录成功后显示大厅,大厅里就个输入框和一个 进入房间 按钮

点击 进入房间 按钮 调用函数

// 进入房间

functionEnterRoom(){    // 进入自定义房间

   BRAC_EnterRoom(parseInt(document.getElementById("customroomid").value),"", 0);  //进入房间  

}

 

进入房间触发回调函数

// 客户端进入房间,dwRoomId表示所进入房间的ID号,errorcode表示是否进入房间:0成功进入,否则为出错代码

functionOnAnyChatEnterRoom(dwRoomId, errorcode) {

    if(errorcode == 0) {  // 进入房间成功,显示房间界面,隐藏大厅界面;进入房间失败时不作任何动作  

       document.getElementById("hall_div").style.display = "none";//隐藏大厅界面  

       document.getElementById("room_div").style.display ="block";  //显示房间界面  

       BRAC_UserCameraControl(mSelfUserId, 1);  // 打开本地视频  

       BRAC_UserSpeakControl(mSelfUserId, 1);   // 打开本地语音                  

       // 设置本地视频显示位置  

       BRAC_SetVideoPos(mSelfUserId,document.getElementById("AnyChatLocalVideoDiv"),"ANYCHAT_VIDEO_LOCAL");

       // 设置远程视频显示位置(没有关联到用户,只是占位置)                        

       BRAC_SetVideoPos(0, document.getElementById("AnyChatRemoteVideoDiv"),"ANYCHAT_VIDEO_REMOTE");

    }

}


进入房间时,会触发在线用户回调函数

// 收到当前房间的在线用户信息,进入房间后触发一次,dwUserCount表示在线用户数(包含自己),dwRoomId表示房间ID

functionOnAnyChatRoomOnlineUser(dwUserCount, dwRoomId) {

    // 判断是否需要关闭之前已请求的用户音视频数据      

    if(mTargetUserId != -1) {      // mTargetUserId 表示  上次视频会话的用户ID  为自定义变量          

       BRAC_UserCameraControl(mTargetUserId, 0);     // 关闭远程视频     

       BRAC_UserSpeakControl(mTargetUserId, 0);     // 关闭远程语音

       mTargetUserId = -1;

    }

    if(dwUserCount > 1)     // 在该函数中判断是否有在线用户,有的话就打开其中一个远程视频

       SetTheVideo();

}

 

有用户退出房间时判断是否远程用户,并作出相应操作

// 用户进入(离开)房间,dwUserId表示用户ID号,bEnterRoom表示该用户是进入(1)或离开(0)房间

functionOnAnyChatUserAtRoom(dwUserId, bEnterRoom) {

    if(bEnterRoom == 1)

       if (mTargetUserId == -1) SetTheVideo();

    else {

       if (mTargetUserId == dwUserId)

           mTargetUserId = -1;

    }

}

 

发送信息时调用函数

// 发送信息

function SendMessage() {

   BRAC_SendTextMessage(0, 0,document.getElementById("SendMsg").innerHTML);    //调用发送信息函数   Msg:信息内容

   document.getElementById("ReceiveMsg").innerHTML += "我:" + document.getElementById("SendMsg").innerHTML +"<br />";

   document.getElementById("SendMsg").innerHTML = "";

}

 

收到在线用户发来信息时会触发函数

// 收到文字消息

functionOnAnyChatTextMessage(dwFromUserId, dwToUserId, bSecret, lpMsgBuf, dwLen) {

   document.getElementById("ReceiveMsg").innerHTML +=BRAC_GetUserName(dwFromUserId) + ":" + lpMsgBuf +"<br />";  // 收到信息显示到接收框

}

 

自定义函数

//自定义函数 请求远程视频用户

function SetTheVideo() {

    varuseridlist = BRAC_GetOnlineUser();    // 获取所有在线用户ID  

   BRAC_UserCameraControl(useridlist[0], 1);   // 请求对方视频  

   BRAC_UserSpeakControl(useridlist[0], 1);   // 请求对方语音  

   BRAC_SetVideoPos(useridlist[0],document.getElementById("AnyChatRemoteVideoDiv"),"ANYCHAT_VIDEO_REMOTE");    // 设置远程视频显示位置

   mTargetUserId = useridlist[0];

}

 

六、退出房间

退出房间调用函数

functionOutOfRoom(){       

   BRAC_LeaveRoom(dwRoomid);

}

 

七、退出系统

退出系统调用函数

functionOutOfSystem(){       

   BRAC_Logout();

}

    到此,简单的视频聊天室就完成了,如果你是个人的研究,不讲究界面和风格,甚至可以直接试用,可以和朋友直接视频聊天了,如果你是开发工作室,那么请一个设计师,优化界面和其他功能部署,那么你的开发基本完成了!



  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 我将带领大家一起来学习WebRTC原理和编程知识,并动手搭建环境完成网页视频会话和文字聊天。具体内容包括: 一、Html与JavaScript小白入门二、WebRTC小白入门与流程原理分析三、网络打洞STUN和TURN四、信令服务器的原理与实战五、手撕WebRTC流程与代码六、亲自敲码踩坑搭建视频会话   音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。    
实现STM32评估板与DGUSII屏的交互,可以用以下几行C代码实现一些简单的功能。 首先,我们需要连接STM32评估板与DGUSII屏。通常,这可以通过SPI或UART进行连接。在此,我们将以SPI为例进行说明。 1. 初始化SPI模块: ```c SPI_HandleTypeDef hspi; hspi.Instance = SPI1; hspi.Init.Mode = SPI_MODE_MASTER; hspi.Init.Direction = SPI_DIRECTION_2LINES; hspi.Init.DataSize = SPI_DATASIZE_8BIT; hspi.Init.CLKPolarity = SPI_POLARITY_LOW; hspi.Init.CLKPhase = SPI_PHASE_1EDGE; hspi.Init.NSS = SPI_NSS_SOFT; hspi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; hspi.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi.Init.TIMode = SPI_TIMODE_DISABLE; hspi.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; hspi.Init.CRCPolynomial = 7; if (HAL_SPI_Init(&hspi) != HAL_OK) { // 初始化SPI失败的处理 } ``` 2. 与DGUSII屏进行SPI通信: ```c uint8_t sendData = 0x01; // 要发送的数据 uint8_t receiveData = 0x00; // 接收的数据 //使能DGUSII屏的片选 HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, GPIO_PIN_RESET); // 发送数据 HAL_SPI_TransmitReceive(&hspi, &sendData, &receiveData, sizeof(sendData), 1000); // 禁用DGUSII屏的片选 HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, GPIO_PIN_SET); ``` 3. 实现功能: 根据DGUSII屏的协议文档,可以利用发送和接收的数据来实现所需的功能。例如,可以实现读取或写入DGUSII屏上的寄存器、显示信息等操作。 以上是实现STM32评估板与DGUSII屏交互的简单示例代码。根据具体需求和DGUSII屏的协议文档,可以扩展并实现更多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值