原理图:

我们使用是h5 所以我们直播通过手机端进行访问

让我们一起开始奇妙的流媒体之旅吧!


1、下载nginx-rtmp-module:

nginx-rtmp-module的官方github地址:https://github.com/arut/nginx-rtmp-module

使用命令:

[php]  view plain copy
  1. git clone https://github.com/arut/nginx-rtmp-module.git

将nginx-rtmp-module下载到linux中。

2、安装nginx:

nginx的官方网站为:http://nginx.org/en/download.html

[php]  view plain copy
  1. wget http://nginx.org/download/nginx-1.8.1.tar.gz
  2. tar -zxvf nginx-1.8.1.tar.gz
  3. cd nginx-1.8.1
  4. ./configure --prefix=/usr/local/nginx  --add-module=../nginx-rtmp-module  --with-http_ssl_module
  5. make && make install

本次默认安装目录为:/root, add-module为下载的nginx-rtmp-module文件路径。

安装时候可能会报错没有安装openssl,需要执行命令:

[php]  view plain copy
  1. yum -y install openssl openssl-devel

3、修改nginx配置文件:

[php]  view plain copy
  1. vi /usr/local/nginx/conf/nginx.conf

加入以下内容:

[php]  view plain copy
  1. rtmp {
  2. server {
  3. listen 1935;  #监听的端口
  4. chunk_size 4000;
  5. application hls {  #rtmp推流请求路径
  6. live on;
  7. hls on;
  8. hls_path /usr/share/nginx/html/hls;
  9. hls_fragment 5s;
  10. }
  11. }
  12. }

hls_path需要可读可写的权限。
修改http中的server模块:

