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 推流的常見場景,可根據實際需求調整參數。