FFmpeg使用小記

什麼是FFmpeg

1.1 簡介

FFmpeg是一個開源免費跨平臺的視頻和音頻流方案,屬於自由軟件,採用LGPLGPL許可證(依據你選擇的組件)。它提供了錄製、轉換以及流化音視頻的完整解決方案。它包含了很是先進的音頻/視頻編解碼庫libavcodec,爲了保證高可移植性和編解碼質量,libavcodec裏不少codec都是從頭開發的。html

FFmpeg提供了強大的命令行工具,很是方便用戶使用以及二次開發。json

官方網站:http://www.ffmpeg.org/服務器

1.2 組件

FFmpeg項目由如下幾部分組成:架構

1.FFmpeg視頻文件轉換命令行工具,也支持通過實時電視卡抓取和編碼成視頻文件;async

2.ffserver基於HTTPRTSP用於實時廣播的多媒體服務器.也支持時間平移;ide

3.ffplay SDLFFmpeg庫開發的一個簡單的媒體播放器;工具

4.libavcodec一個包含了全部FFmpeg音視頻編×××的庫。爲了保證最優性能和高可複用性,大多數編×××從頭開發的;性能

5.libavformat一個包含了全部的普通音視格式的解析器和產生器的庫。網站

1.3 FFmpeg架構流程圖

圖片來源:http://xcshen.blog.51cto.com/2835389/565929ui

怎麼安裝FFmpeg

FFmpeg能夠在WindowsLinuxMac OS等多種操做系統環境中進行安裝和使用。

2.1 Windows系統下安裝

http://ffmpeg.zeranoe.com/builds/中下載Windows版本的FFmpeg,假以下載的是已經編譯好的二進制文件ffmpeg-latest-win32-static.7z,將其解壓以後就能夠使用了。

打開CMDcd進入解壓以後的bin文件夾,以後就能夠在CMD中使用ffmpeg的命令了。

2.2 Linux系統下安裝

首先須要安裝一些×××:lamelibogglibvorbisxvidx264libdtsa52faacamr-nbamr-wblib52等,能夠採用源碼安裝或者rpmdeb等二進制方式安裝,安裝步驟較簡單,跳過。

上面一切安裝成功以後,下面就能夠安裝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

ffmpeg相關的命令語法詳見附錄。

3.1 命令行工具的用法

 

3.1.1 播放音頻

使用ffplay命令就能夠播放一個音頻文件了,例如執行下面的命令播放一個mp3文件:ffplay.exe D:\Download\4b.mp3,執行以後就會彈出一個窗口進行播放。

3.1.2 播放視頻

跟播放音頻文件相似,播放視頻文件的時候,將命令後面的文件改成視頻文件的路徑便可。例如,播放一個mp4文件,執行以下命令:ffplay.exeD:\Download\beijing5-360p.mp4

3.1.3 視頻格式轉換

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表示音頻數據流量,通常選擇326496128

4.–ar表示音頻採樣率,單位爲Hz

5.–b:v表示視頻碼率;

6.–r表示幀速率,單位爲Hz

7.–s640x358表示幀尺寸,輸出的分辨率爲640x358

8.D:\Download\beijing5-360p.flv表示輸出的文件。

3.1.4 截圖

執行以下命令進行截圖: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位數字。

3.1.5 錄製屏幕

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

相關文章
相關標籤/搜索