HCRM博客

如何在CentOS上高效部署和管理流媒体服务?

CentOS流媒体服务器搭建与配置指南

一、背景与概念

如何在CentOS上高效部署和管理流媒体服务?-图1
(图片来源网络,侵权删除)

流媒体(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 推流与播放

如何在CentOS上高效部署和管理流媒体服务?-图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

如何在CentOS上高效部署和管理流媒体服务?-图3
(图片来源网络,侵权删除)

编辑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服务即可生效。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/20833.html

分享:
扫描分享到社交APP
上一篇
下一篇