Go直播实践
视频直播是近些年特别火的技术栈,一直想学习如何实现视频直播。初期也了解了一些协议相关的知识,苦于都是c++相关学习起来比较难以理解,学习了Go语言之后突然想找一找是否有Go语言实现的直播服务,惊奇的发现,Livego这个开源直播服务端,自此展开了Go直播实践之路,由于工作繁重,只能抽时间搞,耽误了好几天的更新,话不多说直入正题。
服务端
- livego 精挑细选 简单可靠 便于二次开发
- livego的相关参数可以看源码或者help非常直观
- 对于服务端不是很难编译到运行不到2分钟,主要是注意推流时,格式的选取
- 上行推流:使用ffmpeg上行视频流
ffmpeg -re -i test.mp4 -c copy -f flv rtmp://192.168.112.20:1935/live/movie
总结:服务端是较为简单的没有任何难点
客户端
对于一个服务端来说,客户端编码是最让人头疼的。我选取的h5客户端流解析工具flv.js
题外话 对于前端工具真的很烦,npm安装可把我搞惨了,我是虚拟机+共享目录,我在虚拟机中npm install 它居然不认识我的共享目录,总是在rename的时候,提示权限有误无法操作,致使我在构建flv.js客户端环境上花了大量的时间,把一个两天搞定的事,一周才搞定。我是通过在虚拟机其他目录进行install在将安装好的文件拷贝到共享目录,最终还是搞定了。还有吐槽一下哔哩哔哩这么一个厉害的前端同学才给5000的工资真的说不过去。给做开源的各位大大点赞。
- 安装环境
- 克隆github
- npm install
- npm install -g gulp
- gulp release
不知道这些组件是干什么用的,就按就得了哈哈
测试
- nginx 配置demo
- 编译开启服务
go build ./livego
- 推流
ffmpeg -re -i test.mp4 -c copy -f flv rtmp://192.168.112.20:1935/live/movie
- demo中配置源
## 总结
- GO真的是一个好语言,一个好的粘合剂
- 前端工具真麻烦,像php的composer多好,还是前端的变化太快,跟不上潮流,还是喜欢一些底层一点的不那么麻烦。
- 直播
- 协议的实现
- 流的上行
- 流的下行
- 还有一些其他的可以学习的内容比如
- 视频的格式
- 流的缓存
- 压力测试
- 负载均衡
等等视频直播是一个大的技术栈不是像我这种简单的玩一下的,如果想深入做还是需要一定的功力和精力。只是供大家学习和体验。