ffmpeg 4.2.2 命令詳解 (未集成)


FFmpeg 是 Fast Forward Moving Picture Experts Group (快進運動圖片專傢組) 的縮寫,是一種超快音頻 視頻編碼器。

FFmpeg 是領先的開源跨平颱多媒體框架,能解碼 編碼 轉碼 Mux Demux 流化 過濾和播放由人類 機器創建的幾乎所有內容。

FFmpeg 由 AVCodec 音視頻編解碼器、AVDevice 音視頻設備、AVFilter 音視頻濾鏡、AVFormat 音視頻格式、AVUtil 音視頻實用工具、swscale 視頻圖像轉換、swresample 音頻轉換 7 個部分組成。

另請參閱: FFmpeg 4.2.2 中文文檔編製     FFmpeg for Windows

基本用法     詳細用法     媒體切片     抽取音頻     抽取視頻     抽取圖像     閤成視頻     流媒體     多路流

ffmpeg --help
			

基本語法

ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
			

基本用法

功能 命令規範 文字解釋 示例 示例解釋
幫助 ffmpeg --help 展示幫助信息
ffmpeg -h 展示幫助信息
ffmpeg -h long 展示更多選項
ffmpeg -h full 展示所有選項 (包括所有格式和編解碼器特定選項,很長)
ffmpeg -h type=name

展示 name (如 decoder/encoder/demuxer/muxer/filter/bsf) 的所有選項

ffmpeg -h demuxer=mp4

展示 mp4 demuxer 的所有選項

版本 ffmpeg -version 展示版本信息

媒體切片

功能 命令 文字解釋
分析 ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 test_output-%d.mp4 將 input.mp4 連續切片成 test_output-%d.mp4 文檔
ffprobe -v quiet -show_packets -setlect_streams v test_output-0.mp4 2> x|grep pts_time | tail -n 3 查看 test_output-0.mp4 切片文檔最後 3 時間戳
ffprobe -v quiet -show_packets -setlect_streams v test_output-1.mp4 2> x|grep pts_time | head -n 3 查看 test_output-1.mp4 切片文檔開始 3 時間戳
索引 ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 -segment_list_type ffconcat -segment_list output.lst test_output-%d.mp4 將 input.mp4 連續切片成 test_output-%d.mp4 文檔,生成 ffconcat 格式 output.lst 索引文件
ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 -segment_list_type flat -segment_list filelist.txt test_output-%d.mp4 將 input.mp4 連續切片成 test_output-%d.mp4 文檔,生成 flat 格式 filelist.txt 索引文件
ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 -segment_list_type csv -segment_list filelist.csv test_output-%d.mp4 將 input.mp4 連續切片成 test_output-%d.mp4 文檔,生成 csv 格式 filelist.csv 索引文件
ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 -segment_list_type m3u8 -segment_list output.m3u8 test_output-%d.mp4 將 input.mp4 連續切片成 test_output-%d.mp4 文檔,生成 m3u8 格式 output.m3u8 索引文件
時間戳 ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 -reset_timestamps 1 test_output-%d.mp4 按清零時間戳方式將 input.mp4 連續切片成 test_output-%d.mp4 文檔
ffprobe -v quiet -show_packets -setlect_streams v test_output-0.mp4 2> x|grep pts_time | tail -n 3 查看 test_output-0.mp4 切片文檔最後 3 時間戳
ffprobe -v quiet -show_packets -setlect_streams v test_output-1.mp4 2> x|grep pts_time | head -n 3 查看 test_output-1.mp4 切片文檔開始 3 時間戳
定位 ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 -segment_times 3,9,12 test_output-%d.mp4 按從第 3 秒、第 9 秒、第 12 秒開始將 input.mp4 連續切片成 test_output-%d.mp4 文檔
定點 ffmpeg -ss 8 -i input.mp4 -c copy output.ts 按從第 8 秒起將 input.mp4 切片成 output.ts 文檔
ffprobe -v quiet -show_format input.mp4 | grep duration; ffprobe -v quiet -show_format output.ts | grep duration 分析 比較 input.mp4 和 output.ts 文檔的持續時間
定長 ffmpeg -i input.mp4 -c copy -t 10 -output_ts_offset 120 output.mp4 在 10 秒內從頭按 120 秒起始偏移將 input.mp4 切片成 output.mp4 文檔
ffmpeg -i input.mp4 -c copy -t 10 -copyts output.ts 按在 10 秒內從頭將 input.mp4 切片成 output.ts 文檔
ffprobe -v quiet -show_format input.mp4 | grep start_time; ffprobe -v quiet -show_format output.ts | grep start_time 分析 比較 input.mp4 和 output.ts 文檔的起始時間
ffprobe -v quiet -show_format input.mp4 | grep duration; ffprobe -v quiet -show_format output.ts | grep duration 分析 比較 input.mp4 和 output.ts 文檔的持續時間

