最近公司有个项目需要在国产化环境中部署流媒体服务,客户指定了银河麒麟操作系统+龙芯架构的服务器。接到任务的我,脑海里瞬间闪过三个字:"硬核挑战"。我对国产自研龙芯架构的了解还停留在"听说过但没摸过"的阶段。但技术人的DNA告诉我------这恰恰是最有趣的部分。
环境准备
硬件与软件基础
本次编译环境采用:
• CPU:龙芯3A4000(mips64架构)
• 操作系统:银河麒麟V10 SP1(龙芯版)
• 目标软件:SRS 7.0 开源流媒体服务器
龙芯芯片早期基于MIPS64指令集架构进行自主研发,兼容MIPS64的指令体系,并在此基础上逐步扩展和优化,形成了具有自主知识产权的LoongISA指令集。随着技术演进,龙芯于2021年正式推出完全自研的LoongArch架构,彻底脱离MIPS授权体系。MIPS64是一种精简指令集(RISC)架构,支持64位计算、多核处理和高效能功耗比,曾为龙芯处理器提供良好的性能基础。如今,龙芯通过LoongArch实现更高程度的自主可控,广泛应用于国产计算机、服务器及嵌入式设备中,助力我国信息技术安全与产业链独立。

SRS简介

SRS是一款国产开源流媒体服务器,具有以下优势:
- 完全开源,遵循MIT协议
- 支持RTMP、HTTP-FLV、HLS等多种流媒体协议
- 代码结构清晰,便于二次开发
- 社区活跃,文档相对完善
- 对国产化平台支持潜力大
软件编译环境依赖安装
SRS 编译依赖较多,需提前安装基础构建工具和库,确保主机可访问公网:
bash
sudo apt install -y build-essential automake cmake pkg-config tcl
# 安装 FFmpeg 开发包(启用 WebRTC 所需)
sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libavutil-dev


SRS源码编译详细步骤
srs源码包获取
从官方仓库下载SRS源码,如果网络访问受限,可以从国内获取:
国内地址:https://gitcode.com/GitHub_Trending/sr/srs?source_module=search_project
GitHub地址:https://github.com/ossrs/srs
解压下载的源码包:
bash
unzip srs-develop.zip
配置编译参数
进入解压下的trunk目录,如果直接configure报如下错误:

解决方法,关闭ffmpeg-fit:
bash
sudo ./configure --ffmpeg-fit=off


编译安装srs
bash
sudo make && sudo make install

验证与启动:让 SRS 跑起来
手动启动srs
编译成功后,SRS 可执行文件位于/usr/local/srs/objs/srs,使用默认配置手动启动srs:
bash
cd /usr/local/srs
./objs/srs -c conf/srs.conf
如果启动失败报如下错误:


根本原因是系统打开文件描述符(file descriptors)限制太低,导致 SRS 无法启动。
解决方案:
bash
sudo vim /etc/security/limits.conf
bash
# SRS file descriptor limits
deskmedia soft nofile 65536
deskmedia hard nofile 65536
* soft nofile 65536
* hard nofile 65536

修改完成之后,重启系统生效然后启动srs验证。
使用 systemd 托管srs服务
将 SRS(Simple Realtime Server) 注册为 systemd 服务,可以实现开机自启、自动重启、日志管理等系统级功能。以下是详细步骤。
创建 /etc/systemd/system/srs.service,添加一下内容:
bash
[Unit]
Description=SRS Streaming Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/local/srs
ExecStart=/usr/local/srs/objs/srs -c /usr/local/srs/conf/srs.conf
Restart=on-failure
RestartSec=5
PIDFile=/var/run/srs.pid
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target

启用并启动服务:
bash
sudo systemctl daemon-reload
sudo systemctl enable srs
sudo systemctl start srs
sudo systemctl status srs

检查srs服务端是否监听
bash
sudo netstat -nplt

访问srs服务web管理界面
bash
http://<srs服务器IP>:8080


srs打包成deb包(可选)
deb包打包环境安装
devscripts、debhelper、fakerroot提供了Debian包构建的辅助工具。
bash
sudo apt install -y dpkg-dev debhelper devscripts fakeroot


创建构建deb包目录结构
bash
sudo mkdir -p srs-deb/DEBIAN
sudo mkdir -p srs-deb/usr/local
sudo mkdir -p srs-deb/etc/systemd/system

复制已编译好的 srs 文件
bash
sudo cp -ra /usr/local/srs ~/srs-deb/usr/local/
sudo cp /etc/systemd/system/srs.service srs-deb/etc/systemd/system/

创建 DEBIAN 控制文件
创建 srs-deb/DEBIAN/control,这是DEB包的核心元数据文件,内容如下:
bash
Package: srs
Version: 7.0.137
Section: net
Priority: optional
Architecture: mips64el
Maintainer: NotStrandedYet <2467813384@qq.com>
Description: Simple Realtime Server for RTMP/HLS/WebRTC streaming
A high-performance streaming server supporting RTMP, HLS, WebRTC,
and more. Optimized for mips64el architecture.

Architecture必需通过以下命令获取:
bash
dpkg --print-architecture
创建安装后脚本postinst
创建srs-deb/DEBIAN/postinst,内容如下:
bash
#!/bin/sh
set -e
# Set executable permissions
chmod 755 /usr/local/srs/objs/srs
# Reload systemd configuration and start srs service
systemctl daemon-reload
systemctl enable srs
systemctl start srs
exit 0

创建卸载前脚本prerm
创建srs-deb/DEBIAN/prerm,内容如下:
bash
#!/bin/bash
# Stop srs service before removal
systemctl stop srs.service
systemctl disable srs.service
exit 0

设置构建脚本权限:
bash
sudo chmod 755 postinst prerm
构建deb包
使用dpkg-deb工具构建DEB包:
bash
sudo dpkg-deb --build srs-deb
完成之后会生成srs-deb.deb命名的deb包,为了日后便于区分可以对命名进行更改。
bash
sudo mv srs-deb.deb srs-7.0-kylin-mips64el.deb
安装验证srs的deb包
安装deb包
bash
sudo dpkg -i srs-7.0-kylin-mips64el.deb

验证srs服务deb包安装
bash
sudo systemctl status srs

卸载deb包安装的srs
bash
sudo dpkg -P srs

srs打包deb包构建完整目录结构

写在最后
本次在银河麒麟龙芯架构上编译部署SRS的完整过程,展示了国产基础软硬件平台已经具备了承载关键业务应用的能力。虽然过程中可能会遇到一些挑战,但正是这些挑战让我们更深入地理解技术本质,积累宝贵的国产化技术经验。技术的发展永无止境,国产化替代之路也需要更多技术人员的参与和贡献。希望本文能为你打开一扇窗,看到国产技术生态的无限可能。如果你在实践过程中遇到其他问题或有新的发现,欢迎在评论区分享交流,让我们共同让技术落地,让国产可信。
原文链接: https://mp.weixin.qq.com/s/n7N1itSgAA59AbbQrJkeBg
如果觉得本文有用,欢迎关注、点赞、转发,让更多国产系统用户看到!