搭建推流服务器
操作系统 CentOS Linux release 7.6.1810 (Core)
1 下载软件
先从官网下载最新的稳定发布版本(目前是 3.0.97 ) http://ossrs.net/srs.release/releases/files/SRS-CentOS7-x86_64-3.0.97.zip
2. 解压缩
unzip SRS-CentOS7-x86_64-3.0.97.zip
3 安装
如果出现No package lsb_release available. 的错误提示(centos 7上容易出现这个错误),可尝试先安装
yum install -y redhat-lsb
unzip SRS-CentOS7-x86_64-3.0.97.zip
cd SRS-CentOS7-x86_64-3.0.97
./INSTALL
安装成功
4 启动或者停止
启动
sudo /etc/init.d/srs start
停止
sudo /etc/init.d/srs stop
类似的,除了start/stop,还有其它选项,比如:reload|status
 [~]$ /etc/init.d/srs
Usage: /etc/init.d/srs {start|stop|status|restart|reload}
5.推流测试
推流:即向流媒体服务器发布视频(支持本地文件或摄像头做为视频源)
5.1 FFmpeg安装
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源软件,利用它可以将本机视频文件推到SRS上。从FFmpeg官网下载后,进行安装即可。详细步骤如下:
从http://ffmpeg.org/download.html下载最新版本
yum install yasm
xz -d ffmpeg-4.3.2.tar.xz
tar -xvf ffmpeg-4.3.2.tar
cd ffmpeg-4.3.2
./configure --enable-shared --prefix=/usr/ffmpeg
make
make install
vim /etc/ld.so.conf 文件的最后(另外一行)加入/usr/ffmpeg/lib/
ldconfig
vim /etc/profile 在文件末增加环境变量
PATH=$PATH:/usr/ffmpeg/bin
export PATH
source /etc/profile 使环境变量生效
ln -s /usr/ffmpeg/bin/ffmpeg /usr/local/bin/
ffmpeg -version 出现下图信息即安装成功
5.2 用FFmpeg推流

直播测试
tips: srs源码自带了一个示例flv, 路径为 ./trunk/doc/source.200kbps.768x320.flv,需要从网上下载
ffmpeg -re -i source.200kbps.768x320.flv -vcodec copy -acodec copy -f flv -y rtmp://srs_server_ip:1935/live/livestream
注: 上述命令中的flv完整路径,以及srs server ip,大家根据情况自行替换为实际值。 另外:默认情况下srs的rtmp采用1935端口,如果该端口被占用或修改了srs.conf中的端口,
注意根据情况调整;防火墙如果开了,也要检测下1935是否允许访问。
如果出现如下信息表示推流成功:

直播地址:rtmp://srs_server_ip:1935/live/livestream

或者直播地址:rtmp://srs_server_ip:1935/live/livestream.flv(需要进行flv配置,见下面配置文件)

点播测试

配置文件 /usr/local/srs/conf/http.hls.conf  ,内容如下:

[root@centos76-1 ~]# cat /usr/local/srs/conf/http.hls.conf
# the config for srs to delivery hls
# @see https://github.com/ossrs/srs/wiki/v1_CN_SampleHLS
# @see full.conf for detail config.


listen              1935;
max_connections     1000;
srs_log_tank        file;
srs_log_file        ./objs/srs.log;
http_api {
    enabled         on;
    listen          1985;
}

http_server {
    enabled         on;
    listen          8081;
    dir             ./objs/nginx/html;
}
vhost __defaultVhost__ {
    hls {
        enabled         on;
        hls_fragment    10;
        hls_window      86400;
        hls_path        ./objs/nginx/html;
        hls_m3u8_file   [app]/[stream].m3u8;
        hls_ts_file     [app]/[stream]-[seq].ts;
        hls_cleanup     off; #on 打开  off 关闭关闭定期清除ts
        hls_dispose     1800;  #半个小时足够我们对视频文件进行操作了
        hls_on_error    continue;
        hls_storage     disk;
        hls_wait_keyframe       on;
        hls_acodec      aac;
        hls_vcodec      h264;
    }
#分发flv流
    http_remux {
        enabled     on;
        mount       [vhost]/[app]/[stream].flv;
        hstrs      on;
    }
}

cd /usr/local/srs
/usr/local/srs/objs/srs -c  /usr/local/srs/conf/http.hls.conf

启动进程后srs打开了3个服务端口:1935, 1985 和8081。

ffmpeg -i /root/dengjiaxian.mp4 -vcodec copy -acodec copy -y -f flv rtmp://srs_server_ip:1935/live/test
生成的文件在/usr/local/srs/objs/nginx/html/live/下 有test.m3u8文件和很多个文件test-1-XX.ts文件

点播地址为:http://srs_server_ip:8081/live/test.m3u8
播放ffplay http://srs_server_ip:8081/live/test.m3u8

或者使用如下的命令

ffmpeg -i /root/aomenfengyun1080p.mp4  -f segment -segment_time 60 -segment_format mpegts -segment_list /usr/local/srs/objs/nginx/html/aomen/aomen.m3u8 \\
 -c copy -bsf:v h264_mp4toannexb -map 0 /usr/local/srs/objs/nginx/html/aomen/aomen-%04d.ts

ffmpeg -i /root/chedanzhuanjia.ts  -c copy -map 0 -f segment -segment_list /usr/local/srs/objs/nginx/html/chedanzhuanjia/chedanzhuanjia.m3u8 -segment_time 30 /usr/local/srs/objs/nginx/html/chedanzhuanjia/chedanzhuanjia-%04d.ts

 


上述第一个命令把xxx.mp4视频切成功每60秒一个小的ts视频的m3u8  文件,如果片长为120分钟,则有120个文件。如果使用 ffmpeg -i /root/dengjiaxian.mp4 -vcodec copy -acodec copy -y -f flv rtmp://srs_server_ip:1935/live/test ,点播的时候,输入m3u8  文件,出来的是视频文件的最后内容,而不是视频文件的开始内容。采用此命令,点播的时候出来的视频文件的开始内容,正常。

上述第二个命令是把ts切成30秒一个小的ts视频的m3u8  文件

点播地址为:http://srs_server_ip:8081/aomen/aomen.m3u8

6、拉流测试
拉流:即从流媒体服务器读取视频流(说白了:就是播放)
推荐使用开源的VLC播放器 (当然其它任何支持网络媒体源播放的player其实都行),File -> Open Network,直播输入地址 rtmp://srs_server_ip:1935/live/livestream

点播输入地址http://srs_server_ip:8081/live/test.m3u8

7、附录

 ffmpeg-----mp4转化成hls时附带的参数详解

      -re这个选项会将输入的读取速度降低到输入的本地帧速率。它对于实时输出(例如直播流)很有用。
     -hls_time n: 设置每片的长度,默认值为2。单位为秒
     -hls_list_size n:设置播放列表保存的最多条目,设置为0会保存有所片信息,默认值为5
    -hls_wrap n:设置多少片之后开始覆盖,如果设置为0则不会覆盖,默认值为0.这个选项能够避免在磁盘上存储过多的片,而且能够限制写入磁盘的最多的片的数量
    -hls_start_number n:设置播放列表中sequence number的值为number,默认值为

    -segment_list 指定 m3u8 文件
    -segment_time 30 指定切片ts文件长度30秒

 

Logo

更多推荐