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 推流的常见场景,可根据实际需求调整参数。