南昌网站建设公司网站建设公司,app线上推广方式,信息流推广实施策划书,上海外贸展会欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)#xff1a;https://github.com/zq2599/blog_demos 本篇概览
今天的实战是流传输过程中的常见功能#xff1a;回源如下图#xff0c;lal(源站)和lal(拉流节点)代表两台电脑#xff0c;上面都部署了lalVLC在…欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)https://github.com/zq2599/blog_demos 本篇概览
今天的实战是流传输过程中的常见功能回源如下图lal(源站)和lal(拉流节点)代表两台电脑上面都部署了lalVLC在播放时去拉流节点拉流但实际上FFmpeg将流推到了源站这就要求拉流节点能和源站建立联系从源站获取到媒体流返回给VLC 至于为什么VLC不直接去源站拉流呢原因是多方面的
网络不通可能VLC在公网而源站只能在某个内网带宽成本问题可能源站出口带宽成本比拉流节点出口带宽成本高距离问题有可能FFmpeg和源站都在北方VLC在南方走公网去北方拉流距离大所以延时大如果拉流节点在南方那么VLC去拉流节点距离就会变短(拉流节点和源站是内网通信)
将FFmpeg改为主播VLC改为观众是不是有直播内味了…捋清楚了上述逻辑接下来可以动手操作了从上图可见今天要部署两个lal我这边把拉流节点部署在本机MacBook上源站部署在阿里云上阿里云专家的福利一年ECS免费用最终的部署情况如下图
源站部署
登录阿里云机器将编译好的lalserver以及lalserver.conf.json上传到阿里云服务器目录结构如下图
~# tree lal
lal
├── bin
│ └── lalserver
├── conf
│ └── lalserver.conf.json注意我这边MacBook是M1芯片编译出来的lalserver无法运行在X86架构的电脑上您也要注意类似问题启动
./bin/lalserver -c conf/lalserver.conf.json如果您用的也是云服务器注意放开1935和8080端口 推流到源站
./ffmpeg \
-re \
-stream_loop -1 \
-i ../videos/sample.mp4 \
-c copy \
-f flv \
rtmp://源站IP:1935/live/test110此时直接从源站拉流是没有问题的可以用VLC或者ffplay试试
rtmp://源站IP:1935/live/test110拉流节点配置
接下来要部署拉流节点了这里要修改配置使得它在收到拉流请求的时候知道去哪里拉流打开配置文件conf/lalserver.conf.json找到配置static_relay_pull其原本内容如下 static_relay_pull: {enable: false,addr: },修改后的内容如下注意端口就是1935 static_relay_pull: {enable: true,addr: 源站IP:1935},启动
./bin/lalserver -c conf/lalserver.conf.json用VLC验证播放地址如下均可以正常播放要注意的是hls的无法最先播放这个应该和拉流的内部处理有关现在还不熟悉lal的源码只能留待将来再研究了
rtmp://127.0.0.1:1935/live/test110
http://127.0.0.1:8080/live/test110.flv
http://127.0.0.1:8080/hls/test110.m3u8播放效果如下与直接从源站拉流一样当然了些许延时还是有的看实际网络情况 另外还要注意的是如果VLCl拉的流在拉流节点本来就存在FFmpeg推到了拉流节点那么拉流节点就直接返回流给VLC了不会去源站拉至此回源操作就完成了如果您正好在研究推拉流级联希望本文能给您一些参考
你不孤单欣宸原创一路相伴
Java系列Spring系列Docker系列kubernetes系列数据库中间件系列DevOps系列