ZBLOG

ffmpeg 使用rtmp推流MP4文件

使用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

参数详解:

  1. -re
    以输入文件的原始帧率读取数据(避免极速推流)

  2. 视频编码参数

    • -c:v libx264:使用H.264编码
    • -preset fast:平衡编码速度和压缩率
    • -b:v 2000k:视频比特率(根据分辨率调整,例如1080p建议3000-6000k)
    • -pix_fmt yuv420p:兼容性最好的像素格式
    • -g 50:关键帧间隔(GOP大小),一般设为帧率的2倍
  3. 音频编码参数

    • -c:a aac:使用AAC音频编码
    • -b:a 128k:音频比特率
  4. 输出格式
    -f flv:强制输出为FLV容器格式(RTMP协议要求)

  5. 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服务器准备

  1. 测试用本地服务器
    可快速部署Nginx+RTMP模块SRS

  2. 云服务推流
    替换地址为云服务商提供的RTMP入口(如阿里云直播、腾讯云直播等)。

如果需要更具体的场景配置或问题排查,可以提供更多细节进一步分析。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23742

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?