CentOS流媒体服务器搭建与配置指南
一、背景与概念
流媒体(Streaming Media)是指在数据网络上按时间先后次序传输和播放的连续或分段的媒体内容,相比于传统的下载播放方式,流媒体允许用户在下载文件的同时进行观看,极大地减少了等待时间并提高了用户体验。
二、CentOS下的主流流媒体服务器
1. SRS(Simple Realtime server)
SRS是一款高效、稳定且易于使用的流媒体服务器,支持RTMP、HLS、WebRTC等多种协议,广泛应用于直播场景。
1.1 安装步骤
下载SRS源码包 git clone b v3.0r0 https://github.com/ossrs/srs.git cd srs 编译并安装SRS ./configure && make && make install 设置开机自启动 ln sf /usr/local/srs/etc/init.d/srs /etc/init.d/srs cp f /usr/local/srs/libexec/systemd/system/srs.service /usr/lib/systemd/system/srs.service systemctl daemonreload systemctl enable srs systemctl start srs
1.2 推流与播放
使用FFmpeg进行推流:
ffmpeg re i input.mp4 c copy f flv rtmp://192.168.31.80/live/livestream
使用VLC进行观看:
rtmp://192.168.31.80/live/livestream
Nginx + RTMP模块
Nginx通过添加RTMP模块也可以实现流媒体服务,特别适用于需要高并发的场景。
2.1 安装依赖
yum install y gcc gccc++ pcre pcredevel zlib zlibdevel openssl openssldevel
2.2 下载并编译Nginx与RTMP模块
下载Nginx和ngx_rtmp模块 wget http://nginx.org/download/nginx1.18.0.tar.gz wget https://github.com/arut/nginxrtmpmodule/archive/master.zip 解压文件 tar zxvf nginx1.18.0.tar.gz unzip master.zip cd nginx1.18.0 配置、编译与安装 ./configure addmodule=../nginxrtmpmodulemaster make make install
2.3 配置Nginx
编辑Nginx配置文件nginx.conf
:
rtmp { server { listen 1935; chunk_size 4096; application live { live on; } } } http { server { listen 8080; location / { root html; index index.html index.htm; } } }
启动Nginx:
/usr/local/nginx/sbin/nginx
2.4 推流与播放
使用OBS进行推流:
rtmp://192.168.31.80:1935/live/stream
使用VLC进行播放:
rtsp://192.168.31.80:1935/live/stream
Jellyfin
Jellyfin是一款免费的媒体服务器软件,支持多平台客户端,适用于家庭多媒体管理与播放。
3.1 安装步骤
配置Yum源并安装依赖 wget O /etc/yum.repos.d/CentOSBase.repo https://mirrors.aliyun.com/repo/Centos7.repo yum update y yum install y epelrelease yum install y wget tar unzip gccc++ make cmake3 libcurldevel libpngdevel libX11devel libXextdevel libXfixesdevel libXrandrdevel libXidevel libXineramadevel libXmudevel libjpegturbodevel libavformatdevel libswscaledevel libavcodecdevel libavutildevel libpostprocdevel libvadevel libvdpaudevel libvdpaudriverdevel libfdkaacdevel libmp3lamedevel libopusdevel libvorbisdevel libtheoradevel libwebpdevel librtmpdevel libssldevel libassdevel libfreetypedevel libfribididevel libfontconfigdevel libidndevel liblzmadevel python3 python3pip python3setuptools python3wheel python3cryptography python3lxml python3yaml python3jinja2 python3requests python3sqlalchemy python3aiohttp python3chardet 下载Jellyfin wget O jellyfin_10.6.4_amd64.deb https://repo.jellyfin.org/releases/server/10.6.4/jellyfin_10.6.4_amd64.deb dpkg i jellyfin_10.6.4_amd64.deb 启动Jellyfin服务 systemctl enable jellyfin systemctl start jellyfin
3.2 使用Jellyfin
通过浏览器访问Jellyfin的Web界面进行配置与管理:
http://<服务器IP>:8096
默认账号为admin
,密码为password
。
三、低延迟配置与优化
SRS低延迟配置
在srs.conf
中添加以下参数以减少延迟:
listen 1935; max_connections 1000; daemon on; tcp_nodelay on; min_latency on; http_api { enabled on; listen 1985; } http_server { enabled on; listen 8080; dir ./objs/nginx/html; } vhost __defaultVhost__ { hls { enabled on; } http_remux { enabled on; mount [vhost]/[app]/[stream].flv; } rtc { enabled on; tcp_nodelay on; min_latency on; play { gop_cache off; queue_length 10; mw_latency 100; } publish { mr off; } } }
Nginx低延迟配置
在nginx.conf
中的RTMP配置部分添加:
application live { live on; record off; disable_sync_pointer on; ping 30s; ping_timeout 60s; drop_idle_connections on; accept_published_video off; }
这些配置有助于减少网络和处理延迟,提高实时性。
四、相关FAQs
Q1: SRS服务器如何更改推流地址和端口?
A1: 编辑srs.conf
文件中的listen
指令,可以更改SRS服务器的监听地址和端口。listen 2000;
将更改默认监听端口为2000,保存后重启SRS服务即可生效。