首先貼一下官方手冊的連接:https://ffmpeg.org/ffmpeg-formats.html#teehtml
tee muxer能夠將相同的數據寫到多個文件或者其它的muxer。例如:它能夠同時將一路視頻流輸出到網絡和本地磁盤。與ffmpeg的默認多路輸出不一樣的是,用tee只編碼一次。shell
和普通的ffmpeg命令行相比,使用tee主要是兩點區別:網絡
1.主幹的'-f'指定'tee';編碼
2.輸出路徑是由'|'分隔的各個路徑集合。命令行
#例如: ffmpeg -i input.file -acodec aac -vcodec h264 -f tee -map 0:v -map 0:a "tee1.mp4|tee2.flv"
具體的,tee還支持一些參數:code
f 直接指定封裝格式。有的時候靠ffmpeg根據輸出路徑猜封裝格式是不牢靠的,直接指定格式,簡單暴力。 bsfs[/spec] 設置比特率過濾器。 select 選擇指定的流輸出,默認是使用所有流(主幹)。
# 1. 單路輸入,輸出一路mp4本地,一路TS over UDP (其中TS over UDP須要指定格式) ffmpeg -re -i Meerkats.mp4 -acodec aac -vcodec h264 -f tee -map 0:v -map 0:a "tee1.mp4|[f=mpegts]udp://10.33.2.27:9999" # 2. 使用ffmpeg進行編碼,實現單路輸入,四路輸出(一路rtmp,一路ts,一路mp4,一路aac)。 ffmpeg -re -i Meerkats.mp4 -acodec aac -vcodec h264 -flags +global_header -strict experimental -f tee -map 0:v -map 0:a "[f=flv]rtmp://10.33.1.48/live1/tee1|[bsfs/v=dump_extra]out.ts|[movflags=+faststart]out.mp4|[select=a]out.aac"