博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开源流媒体服务器SRS学习笔记(2) - rtmp / http-flv / hls 协议配置 及跨域问题
阅读量:4992 次
发布时间:2019-06-12

本文共 2487 字,大约阅读时间需要 8 分钟。

对rtmp/http-flv/hls这三种协议不熟悉的同学,强烈建议先看看网友写的这篇文章科普下:  。
 
srs可以同时支持这3种协议,只要修改conf配置文件即可,默认情况下加载的是 
/usr/local/srs/conf/srs.conf,参考下图:

修改该文件:

listen              1935;max_connections     200;srs_log_tank        file;srs_log_file        ./objs/srs.log;http_api {    enabled         on;    listen          1985;}http_server {    enabled         on;    listen          8080;    dir             ./objs/nginx/html;}stats {    network         0;    disk            sda sdb xvda xvdb;}vhost __defaultVhost__ {    # http-flv设置    http_remux{        enabled    on;        mount      [vhost]/[app]/[stream].flv;        hstrs      on;    }    # hls设置    hls{        enabled       on;        hls_path      ./objs/nginx/html;        hls_fragment  10;        hls_window    60;    }}

然后执行:

sudo /etc/init.d/srs reload

让配置即时生效,VLC Player里下列3个地址,应该都可以播放了:

协议 地址
rtmp rtmp://srs_server_ip:1935/live/livestream
http flv http://srs_server_ip:8080/live/livestream.flv
hls http://srs_server_ip:8080/live/livestream.m3u8

 要注意的是:hls是把实时的视频流,分成1个个小的切片,保存在/usr/local/srs/objs/nginx/html/live/ 目录下,参考下图:

不太严谨的话,可以理解为播放的是服务器上已经生成好的视频片段,因此就算在obs把实时视频直播源切断,还是可以播放一段时间的。(实时生成视频切片需要时间,而且每个切片本身是N秒一切割,所以不难理解为啥hls协议延时最大)

 

h5播放hls:

借助项目,可以很容易实现.m3u8的hls播放:

    video-js HLS demo    

但播放时,如果h5页面与.m3u8的视频源不在同一个域名,浏览器会遇到跨域问题。

网上有一种解决办法,是修改srs的源码,增加Access-Control-Alow-Orogin:*,但个人不推荐这种做法,一来把安全性降低了,容易造成盗播等安全问题。二是如果官网以后fix bug了,自己又得改一次。

更好的办法,是在srs前面放一个nginx,做转发来解决跨域问题。通常h5页面,是通过nginx来访问的,可以在nginx里,把特定视频源路径,转发到后端srs服务器上,参考以下配置:

location /srs/ {	proxy_pass http://10.2.*.*:8080/; 	add_header Cache-Control no-cache; 	add_header Access-Control-Allow-Origin *;    }

这样,请求http://localhost:81/srs/live/livestream.m3u8的请求,都会转发到http://10.2.X.X:8080/live/livestream.m3u8上,跨域问题解决后,就可以正常播放了,参考下图的效果:

tips: obs+srs支持多路视频源同时直播,上图中阿凡达+本机摄像头,二路视频同时推流/拉流,毫无影响。

 

h5播放http-flv

首先要感谢 ,可以不依赖于flash player,纯js+html实现flv的播放。
    
flv.js demo

当然,如果播放端环境可控(比如pc端,且能确定安装并允许支行flash player)直接用flash player播放flv效果更好。

转载于:https://www.cnblogs.com/yjmyzz/p/srs_study_2_hls_rtmp_httpflv_and_cross-domain.html

你可能感兴趣的文章
吴裕雄 实战PYTHON编程(8)
查看>>
xhtml
查看>>
poj 1113 Wall (凸包模板题)
查看>>
cf 535B Tavas and SaDDas
查看>>
OO-面对对象的特征--多态、抽象
查看>>
看准网免登陆查看
查看>>
用pygame实现打飞机游戏-1-搭建框架
查看>>
io编程,bio,nio,aio
查看>>
windows 关于时间的计算
查看>>
面向对象编程思想-代理模式
查看>>
HttpClient获取Cookie的两种方式
查看>>
Windows 7中的电源计划及维护
查看>>
Spring MVC 配置类 WebMvcConfigurerAdapter
查看>>
js获取url参数
查看>>
程序员如何优雅的挣零花钱?
查看>>
推荐 2 个简历模板及 2 大加分技巧
查看>>
关于伪类选择器中一个冒号和两个冒号的区别
查看>>
理解敏捷开发准则
查看>>
[beta cycle]daily scrum10_2.25
查看>>
【转载】和 Thrift 的一场美丽邂逅
查看>>