-
ffmpeg
鎖定
- 開發商
- FFmpeg team
- 軟件授權
- 開源
- 軟件版本
- 6.0 [10]
- 標準協議
- LGPL/GPL
ffmpeg功能
視頻採集功能
./ffmpeg -t 10 -f video4linux2 -s 176*144 -r 8 -i /dev/video0 -vcodec h263 -f rtp rtp://192.168.1.105:5060 > /tmp/ffmpeg.sdp
以上命令表示:採集10秒鐘視頻,對video4linux2視頻設備進行採集,採集QCIF(176*144)的視頻,每秒8幀,視頻設備為/dev/video0,視頻編碼為H263,輸出格式為RTP,後面定義了IP地址及端口,將該碼流所對應的SDP文件重定向到/tmp/ffmpeg.sdp中,將此SDP文件上傳到流媒體服務器就可以實現直播了。
ffmpeg在windows下的視頻採集
在windows下關於ffmpeg視頻採集的資料非常少,但是ffmpeg還是支持windows下視頻採集的。ffmpeg支持windows下video for windows(VFW)設備的視頻採集,不過VFW設備已經過時,正在被WDM的視頻設備所取代,但是ffmpeg還沒有支持WDM的計劃,不過好像有將WDM轉為VFW的工具,因此ffmpeg還是可以在windows下進行視頻採集的。
視頻格式轉換功能
視頻截圖功能
給視頻加水印功能
使用ffmpeg 視頻添加水印(watermark)。
ffmpeg項目組成
和讀取音視頻幀等功能;
libavcodec:用於各種類型聲音/圖像編解碼;
libavutil:包含一些公共的工具函數;
libswscale:用於視頻場景比例縮放、色彩映射轉換;
libpostproc:用於後期效果處理;
ffsever:一個 HTTP 多媒體即時廣播串流服務器;
ffplay:是一個簡單的播放器,使用ffmpeg 庫解析和解碼,通過SDL顯示;
ffmpeg命令集
ffmpeg 命令集舉例
1.獲取視頻的信息
ffmpeg -i video.avi
2.將圖片序列合成視頻
ffmpeg -f image2 -i image%d.jpg video.mpg
上面的命令會把當前目錄下的圖片(名字如:image1.jpg. image2.jpg. 等...)合併成video.mpg
3.將視頻分解成圖片序列
ffmpeg -i video.mpg image%d.jpg
上面的命令會生成image1.jpg. image2.jpg. ...
ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4
説明:
* 源視頻:source_video.avi
* 音頻編碼:aac
* 音頻位率:128kb/s
* 視頻編碼:mpeg4
* 視頻位率:1200kb/s
* 視頻尺寸:320 X 180
* 生成的視頻:final_video.mp4
5.為視頻重新編碼以適合在PSP上播放
ffmpeg -i source_video.avi -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4
説明:
* 源視頻:source_video.avi
* 音頻編碼:aac
* 音頻位率:32kb/s
* 視頻編碼:xvid
* 視頻位率:1200kb/s
* 視頻尺寸:320 X 240
* 生成的視頻:final_video.mp4
6.從視頻抽出聲音.並存為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
7.將avi文件轉成Mp3
ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3
8.將.avi視頻轉成.mpg
ffmpeg -i video_origine.avi video_finale.mpg
9.將.mpg轉成.avi
ffmpeg -i video_origine.mpg video_finale.avi
10.將.avi轉成gif動畫(未壓縮)
ffmpeg -i video_origine.avi gif_anime.gif
11.合成視頻和音頻
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg
12.將.avi轉成.flv
ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finale.flv
13.將.avi轉成dv
ffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv
或者:
ffmpeg -i video_origine.avi -target pal-dv video_finale.dv
14.將.avi壓縮成divx
ffmpeg -i video_origine.avi -s 320x240 -vcodec msmpeg4v2 video_finale.avi
15.將Ogg Theora壓縮成Mpeg dvd
16.將.avi壓縮成SVCD mpeg2
NTSC格式:
ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.avi -target pal-svcd video_finale.mpg
17.將.avi壓縮成VCD mpeg2
NTSC格式:
ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg
18.多通道編碼
ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2
19.從flv提取mp3
ffmpeg -i source.flv -ab 128k dest.mp3
ffmpeg格式
支持的編碼
Snow
FFV1
支持的格式
ASF
BFI[7]
IFF[8]
RL2[9]
FLV
Maxis XA[10]
MSN Webcam stream[11]
MPEG transport stream
TXD[6]
OMA[12]
GXF, General eXchange Format, SMPTE 360M
ffmpeg協議
支持的協議
HTTP
RTP
RealMedia RTSP/RDT
Gopher
RTMP
RTMPT, RTMPE, RTMPTE, RTMPS (via librtmp)
SDP
MMS over TCP
ffmpeg相關版權
(Hall Of Shame)
FFmpeg被許多開源項目採用,比如ffmpeg2theora,VLC, MPlayer, HandBrake, Blender, Google Chrome等。還有DirectShow/VFW的ffdshow(external project)和QuickTime的Perian (external project)也採用了FFmpeg。
由於FFmpeg是在LGPL/GPL協議下發布的(如果使用了其中一些使用GPL協議發佈的模塊則必須使用GPL協議),任何人都可以自由使用,但必須嚴格遵守LGPL/GPL協議。有很多播放軟件都使用了FFmpeg的代碼,但它們並沒有遵守LGPL/GPL協議,沒有公開任何源代碼。我們應該對這種侵權行為表示恥辱。
2009年5月,網友cehoyos下載了暴風影音軟件,解壓之後發現其安裝程序內包含了大量的開源和私有解碼器:avcodec,avformat,avutil,x264,xvid,bass,wmvdmod等,之後暴風影音被正式加入到FFmpeg恥辱名單。
2009年7月22日,陳俊豪(格式工廠作者)因用到了ffmpeg和RMVB的編碼庫,用到了FFmpeg的譯碼/編碼算法,違反FFmpeg的LGPL協議,登上了2009年7月22日FFmpeg的“恥辱柱”上。
2009年11月,網友roo_zhou向FFmpeg舉報,指出QQ影音的credit只給出了修改的FFmpeg源碼下載,聲稱是LGPL許可證。但實際是修改過的ffdshow,採用的是GPL許可證,之後QQ影音被正式加入到FFmpeg恥辱名單之列。
ffmpeg版本發佈
2012年01月27日,FFmpeg 0.9.1 發佈,修復了很多 bug 和安全方面的補丁,包括: CVE-2011-3893 and CVE-2011-3895,同時顯著提升對 H.264 的檢索支持。
[5]
2012年04月07日,FFmpeg 0.10.1 發佈,FFmpeg 0.10.1 修復了很多安全漏洞,超過 100 個 bug 修復,新增 swapuv 過濾器。
[7]
2012年05月07,FFmpeg 0.10.3 發佈,該版本修復了 4xm 分路器、cook 解碼器、mm 分路器、mpeg 視頻解碼器、vqavideo 解碼器、xmv 分路器的安全問題,以及包含一些重要的 bug 修復。
[8]
2013-07-10, FFmpeg2.2發佈
2014-12-5, FFmpeg2.5發佈
- 參考資料
-
- 1. 多媒體處理工具 ffmpeg .開源社區網[引用日期2012-09-08]
- 2. FFmpeg 4.4 "Rao" .FFMPEG.2021-04-08[引用日期2021-07-05]
- 3. libav 關於頁面 .libav[引用日期2015-05-04]
- 4. ffmpeg 2.4發佈 .ffmpeg[引用日期2014-11-24]
- 5. FFmpeg 0.9.1 發佈,多媒體處理工具 .開源社區網[引用日期2012-09-23]
- 6. FFmpeg 0.10 發佈 .開源社區網[引用日期2012-09-23]
- 7. FFmpeg 0.10.1 發佈 .開源社區網[引用日期2012-09-24]
- 8. FFmpeg 0.10.3 發佈 .開源社區網[引用日期2012-09-24]
- 9. FFmpeg 0.11.1 發佈 .開源社區網[引用日期2012-09-24]
- 10. February 28th, 2023, FFmpeg 6.0 "Von Neumann" .FFmpeg.2023-05-28[引用日期2023-05-14]