胡焦24

You got a dream, you gotta to protect it!

站内搜索

选择搜索引擎,输入关键词开始搜索

Google
Bing
Yahoo
百度
💡 小贴士:选择不同的搜索引擎可能会得到不同的搜索结果

流媒体服务SRS环境的搭建

发布日期:2025-09-25 |文章分类: 默认分类

服务部署

SRS 是一款开源的流媒体服务器工具,源码地址 https://github.com/ossrs/srs

这里以 ubuntu 作为服务器,下载源码后切换到 src/trunk 目录,使用以下命令进行安装

cd srs/trunk
./configure
make -j4

编译完毕后,启动服务器进行测试

./objs/srs -c conf/srs.conf

从服务端监听端口来看,启动的进程开启了 3 个端口监听,其中:

8080 是 web 页面的监听

1935 是 rmtp 的监听,基于 tcp 协议之上

1985 是 提供 api 接口的 http 端口监听

媒体直播

RTMP直播推流

准备 mp4 文件,然后运行以下命令,将视频流推到服务器上

ffmpeg -re -i mvmusic.mp4 -c copy -f flv rtmp://localhost/live/livestream

也可以使用 OBS 进行推流,配置直播中的服务器地址为 rtmp://192.168.1.160/live/livestream

点击确定保存直播配置后,就可以点击开始直播流(在直播之前需要配置下 OBS 的视频输出源)

RTMP直播拉流

浏览器中输入 http://192.168.1.160:8080/ 回车 ,按照显示的指引点击可以进入 SRS 播放器

点击上面的播放视频,就可以从服务端实时获取直播流了

也可以使用 PotPlayer 播放器来获取实时的直播流,在主面板右键打开链接

然后配置上直接的地址 http://192.168.1.160:8080/live/livestream.flv ,然后就可以开始直播流播放了

HLS直播

更新 srs.conf 配置文件,设置 hls 的具体配置参数

http_server {
    enabled         on;
    listen          8080;
    dir             ./objs/nginx/html;  #视频切片文件存储地址(trunk文件夹下的地址)
}
vhost __defaultVhost__ {
    hls {
        enabled         on; #开启hls直播
        hls_path        ./objs/nginx/html; #HLS的m3u8和ts文件保存的路径。m3u8和ts文件都保存在这个目录中
        hls_fragment    10; #简单来说,就是ts文件时长
        hls_window      60; #秒,指定HLS窗口大小,即m3u8中ts文件的时长之和,超过总时长后,丢弃第一个m3u8中的第一个切片,直到ts的总时长在这个配置项范围之内
    }
}

启动 hls 推流,这个推流命令和 rtmp 中的推流是一样的

ffmpeg -re -i mvmusic.mp4 -c copy -f flv rtmp://localhost/live/livestream

ffmpeg -i mvmusic.mp4 -c:v libx264 -c:a aac -f hls -hls_time 10 -hls_list_size 0 http://localhost/live/livestream

播放的时候配置直播 url 地址为(浏览器中进行播放也是一样)

http://192.168.1.160:8080/live/livestream.m3u8

点播实现思路

根据前面的直播逻辑,推流的时候会生成 m3u8 以及对应的 ts 视频文件片段,但是直播的时候只会保存最近的部分视频片段

使用 m3u8 的地址进行直播的时候是可以进行部分前后拖动的,那么这个逻辑实现上就是点播的逻辑了

(1)先通过命令从原视频文件生成 m3u8 以及 ts 的完整文件片段

ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f hls -hls_time 10 -hls_list_size 0 output.m3u8

(2)将生成的文件列表置于hmtl下面的目录下

4、参考资料

https://blog.csdn.net/liwangcuihua/article/details/109532549