FFmpeg推流实战30秒速成

发布于:2025-06-22 ⋅ 阅读:(20) ⋅ 点赞:(0)

FFmpeg windows 7.1.1下载地址

FFmpeg 推流方法

FFmpeg 是一个强大的多媒体处理工具,支持将视频和音频推流到各种流媒体服务器(如 RTMP、RTSP、HLS 等)。以下是几种常见的推流方法。

推流到 RTMP 服务器

RTMP(Real-Time Messaging Protocol)是常用的直播推流协议,适用于推流到平台如 YouTube、Twitch、Bilibili 等。

基本命令格式:

ffmpeg -re -i input.mp4 -c:v libx264 -preset fast -c:a aac -f flv rtmp://server/live/streamkey

参数说明:

  • -re:以实时速度读取输入文件(避免过快推流)。
  • -i input.mp4:指定输入文件。
  • -c:v libx264:使用 H.264 编码视频。
  • -preset fast:平衡编码速度和压缩率。
  • -c:a aac:使用 AAC 编码音频。
  • -f flv:输出格式为 FLV(RTMP 常用容器格式)。
  • rtmp://server/live/streamkey:RTMP 服务器地址和流密钥。

推流到 RTSP 服务器

RTSP(Real-Time Streaming Protocol)适用于监控或点播场景。

基本命令格式:

ffmpeg -re -i input.mp4 -c:v libx264 -c:a aac -f rtsp rtsp://server/live/stream

参数说明:

  • -f rtsp:输出格式为 RTSP。
  • rtsp://server/live/stream:RTSP 服务器地址和流名称。

推流到 HLS 服务器

HLS(HTTP Live Streaming)适用于自适应比特率流媒体。

基本命令格式:

ffmpeg -re -i input.mp4 -c:v libx264 -c:a aac -f hls -hls_time 10 -hls_list_size 6 stream.m3u8

参数说明:

  • -f hls:输出格式为 HLS。
  • -hls_time 10:每个切片时长为 10 秒。
  • -hls_list_size 6:播放列表保留的切片数量。
  • stream.m3u8:生成的 HLS 播放列表文件。

推流摄像头或屏幕捕获

摄像头推流(Linux):

ffmpeg -f video4linux2 -i /dev/video0 -c:v libx264 -preset fast -f flv rtmp://server/live/streamkey

屏幕捕获推流(MacOS):

ffmpeg -f avfoundation -i "1" -c:v libx264 -preset fast -f flv rtmp://server/live/streamkey

屏幕捕获推流(Windows):

ffmpeg -f gdigrab -i desktop -c:v libx264 -preset fast -f flv rtmp://server/live/streamkey

动态调整推流参数

调整分辨率与码率:

ffmpeg -re -i input.mp4 -vf "scale=1280:720" -b:v 2000k -c:v libx264 -preset fast -c:a aac -f flv rtmp://server/live/streamkey

参数说明:

  • -vf "scale=1280:720":调整分辨率为 1280x720。
  • -b:v 2000k:设置视频码率为 2000 kbps。

推流时添加字幕或水印

添加水印:

ffmpeg -re -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" -c:v libx264 -preset fast -c:a aac -f flv rtmp://server/live/streamkey

添加字幕:

ffmpeg -re -i input.mp4 -vf "subtitles=subtitle.srt" -c:v libx264 -preset fast -c:a aac -f flv rtmp://server/live/streamkey

推流时使用硬件加速

NVIDIA GPU 加速(NVENC):

ffmpeg -re -i input.mp4 -c:v h264_nvenc -preset fast -c:a aac -f flv rtmp://server/live/streamkey

Intel GPU 加速(QSV):

ffmpeg -re -i input.mp4 -c:v h264_qsv -preset fast -c:a aac -f flv rtmp://server/live/streamkey

推流音频流

仅推流音频:

ffmpeg -re -i input.mp4 -vn -c:a aac -f flv rtmp://server/live/streamkey

参数说明:

  • -vn:禁用视频流。

推流 UDP 流

推流到 UDP:

ffmpeg -re -i input.mp4 -c:v libx264 -preset fast -c:a aac -f mpegts udp://target_ip:port

参数说明:

  • -f mpegts:输出格式为 MPEG-TS(常用于 UDP 传输)。

以上方法涵盖了 FFmpeg 推流的常见场景,可根据实际需求调整参数。


网站公告

今日签到

点亮在社区的每一天
去签到