[php]  view plain copy
  1. server {
  2. listen       81;
  3. server_name  localhost;
  4. #charset koi8-r;
  5. #access_log  logs/host.access.log  main;
  6. location / {
  7. root   /usr/share/nginx/html;
  8. index  index.html index.htm;
  9. }
  10. #error_page  404              /404.html;
  11. # redirect server error pages to the static page /50x.html
  12. #
  13. error_page   500 502 503 504  /50x.html;
  14. location = /50x.html {
  15. root   html;
  16. }

当然了,root可以跟据自己的需求来改的。
然后启动nginx:

[php]  view plain copy
  1. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

关于更多rtmp的参数可以参考:https://github.com/arut/nginx-rtmp-module/wiki

4、开始推流

做好以上的配置后,就可以开始推流了,我们可以使用obs来推流。

在设置->串流 中填写信息:URL为 rtmp://xxx:1935/hls,xxx为你的服务器的IP地址,hls是用来存放流媒体的。

秘钥可以随便填写一个,用来播放的时候识别播放哪个流媒体的,例如填写test等。

填写完毕后,点击开始串流,就说明我们的流媒体服务器搭建成功了。

5、观看直播(拉流)

观看直播就比较简单了,可以简单的使用h5的vedio标签就可以观看了。

可以访问http://xxx:81/hls/mystream.m3u8来观看直播,其中xxx为你的服务器IP地址,

或者使用

[php]  view plain copy
  1. <video>
  2. <source src="http://xxx:81/hls/test.m3u8"/>
  3. <p class="warning">Your browser does not support HTML5 video.</p>
  4. </video>

同上, xxx写的是你服务器IP地址。

然后使用手机访问这个网站就能够观看直播了。延迟大概在20S左右。

(在iOS的safari浏览器中可以正常观看)

写在最后

为什么延迟 那么高呢?这是因为服务器将视频流切断成一个个小的以.ts结尾的文件。

(hls文件夹内容。即推流到该文件夹了)

而我们访问的是.m3u8文件,这个文件内容是将一个个ts文件串联起来的,这就达到了一个播放的效果,所以看起来会有很大的延迟。

(m3u8文件内容)

如果降低延迟也不是没有方法,可以设置切片生成的大小以及访问的速度,但是这样大大增加了服务器的压力。

当然,我们也可以用rtmp拉流工具(VLC等)来看该直播,延迟大概在2-5S左右,拉流地址与推流地址一致。

阿里云 实现流媒体 直播 demo相关推荐

  1. 阿里云低延时直播RTS能力升级,让直播推流效果更佳

    简介:针对主播推流使用RTMP存在的TCP链接耗时过长.拥塞控制完全依赖TCP传输层.无法提供实时带宽数据来动态调整视频编码码率等问题引起的推流延迟和卡顿.阿里云低延时直播RTS(Real-time ...

  2. C#阿里云视频中心——直播

    C#阿里云视频直播生成地址播流推流 阿里云视频中心 阿里云官方支持文档 (一)地址生成 (二)Obs导播台推流 (三)使用阿里云Aliplayer播流 阿里云视频中心 最近用阿里云视频中心做了一个小小 ...

  3. 阿里云牵手战旗直播:让500万人进入1个直播房间

    本文讲的是阿里云牵手战旗直播:让500万人进入1个直播房间[IT168 云计算]6月10日,在云栖大会·上海峰会上,战旗直播和阿里云宣布达成战略合作. 即日起,战旗直播作为国内高清游戏直播第一平台,阿 ...

  4. 看阿里云如何为直播用户营造临场沉浸感?

    摘要: 2016年可以说是VR元年,从Facebook的Oculus,HTC的Vive到Sony的PS VR,层出不穷的VR设备和VR内容让用户逐步开始体验到了虚拟现实的魅力.VR视频和VR直播俨然已 ...

  5. 阿里云搭建流媒体服务器

    最近不少人问是否能够将云视睿博流媒体服务器NTV Media Server G3搭建在阿里云服务器上,答案是肯定的,而且我们大部分客户都是这样用的,利用流媒体服务器的视频处理和播出能力,以及阿里云的基 ...

  6. .看阿里云如何为直播用户营造临场沉浸感?

    2016年可以说是VR元年,从Facebook的Oculus,HTC的Vive到Sony的PS VR,层出不穷的VR设备和VR内容让用户逐步开始体验到了虚拟现实的魅力.VR视频和VR直播俨然已经成为了 ...

  7. 看阿里云如何为直播用户营造临场沉浸感?通往8K/3D VR直播之路(一)

    2016年可以说是VR元年,从Facebook的Oculus,HTC的Vive到Sony的PS VR,层出不穷的VR设备和VR内容让用户逐步开始体验到了虚拟现实的魅力.VR视频和VR直播俨然已经成为了 ...

  8. 2020双十一,阿里云GRTN拉开直播和RTC技术下半场序幕

    直播,已经成为了"剁手党"们最喜闻乐见的一种购物形式.对直播体验的极致追求,也是淘宝技术人们长期的努力方向.为了提升用户购物体验,让直播更加丝滑,让剁手更快一些,在2020双十一期 ...

  9. 当S8遇上边缘计算:谈阿里云ENS对直播业务场景的支撑

    近日,英雄联盟S8全球总决赛落下帷幕,中国战队IG零封FNC夺得冠军.这场比赛引起了国内网友的超高关注度,也给直播平台带来了不小的技术挑战.虎牙直播平台结合阿里云边缘节点技术方案,保障了总决赛当日70 ...

最新文章

  1. 替换 RHEL5的yum源为CentOS5源,亲测线上系统可用
  2. R语言生成数据及其95%置信区间数据(或者其它区间)、使用geom_ribbon函数为ggplot2图像手动添加置信区间的阴影区域using geom_ribbon to create shaded
  3. 面向对象编程的思想(2)
  4. 超图单值专题图 - 行政区划类型学习
  5. fastjson使用中遇到的
  6. php和python互动_PHP和Python 哪个更适合web开发?
  7. ofo已还清蚂蚁金服欠款?回应:消息不实 但没有放弃
  8. Linux学习总结(19)——Linux中文本编辑器vim特殊使用方法
  9. 字典中文乱码怎么处理_CATIA教程技巧和二次开发宏:我的零件有很多的几何体,但是几何体的名称是乱的,还有乱码,影响我的后续操作,我该怎么处理?...
  10. 未能加载文件或程序集 请移除注册表值 [HKLM/Software/Microsoft/Fusion!EnableLog] 解决方法
  11. Java程序猿从笨鸟到菜鸟之(九十二)深入java虚拟机(一)——java虚拟机底层结构具体解释...
  12. 计算机应用基础doc,计算机应用基础.doc
  13. python 两点曲线_ECC椭圆曲线加密算法:ECDH 和 ECDSA
  14. 内存分区0x00000000-0x0000FFFF共64K是null指针
  15. Laravel 部署到阿里云 / 腾讯云
  16. 创建exchange邮箱用户
  17. 盘点那些有趣的AR应用
  18. 让我们的爱洒满孩子们的心
  19. 半导体测试概论笔记——第二章半导体测试基本概念
  20. c语言课程设计报告停车系统,停车场管理系统C语言课程设计

热门文章

  1. 清明节到来 祭扫各纷然
  2. -- 31、查询1990年出生的学生名单
  3. (搞笑)经典!一些很彪悍的句子 !!
  4. 【C语言】函数参数试探:传指针与传引用——以队列为例
  5. 告别 PS !3 行代码 5 秒搞定抠图的 AI 神器!
  6. oneUI 如何获取swtch值
  7. 【无限互联】iOS开发视频教程— 2.8 iPhone开发之swtch语句
  8. 有些人的恨是没有原因的,他们平庸、没有天分、碌碌无为,于是你的优秀、你的天赋、你的善良和幸福都是原罪。
  9. 恶搞好朋友 java
  10. vscode 修改显示文件顺序