如何用FFmpeg向node-media-server推送固定H.264视频?
用FFmpeg推送本地H.264视频到node-media-server
FFmpeg的作用
node-media-server只识别RTMP、HTTP-FLV这类流媒体协议的实时流,而本地H.264视频是静态封装文件(比如.mp4),没法直接推送到服务器。FFmpeg的核心作用就是把静态视频转换成符合流媒体协议要求的实时流,模拟成直播源推送给node-media-server。
操作步骤
- 先确认本地已安装FFmpeg:终端输入
ffmpeg -version能正常输出版本信息即可,未安装的话对应系统部署:Windows下载编译好的安装包,Linux用apt/yum,Mac用brew。 - 确保node-media-server已正常启动,默认推流地址为
rtmp://localhost:1935/live,若修改过配置则用自定义地址。 - 执行下面的FFmpeg推流命令
核心推流命令
推送封装好的H.264视频(如.mp4)
ffmpeg -re -i 你的视频路径.mp4 -c:v copy -c:a copy -f flv rtmp://localhost:1935/live/你的流名称
参数说明:
-re:按视频实际帧率读取文件,避免推流速度过快(不加的话FFmpeg会快速推完整个视频,不符合直播逻辑)-i:指定要推送的本地视频文件路径-c:v copy:直接复用原视频的H.264编码,无需重新转码,节省系统资源-c:a copy:直接复用原视频的音频编码,无音频的话可删除此参数-f flv:指定输出格式为FLV(node-media-server对该格式支持最优)- 末尾地址为node-media-server的推流地址,
你的流名称可自定义,比如test_live
推送纯H.264裸流文件(.h264后缀)
如果是未封装的H.264裸流文件,需指定输入格式:
ffmpeg -re -f h264 -i 你的裸流路径.h264 -c:v copy -f flv rtmp://localhost:1935/live/你的流名称
-f h264:告知FFmpeg输入文件为H.264裸流格式
验证推流成功
用播放器打开node-media-server的播放地址即可:
- RTMP播放:
rtmp://localhost:1935/live/你的流名称 - HTTP-FLV播放:
http://localhost:8000/live/你的流名称.flv
能正常播放则说明推流成功
内容的提问来源于stack exchange,提问作者seriously
相关产品推荐
相关产品推荐

