V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiangdong1987
V2EX  ›  视频技术

Go 直播实践

  •  1
     
  •   xiangdong1987 · 2019-04-17 15:59:20 +08:00 · 2016 次点击
    这是一个创建于 2072 天前的主题,其中的信息可能已经有所发展或是发生改变。

    视频直播是近些年特别火的技术栈,一直想学习如何实现视频直播。初期也了解了一些协议相关的知识,苦于都是 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 中配置源

    628bf39eeb1d51e6e0106e4bd5b6d08a.png

    总结

    • GO 真的是一个好语言,一个好的粘合剂
    • 前端工具真麻烦,像 php 的 composer 多好,还是前端的变化太快,跟不上潮流,还是喜欢一些底层一点的不那么麻烦。
    • 直播
      • 协议的实现
      • 流的上行
      • 流的下行
    • 还有一些其他的可以学习的内容比如
      • 视频的格式
      • 流的缓存
      • 压力测试
      • 负载均衡

    等等视频直播是一个大的技术栈不是像我这种简单的玩一下的,如果想深入做还是需要一定的功力和精力。只是供大家学习和体验。 转自: https://xiangdong1987.github.io/go/live/2019/04/16/Go_live-1.html

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3911 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 10:18 · PVG 18:18 · LAX 02:18 · JFK 05:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.