srs简介
SRS全称Simple RTMP Server,定位是运营级的互联网直播服务器集群,是一个非常简单就可以推送rtmp视频流的服务器.
github主页:https://github.com/ossrs/srs
获取srs
git clone https://github.com/ossrs/srs
编译srs
cd srs/trunk
./configure && make
启动SRS
./objs/srs -c conf/srs.conf
- 启动后输出
启动的日志会保存在./objs/srs.log内,可以查看此日志文件判断srs是否启动成功。
至此,srs服务已经可以启动,但是启动的是srs服务的一个默认配置文件srs.conf,你可以自定义自己的配置文件来实现不同的功能。具体参见官网的wiki页面。
使用ffmpeg推流
服务启动后,我们需要将视频流推到srs服务上,让其为我们转发,github上srs的介绍是内部自带有ffmpeg的,但是我没有编译成功,所以我自己安装了ffmpeg进行推流操作。
命令如下:
ffmpeg -re -i /home/lee/video.mp4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://127.0.0.1:1935/videotest
上述命令解析:
• -re : 表示使用文件的原始帧率进行读取,因为ffmpeg读取视频帧的速度很快,如果不使用这个参数,ffmpeg可以在很短时间就把video.mp4中的视频帧全部读取完并进行推流,这样就无法体现出视频播放的效果了。
• -i :这个参数表示输入 ,后面/home/lee/video.mp4 就是输入文件。
• -vcodec copy : -vcodec表示使用的视频编解码器 ,前缀v表示video。后面紧跟的copy 表示复制使用源文件的视频编解码器,比如原文件的编解码器(codec)是h264,则这里就使用h264。
• -acodec copy : -acodec表示使用的音频编解码器,前缀a表示audio。后面的copy 表示使用源文件的音频编解码器。
• -b:v 800k : -b:v表示视频的比特率(bitrate) ,为800k。
• -b:a 32k : 表示音频的比特率为32k。
• -f flv : -f表示format ,就是强制输出格式为flv,这一步其实也叫封装(mux),封装要做的事就是把视频和音频混合在一起,进行同步。紧跟在后面的rtmp://localhost/videotest 表示输出的"文件名",这个文件名可以是一个本地的文件,也可以指定为rtmp流媒体地址。指定为rtmp流媒体地址后,则ffmpeg就可以进行推流。
推流成功后就可以访问rtmp地址rtmp://127.0.0.1:1935/videotest查看推流后的视频。srs在github上有用于测试的srs播放器,或者可以下载VLC播放器进行测试。