神奇的FFMPEG

FFMPEG或許你們沒有聽過,可是暴風影音,QQ影音,VLC,格式工廠...前端

前言

FFMPEG或許你們沒有聽過,可是暴風影音,QQ影音,VLC,格式工廠...算法

不少人應該和我剛接觸它時候有一樣的感受,這個東西和前端有什麼關係?bash

使用FFMPEG能幹些什麼?ide

功能介紹

視頻採集功能

ffmpeg -f avfoundation -framerate 30  -i "0" -vcodec h264 -f flv rtmp://localhost:1935/live/movie
複製代碼
  • -f 強制輸入或輸出文件格式。一般會自動檢測輸入文件的格式,並從輸出文件的文件擴展名中猜想,所以在大多數狀況下不須要此選項。
  • -framerate 同 -r 控制fps 幀速率

視頻截圖功能

ffmpeg -i 0723.flv -ss 60 -f image2 test60.jpeg
複製代碼
  • -i :表明輸入流,後面接視頻的物理路徑,能夠是MP四、AVI等
  • -ss:表明要截取的的圖片在視頻中的位置,後面接數字,秒爲單位
  • -f :表明輸出圖片,後面接image2

視頻格式轉換

ffmpeg -i 0723.flv -vf "movie=logo.png[watermark];[in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] " output.mp4
複製代碼

視頻/圖片增長水印

  • 圖片水印
ffmpeg -i  0723.flv -vf "movie=wenzi.png[watermark];[in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] " output.mp4
複製代碼
  • -i: 輸入
  • 0723.flv 視頻源
  • vf 濾鏡相關,視頻裁剪,水印在這裏完成
  • overlay 水印參數
  • main_w-overlay_w_10 水印在x軸位置,x=main_w-overlay_w-10
  • main_h-overlay_h-10 水印在y軸的位置
ffmpeg -i 0723.flv -i iQIYI_logo.png -filter_complex overlay output.mp4
複製代碼
  • -i 輸入
  • -filter_complex 濾鏡 解決複雜濾鏡 多水印問題
  • overlay 默認參數
  • output 輸出
  • 文字水印
ffmpeg -i 0723.flv -vf "drawtext=fontfile=simhei.ttf: text=‘冰山工做室’:x=10:y=10:fontsize=24:fontcolor=white:shadowy=2" 冰山.flv
複製代碼

oop

ffmpeg -i 0723.flv -b:v 2M -vf "drawtext=fontfile=simhei.ttf: text=‘冰山工做室’:x=10:y=10:fontsize=24:fontcolor=white:shadowy=2" 冰山.flv
複製代碼

兩者區別在哪?測試

  • -b: 設置比特率 調節畫質

將圖片序列合成視頻

ffmpeg -f image2 -i image%d.jpg binshan.mp4
複製代碼

將視頻分解成圖片序列

ffmpeg -i bingshan.mp4 image%d.jpg
複製代碼

從視頻抽出聲音.並存爲Mp3

ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3
複製代碼
  • 源視頻:source_video.avi
  • 音頻位率:192kb/s
  • 輸出格式:mp3
  • 生成的聲音:sound.mp3

合成視頻和音頻

ffmpeg -i son.wav -i video_origine.avi video_finale.mp4
複製代碼

從flv提取mp3

ffmpeg -i source.flv -ab 128k dest.mp3
複製代碼

a) 通用選項ui

-L license編碼

-h 幫助spa

-fromats 顯示可用的格式,編解碼的,協議的...debug

-f fmt 強迫採用格式fmt

-I filename 輸入文件

-y 覆蓋輸出文件

-t duration 設置紀錄時間 hh:mm:ss[.xxx]格式的記錄時間也支持

-ss position 搜索到指定的時間 [-]hh:mm:ss[.xxx]的格式也支持

-title string 設置標題

-author string 設置做者

-copyright string 設置版權

-comment string 設置評論

-target type 設置目標文件類型(vcd,svcd,dvd) 全部的格式選項(比特率,編解碼以及緩衝區大小)自動設置,只須要輸入以下的就能夠了:ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg

-hq 激活高質量設置

-itsoffset offset 設置以秒爲基準的時間偏移,該選項影響全部後面的輸入文件。該偏移被加到輸入文件的時戳,定義一個正偏移意味着相應的流被延遲了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持

b) 視頻選項

-b bitrate 設置比特率,缺省200kb/s

-r fps 設置幀頻 缺省25

-s size 設置幀大小 格式爲WXH 缺省160X128.下面的簡寫也能夠直接使用:

Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576

-aspect aspect 設置橫縱比 4:3 16:9 或 1.3333 1.7777

-croptop size 設置頂部切除帶大小 像素單位

-cropbottom size –cropleft size –cropright size

