FFMPEG 常用命令舉例


1. 分離音視頻

  • 分離視頻:ffmpeg -i test.mkv -vcodec copy -an test_video.mp4
  • 分離音頻:ffmpeg -i test.mkv -acodec copy -vn test_audio.mp2

2. 解復用

ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264

ffmpeg –i test.avi –vcodec copy –an –f m4v test.264

3. 視頻轉碼

ffmpeg -i test.mp4 -vcodec h264 -s 480*480 -an -f m4v test.264

ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264

說明: -bf B幀數目控制,-g 關鍵幀間隔控制,-s 分辨率控制

主要是靠-i 設定輸入視頻,-vcodec設定轉換格式

4. 視頻封裝

ffmpeg –i test_video.mp4 –i test_audio.mp2 –vcodec copy –acodec copy test.mkv

5. 視頻剪切

提取圖片ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg

剪切視頻

剪切從0:1:30開始時長20s的視頻

ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi

剪切從0:1:30開始到0:2:30秒間的視頻

ffmpeg -i input.avi -vcodec copy -acodec copy -ss 0:1:30 -to 0:2:30 output.avi

6. 視頻錄制

ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi

7.疊加水印

使用命令ffmpeg -i Titanic.mkv -vf "movie=test.PNG,scale=100:150[watermask];[in][watermask] overlay=100:100[out]" -y Titanic.mp4

scale:水印的大小

overlay:水印的位置

8.將MP3轉換為PCM數據

ffmpeg -i test.mp3 -f s16be -ab 192 -ar 44100 test.pcm

9. 推送RTP流、接收RTP流並存為ts文件

  • 推送RTP流

ffmpeg -re -i 4kp30_avc.mp4 -an -c copy -f rtp rtp://192.168.25.89:5004 > rtp.sdp

  • ffplay 接收rtp流

ffplay.exe -protocol_whitelist "udp,tcp,http,https,file,rtp" rtp.sdp

  • ffmpeg 接收rtp流,並存為ts文件

ffmpeg -protocol_whitelist "udp,tcp,http,https,file,rtp" -i rtp.sdp -c copy 4kp30_avc.ts

10. ffmpeg 編碼

ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec mpeg4 bus_cif.avi//avi
ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec mpeg2video bus_cif.VOB//dvd
ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec wmv1 bus_cif.wmv//wmv
ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec h264 bus_cif.mp4//mp4
ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec flv bus_cif.flv//flv
ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec rv10 bus_cif.rm//rm
ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec vp9 bus_cif.webm//webm

11. ffmpeg 解碼

ffmpeg -i test1.h264 -c:v rawvideo -pix_fmt yuv420p test1.yuv 

12. 截取 YUV

從第0幀開始截取30幀

ffmpeg -s widthxheight -i input.yuv -c:v rawvideo -filter:v select="between(n\, 0\, 29)" out.yuv 

根據時間截取幀(截取從第10秒到第20秒)

ffmpeg -s widthxheight -i input.yuv -c:v rawvideo -filter:v select="between(t\, 10\, 20)" out.yuv 

13. 壓縮分辨率

ffmpeg -i 1080_60i.ts -s 720x576 720x576.ts 

14. ffplay 播放YUV

ffplay -f rawvideo -video_size 1280x720 -pix_fmt nv12 test.yuv

需要指定的參數:
1. -video_size 指定yuv的寬高
2. -pix_fmt 指定yuv的格式
yuv的格式名可以通過 ffplay -pix_fmts來查詢

15. ffplay 播放PCM

ffplay -ar 44100 -channels 1 -f s16le -i test.pcm

需要指定的參數:
1. -ar pcm的采樣率
2. -channels pcm的通道數
3. -f pcm的格式
pcm的格式可以通過ffplay -sample_fmts來查詢

16. 將 PCM 數據編碼為 AC3

ffmpeg -y -f s16le -ac 1 -ar 44100 -acodec pcm_s16le -i audio_1.pcm test.ac3

17. 提取視頻縮略圖

從視頻前10s中提取圖像,1s提取一幀 
ffmpeg -i test.mp4 -t 10 -r 1 -f image2 pic-%03d.jpeg
 

18. 合並音頻視頻

