1.
概述与准备
说明:本指南针对部署在台湾节点的云服务器进行低延迟直播优化。
准备工作:确保有台湾或邻近地区VPS/云主机、公网IP、SSH访问权限、OBS或FFmpeg、RTMP推流地址与Key。
2.
服务器与网络选择
步骤:选择台湾机房或距离近的香港、新加坡节点;开通带宽 ≥ 10 Mbps;使用独立公网IP并配置弹性IP。
检查:ssh 登录,执行 ping 和 mtr 测试到目标观众与CDN节点,记录平均延迟与丢包率。
3.
防火墙与端口
步骤:在云控制台与服务器上放行TCP 1935(RTMP)、TCP 80/443(HTTP/HTTPS)、UDP 端口(若使用SRT或RTP)。
命令示例:sudo ufw allow 1935/tcp && sudo ufw allow 80/tcp && sudo ufw allow 443/tcp;确认iptables规则。
4.
安装FFmpeg与必要组件
步骤:Ubuntu 示例:sudo apt update && sudo apt install -y ffmpeg;建议编译启用x264、x265、fdk-aac以获得更好性能。
验证:ffmpeg -version 查看编码器支持;ffprobe -version 检查音频采样支持。
5.
基础编码参数实例(720p、30fps)
默认建议:分辨率720x1280、帧率30、视频码率 1500–3000 kbps、音频128 kbps。
FFmpeg命令示例(x264,CBR低延迟):ffmpeg -re -i input -c:v libx264 -preset veryfast -tune zerolatency -profile:v high -b:v 2500k -maxrate 2500k -bufsize 5000k -g 60 -keyint_min 60 -c:a aac -b:a 128k -ar 44100 -ac 2 -f flv rtmp://your.rtmp.server/app/streamkey
6.
低延迟与关键参数解释
说明:-tune zerolatency(减小延迟),-preset veryfast(编码速度与质量平衡),-g 与 keyint 控制关键帧间隔(建议与fps*2或*3)。
若需更低延迟:减小g值,使用GOP=1~2秒;考虑使用SRT或WebRTC替代RTMP。
7.
硬件编码与多码率(ABR)推流
步骤:若服务器支持Intel QSV/NVENC,使用相应编码器如 h264_qsv 或 h264_nvenc 提升CPU效率。
多码率示例:本地用FFmpeg生成三路码流并推到不同流名或同一转码器:分别设置 3000k(1080p)、1500k(720p)、800k(480p)。
8.
推流到台湾CDN与负载分发
步骤:在CDN后台配置源站为
台湾云服务器IP,设置回源协议RTMP/HTTP-FLV;启用边缘缓存与回源并发限制。
测试:使用OBS中推流地址进行连通性测试,并在CDN监控中查看带宽与并发。
9.
监测与排错实操命令
常用:ffprobe -v error -show_format -show_streams input 检查输入信息;ffmpeg -stats 查看推流实时日志。
排查:若丢帧或抖动,先看CPU/GPU利用率、网络丢包(mtr/traceroute)、磁盘I/O。
10.
优化小结与实战建议
实践要点:在台湾机房优先保证出口带宽与稳定性;使用适配观众带宽的多码率;优先硬件编码降低延迟并节能。
备份方案:当RTMP不稳定,启用SRT推流或接入地域化CDN边缘节点。
11.
问:如何在台湾节点把延迟从3s降到<1s?
答:减小GOP到fps*1、启用-tune zerolatency、使用硬件编码(NVENC/QSV)、改用SRT或WebRTC传输、在CDN开启实时分发并尽量减少HTTP转发层;同时保证上行带宽和低丢包。
12.
问:推流时出现画面卡顿如何排查?
答:先看服务器CPU/GPU/网络,使用top/nvidia-smi/ffmpeg日志;若网络抖动,检查丢包率并更换线路或使用FEC;若编码过慢,调高preset或启用硬件编码。
13.
问:如何配置多码率推流示例?
答:用FFmpeg并行生成多路:示例命令将同一输入转出三路不同码率并推送到不同流名,或推送到转码器由服务端切片;设置码率、bufsize与profile保持稳定并监控回源带宽。
来源:台湾直播云服务器 音视频编码与推流参数优化实例解析