抽取音頻

功能 命令 文字解釋 示例 示例解釋
AAC ffmpeg -i input.mp4 -vn -acodec copy output.aac 從 input.mp4 音視頻文檔抽取 output.aac 音頻
MP3 ffmpeg -i source.flv -ab 128k dest.mp3 從 .flv 視頻分離 Mp3 音頻
ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3 從視頻分離 Mp3 音頻

抽取視頻

功能 命令 文字解釋 示例 示例解釋
H.264 ffmpeg -i input.mp4 -vcodec copy -an output.h264 從 input.mp4 音視頻文檔抽取 output.h264 視頻
H.265 ffmpeg -i input.mp4 -vcodec copy -an -bsf hevc_mp4toannexb hevc output.hevc 從 input.mp4 音視頻文檔抽取 output.hevc 視頻

抽取圖像

功能 命令 文字解釋 示例 示例解釋
JPG ffmpeg -i input.mpg image_%d.jpg 從 input.mpg 音視頻文檔抽取 image_1.jpg image_2.jpg ... 序列圖像

閤成視頻

功能 命令 說明 備注
圖像 ffmpeg -f image2 -i image%d.jpg d:/test.mpg 把序列圖像 image1.jpg image2.jpg ... 閤成視頻
媒體 ffmpeg -i son.wav -i video_origine.avi video_finale.mpg 將 son.wav 音頻和 video_origine.avi 視頻閤成 video_finale.mpg 音視頻文檔

流媒體

功能 命令 說明 備注
RTMP

ffmpeg -rtmp_app live -i rtmp://publish.chinaffmpeg.com -c copy -f flv output.flv

ffmpeg -re -i input.mp4 -c copy -f flv -rtmp_app live rtmp://publish.chinaffmpeg.com

將 rtmp://publish.chinaffmpeg.com 流錄製到 output.flv 文檔

將 input.mp4 媒體內容發布到 rtmp://publish.chinaffmpeg.com

ffmpeg -re -i input.mp4 -c copy -f flv -rtmp_app live -rtmp_playpath class rtmp://publish.chinaffmpeg.com

ffmpeg -rtmp_app live -rtmp_playpath class -i rtmp://publish.chinaffmpeg.com -c copy -f flv output.flv

將 input.mp4 媒體內容 live 發布到 class 名稱 rtmp://publish.chinaffmpeg.com

將 rtmp://publish.chinaffmpeg.com 名稱 class 流 live 錄製到 output.flv 文檔

ffmpeg -i input.mp4 -c copy -f flv rtmp://publish.chinaffmpeg.com/live/class

ffmpeg -i rtmp://publish.chinaffmpeg.com/live/class -c copy -f flv output.flv

將 input.mp4 媒體內容 live 發布到 class 名稱 rtmp://publish.chinaffmpeg.com

將 rtmp://publish.chinaffmpeg.com 名稱 class 流 live 錄製到 output.flv 文檔

ffmpeg -rtmp_pageurl "http://www.chinaffmpeg.com" -i rtmp://publish.chinaffmpeg.com/live/class

