webrtc 音视频环境学习搭建

58 阅读3分钟

webrtc作为一种协议簇的实现技术,为点到点或多人通话和会议的实现提供了便利性,自己作为刚接触这个部分的小白,在学习的时候,通过视频和书籍的形式对这一个板块的知识有了初步的理解。从自己尝试的资料中,如果给出webrtc的学习建议,可以:

  1. 查看音视跳动科技内李超先生撰写的相关文章,同时对其撰写的书籍和课程也有对应的说明。自己购买了从 0 打造音视频直播系统的课程,这一系列的文章由浅入深讲解了webrtc的原理和内部的实现细节。虽然同现有(2023/3/12)的技术有一些出入,但确实清晰易懂,同时文后的评论和请教,对于新手入门也有启发作用。书中的样例采用了google提供的官方样例WebRTC samples,在遇到对应api不了解或者同预期的功能不同时,可以看下后者作为辅助参考。不过文章中涉及到getUserMedia的使用,除了本地localhost测试外,如果需要部署到自己的服务器上,需要使用https的域名,以获取对应的用户权限。因为服务器和域名的经济和部署操作的时间成本,自己在学习的时候没有尝试。从学习的角度,是应该尽可能尝试的,因为在公网上测试的代码带给自己的体验和愉悦感还是很明显的。最近发现了railway,免费账号可以部署自己的服务并提供免费的https域名,这也是本文想撰写供其他学习者分享的经验,之所以没有使用heroku的原因在于需要使用信用卡绑定,所以目前使用railway进行了测试。
  2. 可以了解livekit开源项目,目前社区很活跃,提供了多端的sdk和具体的源码实现,限于自己的能力,自己还没有了解很多。也希望更多的人可以分享对应的知识,形成更好的社区学习环境。

railway部署webrtc线上测试环境

railway官网注册账号后,每个月会有500分钟的免费使用时间。可以通过railway部署自己github上的仓库代码。整体的思路是:

  1. 本地实现对应的代码(因为自己使用的node的技术栈,所以后端可以使用express或者nest.js)
  2. 将本地项目推送到自己的github仓库中
  3. 在railway中关联自己的github账号,并部署对应的仓库代码
  4. 在railway的项目面板(dashboard)中配置对应的端口号。具体的细节自己也不是很清楚,不过为了域名的直接访问,我一般设置为80端口访问项目的服务

在项目的部署中,如果是使用node搭建对应的服务,记的在package.json文件中设置npm run start,因为railway在部署线上的服务时,会自动执行这一步,所以需要在script中进行指定。如果railway部署出现了问题,按照报错提示进行处理。服务运行后,首次启动可能出现加载缓慢的问题,等待一下就可以了。