
【軟件介紹】
FFmpeg是一套可以用來記錄、轉換數(shù)字音頻、視頻,并能將其轉化為流的開源計算機程序。采用LGPL或GPL許可證。它提供了錄制、轉換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec,為了保證高可移植性和編解碼質量,libavcodec里很多code都是從頭開發(fā)的。
【軟件功能】
多媒體視頻處理工具FFmpeg有非常強大的功能包括視頻采集功能、視頻格式轉換、視頻抓圖、給視頻加水印等。視頻采集功能
ffmpeg視頻采集功能非常強大,不僅可以采集視頻采集卡或USB攝像頭的圖像,還可以進行屏幕錄制,同時還支持以RTP方式將視頻流傳送給支持RTSP的流媒體服務器,支持直播應用。
ffmpeg在Linux下的視頻采集
在Linux平臺上,ffmpeg對V4L2的視頻設備提供了很好的支持,如:
./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文件上傳到流媒體服務器就可以實現(xiàn)直播了。
ffmpeg在windows下的視頻采集
在windows下關于ffmpeg視頻采集的資料非常少,但是ffmpeg還是支持windows下視頻采集的。ffmpeg支持windows下video for windows(VFW)設備的視頻采集,不過VFW設備已經過時,正在被WDM的視頻設備所取代,但是ffmpeg還沒有支持WDM的計劃,不過好像有將WDM轉為VFW的工具,因此ffmpeg還是可以在windows下進行視頻采集的。
視頻格式轉換功能
ffmpeg視頻轉換功能。視頻格式轉換,比如可以將多種視頻格式轉換為flv格式,可不是視頻信號轉換 。
ffmpeg可以輕易地實現(xiàn)多種視頻格式之間的相互轉換(wma,rm,avi,mod等),例如可以將攝錄下的視頻avi等轉成視頻網站所采用的flv格式。
視頻截圖功能
對于選定的視頻,截取指定時間的縮略圖。視頻抓圖,獲取靜態(tài)圖和動態(tài)圖,不提倡抓gif文件;因為抓出的gif文件大而播放不流暢。
給視頻加水印功能
使用ffmpeg 視頻添加水印(logo)。

【命令集】
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. ...
支持的圖片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SGI
4.為視頻重新編碼以適合在iPod/iPhone上播放
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 180
生成的視頻: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.將wav文件轉成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
ffmpeg -i film_sortie_cinelerra.ogm -s 720x576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg
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

【支持格式】
ASFAVI
BFI[7]
IFF[8]
RL2[9]
FLV
MXF, Material eXchange Format, SMPTE 377M
Matroska
Maxis XA[10]
MSN Webcam stream[11]
MPEG transport stream
TXD[6]
OMA[12]
GXF, General eXchange Format, SMPTE 360M
mov,mp4,m4a,3gp,

【使用教程】
安裝首先從本站下載ffmpeg文件,然后解壓它,點擊進入直到你看到圖二一樣的文件,并進入bin文件夾,然后你點擊一下地址欄復制這個文件所在的路徑。



右鍵計算機的圖標屬性,點擊高級系統(tǒng)設置。


點擊環(huán)境變量,找到path這一行點擊編輯。


在路徑最后一行輸入英文的分號,然后粘貼上面解壓的文件的路徑的地址,點擊確定并退出。


最后進入cmd這里,輸入ffmpeg,看到一排的提示,不是提示不是內部或者外部命令即為成功了。


使用
一、格式轉換(音頻或視頻方法相同)
ffmpeg.exe -i 源文件路徑 目的文件路徑

我們轉換一個flv視頻格式成mp4格式,非常簡單。上面的目的文件路徑我用的out.mp4,這個你隨便起,如果不寫全路徑,會生成在當前目錄。上圖的當前目錄顯然是F:FFMPEG_TEST
ideo
有人會問都支持啥格式的轉換,比如我想把amr格式的語音文件轉換成mp3行嗎?用上面的語法當然可以,幾乎你能想到的格式都能轉。
二、音頻或視頻播放
ffplay.exe -i 想播放的文件
我們播放下前面轉換成功的文件。
ffplay.exe -i F:FFMPEG_TEST
ideoout.mp4

回車,彈出一個播放窗口,如圖:

非常簡單,不是嗎?
三、音頻或視頻文件格式詳細信息查看
ffprobe.exe -i 想查看的文件
像前面一樣,我們直接用
ffprobe.exe -i F:FFMPEG_TEST
ideoout.mp4

這個還有很多其它參數(shù),比如我們想查看流的信息用JSON格式顯示(如果想查看包信息就用-show_packets參數(shù))
ffprobe.exe -print_format json -show_streams -i 文件路徑


