流媒体服务SRS环境的搭建

服务部署

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 的具体配置参数

nginx 复制代码
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

相关推荐
liulilittle17 天前
HTTP/3.0:网络通信的技术革新与性能飞跃
网络·网络协议·http·https·quic·流媒体·通信
linux开发之路21 天前
C++ 音视频开发常见面试题及答案汇总
c++·ffmpeg·音视频·流媒体·音视频编解码
阿赵3D1 个月前
Unity引擎播放HLS自适应码率流媒体视频
unity·游戏引擎·音视频·流媒体·hls
DogDaoDao2 个月前
WebAssembly技术详解:从浏览器到云原生的高性能革命
云原生·音视频·编译·wasm·webassembly·流媒体·多媒体
aqi002 个月前
FFmpeg开发笔记(八十)使用百变魔音AiSound实现变声特效
android·ffmpeg·音视频·直播·流媒体
aqi002 个月前
FFmpeg开发笔记(七十九)专注于视频弹幕功能的国产弹弹播放器
android·ffmpeg·音视频·直播·流媒体
朱古力(音视频开发)2 个月前
NDI开发指南
fpga开发·音视频·实时音视频·视频编解码·流媒体
DogDaoDao2 个月前
WebRTC 2025全解析:从技术原理到商业落地
音视频·webrtc·实时音视频·p2p·流媒体·编解码
aqi002 个月前
FFmpeg开发笔记(七十八)采用Kotlin+Compose的NextPlayer播放器
android·ffmpeg·音视频·直播·流媒体