-padtop size 設置頂部補齊的大小 像素單位

-padbottom size –padleft size –padright size –padcolor color 設置補齊條顏色(hex,6個16進制的數,紅:綠:蘭排列,好比 000000表明黑色)

-vn 不作視頻記錄

-bt tolerance 設置視頻碼率容忍度kbit/s

-maxrate bitrate設置最大視頻碼率容忍度

-minrate bitreate 設置最小視頻碼率容忍度

-bufsize size 設置碼率控制緩衝區大小

-vcodec codec 強制使用codec編解碼方式。若是用copy表示原始編解碼數據必須被拷貝。

-sameq 使用一樣視頻質量做爲源(VBR)

-pass n 選擇處理遍數(1或者2)。兩遍編碼很是有用。第一遍生成統計信息,第二遍生成精確的請求的碼率

-passlogfile file 選擇兩遍的紀錄文件名爲file

c)高級視頻選項

-g gop_size 設置圖像組大小

-intra 僅適用幀內編碼

-qscale q 使用固定的視頻量化標度(VBR)

-qmin q 最小視頻量化標度(VBR)

-qmax q 最大視頻量化標度(VBR)

-qdiff q 量化標度間最大誤差 (VBR)

-qblur blur 視頻量化標度柔化(VBR)

-qcomp compression 視頻量化標度壓縮(VBR)

-rc_init_cplx complexity 一遍編碼的初始複雜度

-b_qfactor factor 在p和b幀間的qp因子

-i_qfactor factor 在p和i幀間的qp因子

-b_qoffset offset 在p和b幀間的qp誤差

-i_qoffset offset 在p和i幀間的qp誤差

-rc_eq equation 設置碼率控制方程 默認tex^qComp

-rc_override override 特定間隔下的速率控制重載

-me method 設置運動估計的方法 可用方法有 zero phods log x1 epzs(缺省) full

-dct_algo algo 設置dct的算法 可用的有 0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC

-idct_algo algo 設置idct算法。可用的有 0 FF_IDCT_AUTO 缺省的IDCT 1 FF_IDCT_INT 2 FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC 9 FF_IDCT_SH4 10 FF_IDCT_SIMPLEARM

-er n 設置錯誤殘留爲n 1 FF_ER_CAREFULL 缺省 2 FF_ER_COMPLIANT 3 FF_ER_AGGRESSIVE 4 FF_ER_VERY_AGGRESSIVE

-ec bit_mask 設置錯誤掩蔽爲bit_mask,該值爲以下值的位掩碼 1 FF_EC_GUESS_MVS (default=enabled) 2 FF_EC_DEBLOCK (default=enabled)

-bf frames 使用frames B 幀,支持mpeg1,mpeg2,mpeg4

-mbd mode 宏塊決策 0 FF_MB_DECISION_SIMPLE 使用mb_cmp 1 FF_MB_DECISION_BITS 2 FF_MB_DECISION_RD

-4mv 使用4個運動矢量 僅用於mpeg4

-part 使用數據劃分 僅用於mpeg4

-bug param 繞過沒有被自動監測到編碼器的問題

-strict strictness 跟標準的嚴格性

-aic 使能高級幀內編碼 h263+

-umv 使能無限運動矢量 h263+

-deinterlace 不採用交織方法

-interlace 強迫交織法編碼僅對mpeg2和mpeg4有效。當你的輸入是交織的而且你想要保持交織以最小圖像損失的時候採用該選項。可選的方法是不交織,可是損失更大

-psnr 計算壓縮幀的psnr

-vstats 輸出視頻編碼統計到vstats_hhmmss.log

-vhook module 插入視頻處理模塊 module 包括了模塊名和參數,用空格分開

D)音頻選項

-ab bitrate 設置音頻碼率

-ar freq 設置音頻採樣率

-ac channels 設置通道 缺省爲1

-an 不使能音頻紀錄

-acodec codec 使用codec編解碼

E)音頻/視頻捕獲選項

-vd device 設置視頻捕獲設備。好比/dev/video0

-vc channel 設置視頻捕獲通道 DV1394專用

-tvstd standard 設置電視標準 NTSC PAL(SECAM)

-dv1394 設置DV1394捕獲

-av device 設置音頻設備 好比/dev/dsp

F)高級選項

-map file:stream 設置輸入流映射

-debug 打印特定調試信息

-benchmark 爲基準測試加入時間

-hex 傾倒每個輸入包

-bitexact 僅使用位精確算法 用於編解碼測試

-ps size 設置包大小,以bits爲單位

-re 以本地幀頻讀數據,主要用於模擬捕獲設備

-loop 循環輸入流(只工做於圖像流,用於ffserver測試)

相關文章
相關標籤/搜索