這幾個命令行工具的參數(shù)實在太多了,而且ffmpeg.exe還可以結合插件程序進行錄制屏幕錄像錄音等,還可以結合其它工具搭建流媒體播放。上面的文件路徑也可以是url路徑,另外里面的-i參數(shù)似乎不填也沒事,-i是英文Input的意思,就是代表輸入文件是什么。你甚至可以將一堆圖片用它合成GIF動畫。
高級語法太多了,有必要的話再更新下或單獨寫一篇文章吧,或者讀者自己摸索下網上找教程吧。上面的命令行工具加上-h參數(shù)就能顯示出幫助信息了。


其實光想最簡單的全部內容進行視頻或音頻轉換,直接用如下語法就行了:
ffmpeg.exe -i 源路徑 目的路徑
利用ffmpeg輕松去除視頻水印
操作步驟
1. 用下面的命令查看水印位置和大小
ffplay.exe -i 紙短情長.mp4 -vf delogo=x=32:y=32:w=306:h=80:show=1
說明:
x、y水印坐標
w、h水印寬高
show=1查看模式
2. 用下面的命令去水印
ffmpeg -i 紙短情長.mp4 -vf delogo=x=32:y=32:w=306:h=80 紙短情長-去水印.mp4
最后
如果還不行,那就給視頻加上一個水印
加上水印后還不行,那就截個屏幕,然后把截圖轉成mp4,再與視頻拼接一下,這下絕對行。
對1、2有興趣的可以留言,我可以找時間分享一下。
【常見問題】
1.FFmpeg設置rtsp超時AVDictionary* opts = NULL;
av_dict_set(&opts, "rtsp_transport", m_bTcp ? "tcp" : "udp", 0); //設置tcp or udp,默認一般優(yōu)先tcp再嘗試udp
av_dict_set(&opts, "stimeout", "3000000", 0);//設置超時3秒
int ret = avformat_open_input(&ctx, url, NULL, &opts);
2.設置udp,http超時
AVDictionary* opts = NULL;
av_dict_set(&opts, "timeout", "3000000", 0);//設置超時3秒
int ret = avformat_open_input(&ctx, url, NULL, &opts);
3.設置av_read_frame 超時
auto ctx = avformat_alloc_context();
ctx->interrupt_callback.callback = CheckInterrupt;//超時回調
ctx->interrupt_callback.opaque = this;
//
m_tStart = time(NULL);
av_read_frame(ctx, &pkt);
//超時回調函數(shù)
static int CheckInterrupt(void* ctx)
{
auto p = (xxx*)ctx;
return time(NULL) - p->m_tStart >= 3 ? 1 : 0;//3秒超時
}
【更新日志】
FFmpeg 4.0更新:1、Bitstream過濾器,用于在H.264,HEVC和MPEG-2流中編輯元數(shù)據
2、實驗MagicYUV編碼器
3、TiVo ty / ty + demuxer
4、英特爾QSV加速MJPEG編碼
5、原生aptX和aptX HD編碼器和解碼器
6、NVIDIA NVDEC加速H.264,HEVC,MJPEG,MPEG-1/2/4,VC1,VP8 / 9 hwaccel解碼
7、英特爾QSV加速覆蓋濾波器
8、mcompand音頻過濾器
9、acontrast音頻過濾器
10、OpenCL覆蓋過濾器
11、視頻混合過濾器
12、視頻標準化過濾器
13、音頻lv2包裝過濾器
14、VAAPI MJPEG和VP8解碼
15、AMD AMF H.264和HEVC編碼器
16、視頻fillborders過濾器
17、視頻setrange過濾器
18、支持LibreSSL(通過libtls)
19、降低了對Windows XP構建的支持。支持的最低Windows版本是Windows Vista。
20、去卷積視頻濾鏡
21、熵視頻過濾器
22、希爾伯特音頻濾波器源
23、aiir音頻過濾器
24、刪除了ffserver程序
25、刪除了ffmenc和ffmdec muxer和demuxer
26、VideoToolbox HEVC編碼器和hwaccel
27、VAAPI加速的ProcAmp(色彩平衡),降噪和清晰度濾鏡
28、添加android_camera indev
29、codec2 en /通過libcodec2解碼
30、本地SBC編碼器和解碼器
31、drmeter音頻過濾器
32、hapqa_extract比特流過濾器
33、filter_units比特流篩選器
34、AV1通過libaom支持
35、支持E-AC-3相關幀
36、用于提取E-AC-3內核的比特流濾波器
37、Haivision SRT協(xié)議通過libsrt
38、vfrdet過濾器


































