FFmpeg 常用到的命令
1. windows 配置 ffmpeg
下載地址:
將下載的壓縮包解壓放在: D:\SoftWare\ffmpeg
將 "D:\SoftWare\ffmpeg\bin" 添加到Windows環(huán)境變量
通過在CMD中運行 ffmpeg --version 命令來查看是否安裝成功
2. 顯式視頻的細節(jié)
ffmpeg -i vedio.mp4
// 通過 -hide_banner 隱藏 ffmpeg 標語及細節(jié), 只顯示媒體文件的信息
ffmpeg -hide_banner -i vedio-down.mp4
3. 視頻文件格式的轉換
// 在常用的視頻格式之間轉換如: .avi .mp4 .rmvb .3gp .mpeg .wmv .flv
ffmpeg -i vedio-down.mp4 vedio-down.avi
ffmpeg -i vedio-down.avi vedio-down.flv
//
// 通過 -qscale 0 參數(shù)設置維持源視頻文件的質量
ffmpeg -i vedio-down.flv -qscale 0 vedio-down01.mp4
//
// 檢查 ffmpeg 支持的格式
ffmpeg -formats
4. 提取視頻中的音頻(去掉視頻)
// 參數(shù)說明:
// -vn : 不處理視頻
// -an : 不處理音頻
// -ar : 設定采樣率 常用的值是22050 Hz、44100 Hz后裸、48000 Hz
// -ac : 設定聲音的通道數(shù)目
// -acodec : 設定聲音編解碼器响委,未設定時則使用與輸入流相同的編解碼器
// -vcodec : 設定視頻編解碼器,未設定時則使用與輸入流相同的編解碼器
// -ab : 表明音頻比特率
// -f : 輸出文件格式 如: mp3
ffmpeg -i out-countdown.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 start.mp3
// 或者
ffmpeg -i out-countdown.mp4 -vn -acodec copy start.mp3
5. 提取視頻中的視頻(去掉音頻)
// 參數(shù)說明同上
ffmpeg -i out-countdown.mp4 -an -vcodec copy start.mp4
6. 更改視頻的分辨率
// 將vedio-down.mp4的分辨率設置為1920:1080的分辨率
ffmpeg -i vedio-down.mp4 -filter:v scale=1920:1080 -c:a copy output-down.mp4
// 將vedio-down.mp4的分辨率設置為640:480的分辨率
ffmpeg -i vedio-down.mp4 -filter:v scale=640:480 -c:a copy output-down.mp4
7. 壓縮視頻文件
// 壓縮視頻就是意味著損失視頻質量
ffmpeg -i vedio.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 vedio-out.mp4
8. 壓縮音頻文件
// 和視頻一樣,也會有損失
ffmpeg -i start.mp3 -ab 128 start-out.mp3
9. 設置視頻的屏幕顯式比例
// -aspect : 設置視頻文件的屏幕顯式比例
// 常用的比例: 16:9, 4:3, 16:10, 2.21:1, 2.35:1, 5:4, 2.39:1 等等
ffmpeg -i start.mp4 -aspect 16:9 out-start16_9.mp4
10. 給視頻添加logo
// 將logo.png 放在當前文件夾
ffmpeg -i start.mp4 -i logo.png -filter_complex overlay out-image-start.mp4
11. 剪切媒體文件的某一段
// 如: 將時長25秒的十秒倒計時視頻剪切為五秒倒計時
// 參數(shù)說明:
// -ss : 視頻剪切的來時時間
// -t : 總的持續(xù)時間
// vedio
ffmpeg -i start.mp4 -ss 00:00:00 -codec copy -t 13 output.mp4
// audio
ffmpeg -i numb.mp3 -ss 00:00:00 -t 00:01:29 mid-numb.mp3
12. 將一個視頻文件分為多個部分
// 將一個視頻分成兩個
ffmpeg -i start.mp4 -t 00:00:12 -c copy part01.mp4 -ss 00:00:12 -codec copy part02.mp4
13. 將多個視頻拼接成一個視頻
// 今天將一個15S的視頻合并成3分鐘的視頻
// 第一步: 將源視頻包裝進TS格式的容器在進行合并
ffmpeg -i mid01.mp4 - copy -bsf:v h264_mp4toannexb -f mpegts mid01.ts
// 剩下的11個和上面的一樣; 也可以寫個腳本來完成呀
//
// 第二步: 編寫 filelist.txt, 其每一行內容是
file 'mid01.ts'
file 'mid02.ts'
//...
// 第三步: 執(zhí)行命令合成視頻
ffmpeg -f concat -i filelist.txt -c copy down-output.mp4
14. 給一個視頻添加指定的音頻
// 第一步: 通過 11 條的命令來剪切視頻到指定的長度
//
// 第二步: 通過 5 將源視頻的音頻去掉
ffmpeg -i start.mp4 -c:v copy -an start-no-audio.mp4
//
// 第三步: 將音頻混到上面的視頻中
ffmpeg -i start-no-audio.mp4 -i audio.mp4 -vcodec copy -acodec copy start-OK.mp4
15. Linux下, 將攝像頭實時視頻錄制并保存為文件
ffmpeg -f video4linux -s 320*240 -r 10 -i /home/jeff/video output.mp4
16. 音視頻變速
// video 加速
ffmpeg -i start.mp4 -filter:v setpts=0.5*PTS slow-start.mp4
// audio 變速
ffmpeg -i input.mp3 -filter:a atempo=2.0 output.mp3
17. 常用的OPTIONS 選項
17.1 獲得幫助:
參數(shù) |
說明 |
-h |
打印基本選項 |
-h long |
打印更多選項 |
-h full |
打印所有選項(包括所有格式和編解碼器特定的選項凡壤,很長) |
-h type=name |
打印命名的解碼器/編碼器/解復用器/ muxer /過濾器/ bsf的所有選項有關選項的詳細說明,請參見man ffmpeg |
17.2 打印幫助/信息/功能:
參數(shù) |
說明 |
-L |
顯式執(zhí)照 |
-h topic |
顯示幫助 |
-? topic |
顯示幫助 |
-help topic |
顯示幫助 |
--help topic |
顯示幫助 |
-version |
顯示版本 |
-buildconf |
顯示構建配置 |
-formats |
顯示可用格式 |
-muxers |
顯示可用的muxers |
-demuxers |
顯示可用的多路分解器 |
-devices |
顯示可用設備 |
-codecs |
顯示可用的編解碼器 |
-decoders |
顯示可用的解碼器 |
-encoders |
顯示可用的編碼器 |
-bsfs |
顯示可用的位流過濾器 |
-protocols |
顯示可用協(xié)議 |
-filters |
顯示可用的過濾器 |
-pix_fmts |
顯示可用的像素格式 |
-layouts |
顯示標準的頻道布局 |
-sample_fmts |
顯示可用的音頻樣本格式 |
-colors |
顯示可用的顏色名稱 |
-sources device |
列出輸入設備的來源 |
-sinks device |
列出輸出設備的接收器 |
-hwaccels |
顯示可用的硬件加速方法 |
17.3 全局選項(影響整個程序,而不僅僅是一個文件):
參數(shù) |
說明 |
-loglevel loglevel |
設置日志記錄級別 |
-v loglevel |
設置日志記錄級別 |
-report |
生成報告 |
-max_alloc bytes |
設置單個分配塊的最大大小 |
-y |
覆蓋輸出文件 |
-n |
從不覆蓋輸出文件 |
-ignore_unknown |
忽略未知的流類型 |
-filter_threads |
非復雜過濾器線程的數(shù)量 |
-filter_complex_threads |
-filter_complex的線程數(shù) |
-stats |
在編碼過程中打印進度報告 |
-max_error_rate maximum error rate |
最大錯誤率的錯誤率(0.0:無錯誤亡资,1.0:100%錯誤)炮赦,高于此比率ffmpeg將返回錯誤而不是成功怜跑。 |
-bits_per_raw_sample number |
設置每個原始樣本的位數(shù) |
-vol volume |
更改音頻音量(256 =正常) |
17.4 每個文件的主要選項:
參數(shù) |
說明 |
-f fmt |
強制格式 |
-c codec |
編解碼器名稱 |
-codec codec |
編解碼器名稱 |
-pre preset |
預設名稱 |
-map_metadata outfile[,metadata]:infile[,metadata] |
設置infile中outfile的元數(shù)據(jù)信息infile |
-t duration |
記錄或轉碼音頻/視頻的“持續(xù)時間”秒 |
-to time_stop |
記錄或轉碼停止時間 |
-fs limit_size |
設置限制文件大小(以字節(jié)為單位) |
-ss time_off |
設置開始時間偏移 |
-sseof time_off |
設置相對于EOF的開始時間偏移 |
-seek_timestamp |
使用-ss按時間戳啟用/禁用查找 |
-timestamp time |
設置錄制時間戳(“現(xiàn)在”設置當前時間) |
-metadata string=string |
添加元數(shù)據(jù) |
-program title=string:st=number... |
添加具有指定流的程序 |
-target type |
指定目標文件類型(帶有可選前綴“ pal-”,“ ntsc-”或“ film-”的“ vcd”性芬,“ svcd”峡眶,“ dvd”,“ dv”或“ dv50”) |
-apad |
音頻墊 |
-frames number |
設置要輸出的幀數(shù) |
-filter filter_graph |
設置流filtergraph |
-filter_script filename |
從文件中讀取流filtergraph描述 |
-reinit_filter |
輸入參數(shù)更改時重新初始化filtergraph |
-discard |
丟棄 |
-disposition |
處置 |
17.5 視頻選項:
參數(shù) |
說明 |
-vframes number |
設置要輸出的視頻幀數(shù) |
-r rate |
設置幀速率(Hz值植锉,分數(shù)或縮寫) |
-s size |
設置幀大斜栌!(WxH或縮寫) |
-aspect aspect |
寬高比設置的寬高比(4:3、16:9或1.3333俊庇、1.7777) |
-bits_per_raw_sample number 設置每個原始樣本的位數(shù) |
-vn |
禁用視頻 |
-vcodec codec |
強制視頻編解碼器(“復制”以復制流) |
-timecode hh:mm:ss[:;.]ff |
設置初始TimeCode值 |
-pass n |
選擇通行證編號(1至3) |
-vf filter_graph |
設置視頻過濾器 |
-ab bitrate |
音頻比特率(請使用-b:a) |
-b bitrate |
視頻比特率(請使用-b:v) |
-dn |
禁用數(shù)據(jù) |
17.6 音頻選項:
參數(shù) |
說明 |
-aframes number |
設置要輸出的音頻幀數(shù) |
-aq quality |
設置音頻質量(特定于編解碼器) |
-ar rate |
設置音頻采樣率(以Hz為單位) |
-ac channels |
設置音頻頻道數(shù) |
-an |
禁用音頻 |
-acodec codec |
強制音頻編解碼器(“復制”以復制流) |
-vol volume |
更改音頻音量(256 =正常) |
-af filter_graph |
設置音頻過濾器 |
17.7 字幕選項:
參數(shù) |
說明 |
-s size |
設置幀大惺ㄊ睢(WxH或縮寫) |
-sn |
禁用字幕 |
-scodec codec |
強制字幕編解碼器(“復制”以復制流) |
-stag fourcc/tag |
強制字幕tag/fourcc |
-fix_sub_duration |
修復字幕的持續(xù)時間 |
-canvas_size size |
設置畫布大小(WxH或縮寫) |
-spre preset |
將字幕選項設置為指示的預設 |
18. 未完, 目前這些已經夠我用了, 用到在學習