ffmpeg(七):直播相关命令

推流场景

推本地文件为直播流(RTMP)

bash 复制代码
ffmpeg -re -stream_loop -1 -i input.mp4 \
  -c:v libx264 -preset veryfast -b:v 1500k \
  -c:a aac -b:a 128k \
  -f flv rtmp://your_server/live/stream

摄像头 + 麦克风 推流(Linux)

bash 复制代码
ffmpeg -f v4l2 -i /dev/video0 \
  -f alsa -i default \
  -c:v libx264 -preset veryfast -c:a aac \
  -f flv rtmp://your_server/live/stream

屏幕录制推流(Linux X11)

bash 复制代码
ffmpeg -f x11grab -s 1920x1080 -r 25 -i :0.0 \
  -f alsa -i default \
  -c:v libx264 -preset ultrafast -c:a aac \
  -f flv rtmp://your_server/live/stream

拉流场景

拉 RTMP 流播放本地或转发

bash 复制代码
ffmpeg -i rtmp://server/live/stream \
  -f sdl "RTMP Viewer"

拉 RTSP 流保存为 MP4

bash 复制代码
ffmpeg -rtsp_transport tcp -i rtsp://ip/stream \
  -c copy -f mp4 output.mp4

拉 RTSP → RTMP 转发

bash 复制代码
ffmpeg -rtsp_transport tcp -i rtsp://ip/stream \
  -c:v copy -c:a copy -f flv rtmp://server/live/stream

拉 HLS 流并推送 RTMP

bash 复制代码
ffmpeg -i https://yourdomain/playlist.m3u8 \
  -c copy -f flv rtmp://your_server/live/stream

协议转换 / 多协议分发

RTMP → HLS

bash 复制代码
ffmpeg -i rtmp://your_server/live/stream \
  -c:v copy -c:a copy \
  -f hls -hls_time 6 -hls_list_size 5 -hls_flags delete_segments \
  ./hls/playlist.m3u8

RTMP → fMP4 (for LL-HLS/DASH)

bash 复制代码
ffmpeg -i rtmp://your_server/live/stream \
  -c copy -f mp4 -movflags frag_keyframe+empty_moov \
  output.mp4

直播录制(支持分段/时间戳)

单文件录制直播流

bash 复制代码
ffmpeg -i rtmp://your_server/live/stream \
  -c copy output.mp4

按时间分段保存

bash 复制代码
ffmpeg -i rtmp://your_server/live/stream \
  -c copy -f segment -segment_time 600 -reset_timestamps 1 \
  record_%Y%m%d_%H%M%S.mp4

直播转码 + 推送多码率

转码 + 推多码率(1080p、720p)

bash 复制代码
ffmpeg -i rtmp://your_server/live/stream \
  -map 0:v -map 0:a -s:v:0 1920x1080 -b:v:0 3000k \
  -map 0:v -map 0:a -s:v:1 1280x720  -b:v:1 1500k \
  -c:v libx264 -preset veryfast -c:a aac -f tee \
  "[f=flv]rtmp://server/live/1080p|[f=flv]rtmp://server/live/720p"

HLS 直播流切片生成(网页播放用)

bash 复制代码
ffmpeg -re -i input.mp4 \
  -c:v libx264 -c:a aac \
  -f hls -hls_time 5 -hls_list_size 10 \
  -hls_flags delete_segments+append_list \
  ./hls/live.m3u8

常用参数说明

参数 含义
-re 模拟实时速率播放输入
-c copy 不转码,直接拷贝流
-c:v libx264 使用 H.264 编码
-preset 速度优先级:ultrafast → medium → slow
-f flv 输出封装为 FLV(适用于 RTMP)
-segment_time 每段时间长度(用于分段录制)
-hls_time 每个 HLS ts 文件时长
-hls_list_size m3u8 保留多少段
-rtsp_transport tcp 使用 TCP 模式拉 RTSP(更稳定)

推流到多路 CDN(Tee 多输出)

bash 复制代码
ffmpeg -re -i input.mp4 \
  -c:v libx264 -c:a aac -f tee \
  "[f=flv]rtmp://cdn1/live/stream|[f=flv]rtmp://cdn2/live/stream"

直播低延迟优化建议

项目 建议
编码延迟 使用 ultrafast preset
GOP 设置 保持稳定 GOP(如每2秒关键帧)
音频设置 使用 AAC,48kHz,128kbps
推送协议 优先使用 RTMP 或 LL-HLS
网络 优先使用 TCP,防丢包
播放器端 缩短缓冲区,设置超时重连策略
相关推荐
VidDown1 天前
自动给视频挑一张能看的封面:帧评分、构图与批量生成
python·ffmpeg·音视频·视频
可乐鸡翅yeah_2 天前
HLS 业务 Referer‑Policy 网页元标签引发播放异常排错
前端·javascript·网络·ffmpeg·php·音视频
开开心心就好3 天前
本地文件搜索工具推荐,占用小速度还快
智能手机·ffmpeg·ocr·word·音视频·网络攻击模型·安全架构
我科绝伦(Huanhuan Zhou)3 天前
oracle坏块导致备份不了
数据库·oracle·ffmpeg
RS迷途小书童3 天前
Python+FFmpeg提取大疆无人机MP4内嵌mov_text遥测SRT字幕并做完整性校验
python·ffmpeg·大疆·srt字幕·dji
开开心心就好3 天前
视频压缩工具推荐,画质效果很能打
智能手机·ffmpeg·ocr·word·排序算法·音视频·散列表
可乐鸡翅yeah_4 天前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
redfred4 天前
HyperFrames 部署教程:5.6 万 Star 开源「写 HTML 出视频」框架,Windows 从零上手(CLI 三条命令 + 7 个避坑)
ffmpeg·开源·自动化·html·音视频
Arcai10244 天前
PostgreSQL数据备份和恢复完全指南
数据库·postgresql·ffmpeg·备份一体机·备份软件·smartstor·智备科技
可乐鸡翅yeah_5 天前
FFmpeg 生成 HLS 独立分片 independent‑segments 参数到底有什么用
javascript·ffmpeg·音视频·safari·m3u8