ffmpeg -rtmp_swfurl "http://www.chinaffmpeg.com" -i rtmp://publish.chinaffmpeg.com/live/class

ffmpeg -rtmp_tcurl "http://www.chinaffmpeg.com" -i rtmp://publish.chinaffmpeg.com/live/class

將 http://www.chinaffmpeg.com 鏈接 pageUrl 內容 live 發布到 class 名稱 rtmp://publish.chinaffmpeg.com

將 http://www.chinaffmpeg.com 鏈接 swfUrl 內容 live 發布到 class 名稱 rtmp://publish.chinaffmpeg.com

將 http://www.chinaffmpeg.com 鏈接 tcUrl 內容 live 發布到 class 名稱 rtmp://publish.chinaffmpeg.com

RTSP ffmpeg -h demuxer=RTSP 展示 RTSP 解復用器幫助信息
ffmpeg -rtsp_transport tcp -i rtsp://47.90.47.25/test.ts -c copy -f mp4 output.mp4 采用 TCP 協議將 rtsp://47.90.47.25/test.ts 流錄製到 output.flv 文檔
ffmpeg -user-agent "ChinaFFmpeg-Player" -i rtsp://input:554/live/1/stream.sdp -c copy -f mp4 -y output.mp4 按 ChinaFFmpeg-Player 用戶代理以 UDP 默認協議將 rtsp://input:554/live/1/stream.sdp 流錄製到 output.mp4 文檔
HTTP

ffmpeg -ss 300 -seekable 0 -i http://bbs.chinaffmpeg.com/test.ts -c cooy output.mp4

ffmpeg -ss 300 -seekable 1 -i http://bbs.chinaffmpeg.com/test.ts -c cooy output.mp4

采用 HTTP 協議將 http://bbs.chinaffmpeg.com/test.ts 流按禁用尋址方式錄製到 output.mp4 文檔

采用 HTTP 協議將 http://bbs.chinaffmpeg.com/test.ts 流按啓用尋址方式錄製到 output.mp4 文檔

ffmpeg -headers "referer: http://bbs.chinaffmpeg.com/index.html" -i http://play.chinaffmpeg.com/live/class.flv -c copy -f flv -y output.flv 采用 referer: http://bbs.chinaffmpeg.com/index.html 頭將 http://play.chinaffmpeg.com/live/class.flv 流錄製到 output.flv 文檔
ffmpeg -user_agent "FFmpegPlayer" -i http://bbs.chinaffmpeg.com/output.flv 按 FFmpegPlayer 用戶代理推流到 http://bbs.chinaffmpeg.com/output.flv 文檔

ffmpeg -i http://bbs.chinaffmpeg.com/live.flv -c cooy -f flv output.flv

ffmpeg -i http://bbs.chinaffmpeg.com/live.ts -c cooy -f flv output.flv

ffmpeg -i http://bbs.chinaffmpeg.com/live.m3u8 -c cooy -f flv output.flv

采用 HTTP 協議將 http://bbs.chinaffmpeg.com/live.flv 流錄製到 output.flv 文檔

采用 HTTP 協議將 http://bbs.chinaffmpeg.com/live.ts 流錄製到 output.flv 文檔

采用 HTTP 協議將 http://bbs.chinaffmpeg.com/live.m3u8 流錄製到 output.flv 文檔

TCP

ffmpeg -listen 1 -f flv -i tcp://127.0.0.1:1234/live/stream -c copy -f flv output.flv

time ffmpeg -listen_timeout 5000 -listen 1 -f flv -i tcp://127.0.0.1:1234/live/stream -c copy -f flv output.flv

采用 TCP 協議監聽本機 1234 端口把 tcp://127.0.0.1:1234/live/stream 流錄製到 output.flv 文檔

采用 TCP 協議 5 秒超時監聽本機 1234 端口把 tcp://127.0.0.1:1234/live/stream 流錄製到 output.flv 文檔

