当前位置: 首页 > news >正文

ffmpeg(七):直播相关命令

推流场景

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

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)

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)

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 流播放本地或转发

ffmpeg -i rtmp://server/live/stream \-f sdl "RTMP Viewer"

拉 RTSP 流保存为 MP4

ffmpeg -rtsp_transport tcp -i rtsp://ip/stream \-c copy -f mp4 output.mp4

拉 RTSP → RTMP 转发

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

拉 HLS 流并推送 RTMP

ffmpeg -i https://yourdomain/playlist.m3u8 \-c copy -f flv rtmp://your_server/live/stream

协议转换 / 多协议分发

RTMP → HLS

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)

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

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

单文件录制直播流

ffmpeg -i rtmp://your_server/live/stream \-c copy output.mp4

按时间分段保存

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)

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 直播流切片生成(网页播放用)

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_sizem3u8 保留多少段
-rtsp_transport tcp使用 TCP 模式拉 RTSP(更稳定)

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

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,防丢包
播放器端缩短缓冲区,设置超时重连策略
http://www.dtcms.com/a/255895.html

相关文章:

  • Python列表常用操作方法
  • 爱高集团引领转型浪潮:AI与区块链驱动香港科技资本新机遇
  • GitHub Copilot快捷键
  • 【AGI】突破感知-决策边界:VLA-具身智能2.0
  • 力扣-72.编辑距离
  • Qt输入数据验证的方法
  • 在 `setup` 函数中使用 Vuex
  • XCVU47P-2FSVH2892E Xilinx Virtex UltraScale+ FPGA AMD
  • 华为OD机试_2025 B卷_判断一组不等式是否满足约束并输出最大差(Python,100分)(附详细解题思路)
  • 网站并发访问量达到1万以上需要注意哪些事项
  • 【DCS开源项目】—— Lua 如何调用 DLL、DLL 与 DCS World 的交互
  • 最具有实际意义价值的比赛项目
  • 数据结构——函数填空题
  • 力扣网C语言编程题:多数元素
  • 【Linux仓库】进程概念与基本操作【进程·贰】
  • Python编程语言:2025年AI浪潮下的技术统治与学习红利
  • Laravel 项目中图片上传后无法访问的问题
  • RabbitMQ 的工作流程
  • Android NDK下载链接及配置版本
  • 微服务架构的适用
  • 深入浅出JavaScript 中的代理模式:用 Proxy 掌控对象的“行为开关”
  • CTF--PhP Web解题(走入CTF)
  • [C++] STL数据结构小结
  • access和excel用vba进行辅助办公软件开发
  • c++26新功能—hive容器
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 03(题目+回答)
  • WebeServer实现:学到了哪些东西
  • STM32F103_LL库+寄存器学习笔记12.3 - 串口DMA高效收发实战3:支持多实例化的版本
  • 如何在MacOS系统和Windows系统安装节点小宝远程工具
  • Java-52 深入浅出 Tomcat SSL工作原理 性能优化 参数配置 JVM优化