使用FFmpeg通过RTMP协议推送本地MP4文件到流媒体服务器(如Nginx-RTMP、SRS等)的基本命令如下:
基础推流命令
ffmpeg -re -i input.mp4 -c:v libx264 -preset fast -b:v 2000k -maxrate 2000k -bufsize 4000k \
-pix_fmt yuv420p -g 50 -c:a aac -b:a 128k -f flv rtmp://server_address/app/stream_key
参数详解:
-re
以输入文件的原始帧率读取数据(避免极速推流)视频编码参数
-c:v libx264
:使用H.264编码
-preset fast
:平衡编码速度和压缩率
-b:v 2000k
:视频比特率(根据分辨率调整,例如1080p建议3000-6000k)
-pix_fmt yuv420p
:兼容性最好的像素格式
-g 50
:关键帧间隔(GOP大小),一般设为帧率的2倍
音频编码参数
-c:a aac
:使用AAC音频编码
-b:a 128k
:音频比特率
输出格式
-f flv
:强制输出为FLV容器格式(RTMP协议要求)RTMP地址格式
rtmp://[服务器IP]/[应用名]/[流密钥]
示例:rtmp://localhost/live/test123
常见问题处理
1. 码率与分辨率不匹配
若出现花屏或卡顿,需调整比特率:
# 针对720p视频的推荐参数
ffmpeg -re -i input.mp4 \
-c:v libx264 -preset medium -b:v 1500k \
-s 1280x720 ... (其他参数同上)
2. 减少转码延迟
添加低延迟参数:
-tune zerolatency -profile:v baseline
3. 直接流转发(不重新编码)
如果MP4本身是H.264/AAC格式且符合RTMP要求:
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://...
4. 调试输出
查看详细推流信息:
ffmpeg ... (参数) ... \
-loglevel debug
RTMP服务器准备
测试用本地服务器
可快速部署Nginx+RTMP模块或SRS。云服务推流
替换地址为云服务商提供的RTMP入口(如阿里云直播、腾讯云直播等)。
如果需要更具体的场景配置或问题排查,可以提供更多细节进一步分析。
内容由零声教学AI助手提供,问题来源于学员提问