FFmpeg是一個開源免費跨平臺的視頻和音頻流方案,屬於自由軟件,採用LGPL或GPL許可證(依據你選擇的組件)。它提供了錄製、轉換以及流化音視頻的完整解決方案。它包含了很是先進的音頻/視頻編解碼庫libavcodec,爲了保證高可移植性和編解碼質量,libavcodec裏不少codec都是從頭開發的。html
FFmpeg提供了強大的命令行工具,很是方便用戶使用以及二次開發。json
官方網站:http://www.ffmpeg.org/。服務器
FFmpeg項目由如下幾部分組成:架構
1.FFmpeg視頻文件轉換命令行工具,也支持通過實時電視卡抓取和編碼成視頻文件;async
2.ffserver基於HTTP、RTSP用於實時廣播的多媒體服務器.也支持時間平移;ide
3.ffplay用 SDL和FFmpeg庫開發的一個簡單的媒體播放器;工具
4.libavcodec一個包含了全部FFmpeg音視頻編×××的庫。爲了保證最優性能和高可複用性,大多數編×××從頭開發的;性能
5.libavformat一個包含了全部的普通音視格式的解析器和產生器的庫。網站
圖片來源:http://xcshen.blog.51cto.com/2835389/565929。ui
FFmpeg能夠在Windows、Linux、Mac OS等多種操做系統環境中進行安裝和使用。
在http://ffmpeg.zeranoe.com/builds/中下載Windows版本的FFmpeg,假以下載的是已經編譯好的二進制文件ffmpeg-latest-win32-static.7z,將其解壓以後就能夠使用了。
打開CMD,cd進入解壓以後的bin文件夾,以後就能夠在CMD中使用ffmpeg的命令了。
首先須要安裝一些×××:lame、libogg、libvorbis、xvid、x264、libdts、a52、faac、amr-nb、amr-wb、lib52等,能夠採用源碼安裝或者rpm、deb等二進制方式安裝,安裝步驟較簡單,跳過。
上面一切安裝成功以後,下面就能夠安裝FFmpeg了,一樣能夠採用源碼安裝或者二進制文件安裝兩種方式。
以源碼安裝爲例,在http://ffmpeg.mplayerhq.hu/download.html下載最新的源碼包,例以下載的是ffmpeg-2.0.tar.gz,將其上傳到Linux系統的某一個目錄,進入該目錄而後執行下面的命令進行安裝:
tar –xvf ffmpeg-2.0.tar.gz cd ffmpeg-2.0 ./configure --prefix=/usr --enable-gpl --enable-shared --enable-libmp3lame --enable-libogg --enable-libvorbis --enable-libamr-nb --enable-libamr-wb --enable-libxvid --enable-libx264 --enable-liba52 --enable-liba52bin --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-pp --enable-pthreads --disable-ffserver --disable-ffplay make && make install |
ffmpeg相關的命令語法詳見附錄。
使用ffplay命令就能夠播放一個音頻文件了,例如執行下面的命令播放一個mp3文件:ffplay.exe D:\Download\4b.mp3,執行以後就會彈出一個窗口進行播放。
跟播放音頻文件相似,播放視頻文件的時候,將命令後面的文件改成視頻文件的路徑便可。例如,播放一個mp4文件,執行以下命令:ffplay.exeD:\Download\beijing5-360p.mp4。
將mp4轉換爲flv格式:ffmpeg -y -iD:\Download\beijing5-360p.mp4 -ab 56k -ar 22050 -b:v 500k -r 29.97 -s 640x358D:\Download\beijing5-360p.flv:
參數說明以下:
1.–y表示覆蓋輸出文件;
2.–i表示輸入文件;
3.–ab表示音頻數據流量,通常選擇32、64、96、128;
4.–ar表示音頻採樣率,單位爲Hz;
5.–b:v表示視頻碼率;
6.–r表示幀速率,單位爲Hz;
7.–s640x358表示幀尺寸,輸出的分辨率爲640x358;
8.D:\Download\beijing5-360p.flv表示輸出的文件。
執行以下命令進行截圖:ffmpeg -y -iD:\Download\beijing5-360p.mp4 -ss 165.000 -frames 1 -f p_w_picpath2D:\Download\p_w_picpaths\cap%3d.jpg
參數說明以下:
1.–y表示覆蓋輸出文件;
2.–iD:\Download\beijing5-360p.mp4表示輸入文件;
3.-ss165.000表示起始時間爲165.000秒;
4.-frames1表示只記錄一個幀;
5.-fp_w_picpath2表示格式爲p_w_picpath2;
6.D:\Download\p_w_picpaths\cap%3d.jpg表示輸出文件,%3d相似C語言的數字輸出格式,輸出爲3位數字。
ffmpeg錄製視頻的方法很簡單,執行下面的命令:ffmpeg -f alsa -ac 1-i pulse -acodec aac -f x11grab -s 1024x600 -i :0.0 –sameq a.mp4。
這條命令不但能夠錄製屏幕,還能夠錄製聲音,其中錄製聲音的部分是:-f alsa -ac 1 -i pulse-acodec aac。錄製視頻的是: -f x11grab -s1024x600 -i :0.0 –sameq。
3.1.6 視頻切割
剪切的同時,格式不變,音視頻參數不變:ffmpeg -y -i bjysxyt5.mp4 -ss 00:00:00.0 -t 00:01:00.0 -acodec copy -vcodec copy -async 1 bjysxyt1.mp4
剪切的同時,音視頻參數不變,只轉換格式:ffmpeg -y -i bjysxyt5.mp4 -ss 00:00:00.0 -t 00:01:00.0 -acodec copy -vcodec copy -async 1 bjysxyt1.flv
剪切的同時,格式不變,只轉換音視頻參數:ffmpeg -y -i bjysxyt5.mp4 -ss 00:00:00.0 -t 00:01:00.0 -ab 56k -ar 44100 -b:v 2200k -r 29.97 -s 640x360 bjysxyt1.mp4
剪切的同時,既轉換格式又轉換音視頻參數:ffmpeg -y -i bjysxyt5.mp4 -ss 00:00:00.0 -t 00:01:00.0 -ab 56k -ar 44100 -b:v 2200k -r 29.97 -s 640x360 bjysxyt1.flv
說明:-i表示輸入文件;-acodec copy -vcodec copy 表示音頻、視頻不進行編解碼,直接複製源視頻;-ss表示起始時間,-t表示時長,格式均爲「小時:分鐘:秒」。
3.1.7 獲取視頻信息ffprobe -v quiet -print_format json -show_format -show_streams VIDEO_FILE