ffmpeg -re -i input.mp4 -c copy -f flv tcp://127.0.0.1:1234/live/stream 采用 TCP 協議把 input.mp4 文檔發布到 tcp://127.0.0.1:1234/live/stream 流
time ffmpeg -timeout 20000000 -i tcp://192.168.100.179:1935/live/stream -c copy -f flv output.flv 采用 TCP 協議 20000 秒超時把 tcp://192.168.100.179:1935/live/stream 流錄製到 output.flv 文檔
ffmpeg -re -i input.mp4 -c copy -send_buffer_size 256 -f flv tcp://192.168.100.179:1234/live/stream 采用 TCP 協議 256 緩衝把 input.mp4 文檔發布到 tcp://192.168.100.179:1234/live/stream 流
UDP ffmpeg -re -i input.mp4 -c copy -localpart 23456 -f flv udp://192.168.100.179:1234/live/stream 采用 UDP 協議監聽本機 23456 端口把 input.mp4 文檔發布到 udp://192.168.100.179:1234/live/stream 流
HDS ffmpeg -h muxer=hds 展示 HDS 復用器幫助信息

ffmpeg -i input -c copy -f hds output

ffmpeg -i input -c copy -f hds -window_size 4 output

把 input 切片錄製到 HDS 流 output 文件

把 input 分 4 個切片錄製到 HDS 流 output 文件

ffmpeg -re -i input.mp4 -c copy -f hds -window_size 4 -extra_window_size 1 output

ffmpeg -re -i input.mp4 -c copy -f hds -window_size 4 -extra_window_size 5 output

把 input.mp4 分 4 個切片 1 個保留錄製到 HDS 流 output 文件

把 input.mp4 分 4 個切片 5 個保留錄製到 HDS 流 output 文件

DASH ffmpeg -h muxer=dash 展示 DASH 復用器幫助信息
ffmpeg -re -i input.mp4 -c:v copy -acodec copy -f dash -window_size 4 -extra_window_size 5 index.mpd 把 input.mp4 按音視頻分離由 4 個切片 5 個保留方式錄製到 DASH 流 index.mpd 文件
ffmpeg -re -i input.mp4 -c:v copy -acodec copy -f dash -window_size 4 -extra_window_size 5 -single_file 1 index.mpd 把 input.mp4 按音視頻分離單文件方式錄製到 DASH 流 index.mpd 文件

多路流

功能 命令 說明 備注
管道方式

ffmpeg -i input -acodec aac -vcodec libx264 -f flv - | ffmpeg -f mpegts -i -c copy output1 -c copy output2 -c copy output3

ffmpeg -i imput.mp4 -vcodec libx264 -acocdec aac -f flv - | ffmpeg -f flv -i - -c copy -f flv rtmp://publish.chinaffmpeg.com/live/stream1 c copy -f flv rtmp://publish.chinaffmpeg.com/live/stream2

將 input 流按 flv 格式管道方式錄製到 output1 output2 output3

將 input.mp4 流按 flv 格式管道方式錄製到 rtmp://publish.chinaffmpeg.com/live/stream1 stream2

tee 格式

ffmpeg -re -i imput.mp4 -vcodec libx264 -acocdec aac -map 0 -f tee "[f=flv] rtmp://publish.chinaffmpeg.com/live/stream1 | [f=flv] rtmp://publish.chinaffmpeg.com/live/stream2"

ffmpeg -i rtmp://publish.chinaffmpeg.com/live/stream1 -i rtmp://publish.chinaffmpeg.com/live/stream1

將 imput.mp4 流按 tee 格式發布到 rtmp://publish.chinaffmpeg.com/live/stream1 stream2

查看 rtmp://publish.chinaffmpeg.com/live/stream1 stream2 多路流

tee 協議 ffmpeg -re -i input.mp4 -vcodec libx264 -acodec aac -f flv "tee:rtmp://publish.chinaffmpeg.com/live/stream1 | rtmp://publish.chinaffmpeg.com/live/stream2" 將 imput.mp4 流按 tee 協議發布到 rtmp://publish.chinaffmpeg.com/live/stream1 stream2

 

版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。