首先是要給 video.mpg做無聲處理生成video2.mpg
ffmpeg -i video.mpg -vcodec copy -an video2.mpg
然后合並:
ffmpeg -i video2.mpg -i input.mp3 -vcodec copy -acodec copy output.mpg
 

19. 視頻壓縮(用於上傳網絡)

ffmpeg -i test_video.mp4 -b 400k -vcodec libx264 -an -y test_video_handle.mp4

語法:-b <比特率> 指定壓縮比特率

20. 去掉視頻Logo

ffmpeg -i input.mp4 -vf delogo=0:0:220:90:100:1 output.mp4 

語法:-vf delogo=x:y:w:h[:t[:show]] x:y 離左上角的坐標 w:h logo的寬和高 t: 矩形邊緣的厚度默認值4 show:若設置為1有一個綠色的矩形,默認值0。

21. 采集usb攝像頭視頻

ffmpeg -t 20 -f vfwcap -i 0 -r 8 -f mp4 cap1111.mp4

語法:-t采集10秒,-f 采集設備為vfwcap類型設備,-i 第0個vfwcap采集設備(如果系統有多個vfw的視頻采集設備,可以通過-i num來選擇),-r每秒8幀,輸出方式為文件,格式為mp4

22. 錄屏

ffmpeg -f gdigrab -i desktop out.mpg

23. 錄屏指定區域

ffmpeg -f gdigrab -framerate 5 -offset_x 10 -offset_y 20 -video_size 640x480 -i desktop out.mpg 

24. 從視頻中生成gif圖片

ffmpeg -i capx.mp4 -t 10 -s 320x240 -pix_fmt rgb24 jidu1.gif

25. 錄音

先查音視頻設備:

ffmpeg -list_devices true -f dshow -i “”

然后錄音頻:

ffmpeg -f dshow -i audio="麥克風 (Realtek Audio)" -acodec libmp3lame e:\window.mp3


ffmpeg參數設定解說 

-bitexact 使用標准比特率 
-vcodec xvid 使用xvid壓縮 
-s 320x240 指定分辨率 
-r 29.97 楨速率(可以改,確認非標准楨率會導致音畫不同步,所以只能設定為15或者29.97) 
畫面部分,選其一 
-b <比特率> 指定壓縮比特率,似乎ffmpeg是自動VBR的,指定了就大概是平均比特率,比如768,1500這樣的 
就是原來默認項目中有的 
-qscale <數值> 以<數值>質量為基礎的VBR,取值0.01-255,約小質量越好 
-qmin <數值> 設定最小質量,與-qmax(設定最大質量)共用,比如-qmin 10 -qmax 31 
-sameq 使用和源同樣的質量 
聲音部分 
-acodec aac 設定聲音編碼 
-ac <數值> 設定聲道數,1就是單聲道,2就是立體聲,轉換單聲道的TVrip可以用1(節省一半容量),高品質 
的DVDrip就可以用2 
-ar <采樣率> 設定聲音采樣率,PSP只認24000 
-ab <比特率> 設定聲音比特率,前面-ac設為立體聲時要以一半比特率來設置,比如192kbps的就設成96,轉換 
君默認比特率都較小,要聽到較高品質聲音的話建議設到160kbps(80)以上 
-vol <百分比> 設定音量,某些DVDrip的AC3軌音量極小,轉換時可以用這個提高音量,比如200就是原來的2倍 
這樣,要得到一個高畫質音質低容量的MP4的話,首先畫面最好不要用固定比特率,而用VBR參數讓程序自己去 
判斷,而音質參數可以在原來的基礎上提升一點,聽起來要舒服很多,也不會太大 看情況調整 
-y(覆蓋輸出文件,即如果1.***文件已經存在的話,不經提示就覆蓋掉了) 
-i "1.avi"(輸入文件是和ffmpeg在同一目錄下的1.avi文件,可以自己加路徑,改名字) 
-title "Test"(在PSP中顯示的影片的標題) 
-f fmt (input/output) 強制輸入或輸出文件格式。通常,輸入文件的格式是自動檢測的,輸出文件的格式是通過文件擴展名來進行猜測的,所有該選項大多數時候不需要。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM