流媒体的文档,还是属于学习记录类型。
关于这篇文档,现在看来,属于简单的demo类型,还不能作为工程进行。后面对于如何作为工程将会继续完成文档。
一:准备工作
1.阿里云上下载git
yum -y install git
2.srs官网
https://github.com/ossrs/srs/wiki/v4_CN_Home#getting-started
简单的单节点架构:
典型的源站和边缘集群的架构,适用于需要高并发的场景:
二:启动SRS
2.进入官网,按照官网进行操作
1.下载源码,推荐用CentOS7系统:
git clone -b 4.0release https://gitee.com/ossrs/srs.git
2.编译,注意需要切换到srs/trunk
目录:
cd srs/trunk
./configure
make
3.启动服务器:
./objs/srs -c conf/srs.conf
4.检查SRS是否成功启动,可以打开 http://localhost:8080/ ,或者执行命令:
# 查看SRS的状态
./etc/init.d/srs status
# 或者看SRS的日志
tail -n 30 -f ./objs/srs.log
5.例如,下面的命令显示SRS正在运行:
MB0:trunk $ ./etc/init.d/srs status
SRS(pid 90408) is running. [ OK ]
MB0:trunk $ tail -n 30 -f ./objs/srs.log
3.页面效果
需要访问1985端口,需要阿里云启动端口
页面效果:
SRS控制台:
三:ffmpeg推流
1.下载FFmpeg
参考:https://blog.csdn.net/luoyayun361/article/details/120961899
2.官网下载
然后,下载full:
下载后效果:
3.配置环境变量
接下来设置一下将bin目录设置到环境变量path中去
检查配置是否成功:
4.推流
1.开放端口1935
2.通过视频转换器转换了一个flv格式的视频
参考:http://www.leawo.cn/space-544683-do-thread-id-30735-pages-1.html
3.推送效果
ffmpeg -re -i ./doc/source.flv -c copy -f flv rtmp://localhost/live/livestream
四:ffplay与clv拉流
1.使用ffplay进行播放
ffplay rtmp://ip/live/livestream
2.使用VLC拉流播放
下载:https://www.videolan.org/
操作步骤:
录入url:
效果:
四:OBS推流(本地文件)
1.下载
https://obsproject.com/download
2.步骤
打开,选择媒体源:
设置源:
确定后添加数据:
效果:
开始推流:
设置:
使用ffplay进行播放:
使用上文的命令。
五:OBS推流(摄像头捕获)
1.
六:H5展示
1.说明
上面的ffmpeg已经将文件转为flv了,可以直接在H5中展示
2.程序
<html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>flv视频流播放</title> <style> html, body { width: 100%; height: 100%; overflow: hidden; text-align: center; } </style> </head> <body> <video id="video" autoplay controls></video> <script src="http://bilibili.github.io/flv.js/dist/flv.js"></script> <script> var video = document.getElementById('video'); var videoSrc = 'http://ip:8080/live/livestream.flv'; if (flvjs.isSupported()) { var flvPlayer = flvjs.createPlayer({ type: 'flv', url: videoSrc }); flvPlayer.attachMediaElement(video); flvPlayer.load(); flvPlayer.play(); } </script> </body> </html>
3.效果