FFMPEG完美入門資料---002---FFmpeg 支持能力說明

接著上文寫:

寫在前面

如果對FFmpeg有需要更多了解的請訂閱我的專題:音視頻專輯

2.3.1 FFmpeg 對編碼解碼器的支持

ffmpeg 支持的編解碼器種類共有 280 多種时甚, 涵蓋了幾乎所有常見音視頻編碼格式涨冀, 能解碼幾乎所有的音視頻手负, 每種音視頻編解碼器的實(shí)現(xiàn)都在 libavcodec 目錄下有具體的 C 語言實(shí)現(xiàn)删咱。

  • 注:編碼器和解碼器的名稱不是完全匹配的,因此有些編碼器沒有對應(yīng)相同名稱的解碼器,反之, 解碼器也一樣。即使編碼和解碼都支持也不一定是完全對應(yīng)的垮斯,例如 h263 解碼器對應(yīng)有 h263p 和 h263 編碼器。

2.3.2 FFmpeg 對容器格式的支持

ffmpeg 支持對絕大多數(shù)的容器格式的讀寫操作只祠,共計(jì) 190 多種兜蠕, 涵蓋了互聯(lián)網(wǎng)上各 種常見媒體格式及日常生活中及專業(yè)應(yīng)用中的各種媒體格式。

2.3.3 FFmpeg 對過濾器的支持

Filters 說明
aformat Convert the input audio to one of the specified formats.
anull Pass the source unchanged to the output.
aresample Resample audio data.
ashowinfo Show textual information for each audio frame.
abuffer Buffer audio frames抛寝, and make them accessible to the filterchain.
anullsrc Null audio source熊杨, never return audio frames.
abuffersink Buffer audio frames, and make them available to the end of the filter graph.
anullsink Do absolutely nothing with the input audio.
copy Copy the input video unchanged to the output.
crop Crop the input video to width:height:x:y.
drawbox Draw a colored box on the input video.
fade Fade in/out input video
fieldorder Set the field order.
fifo Buffer input images and send them when they are requested.
format Convert the input video to one of the specified pixel formats.
gradfun Debands video quickly using gradients.
hflip Horizontally flip the input video.
lut Compute and apply a lookup table to the RGB/YUV input video.
lutrgb Compute and apply a lookup table to the RGB input video.
lutyuv Compute and apply a lookup table to the YUV input video.
negate Negate input video.
noformat Force libavfilter not to use any of the specified pixel formats for the input to the next filter.
null Pass the source unchanged to the output.
overlay Overlay a video source on top of the input.
pad Pad input image to width:height[:x:y[:color]] (default x and y: 0盗舰, default color: black).
pixdesctest Test pixel format definitions.
scale Scale the input video to width:height size and/or convert the image format.
select Select frames to pass in output.
setdar Set the frame display aspect ratio.
setpts Set PTS for the output video frame.
setsar Set the pixel sample aspect ratio.
settb Set timebase for the output link.
showinfo Show textual information for each video frame.
slicify Pass the images of input video on to next video filter as multiple slices.
split Pass on the input to two outputs.
transpose Transpose input video.
unsharp Sharpen or blur the input video.
vflip Flip the input video vertically.
buffer Buffer video frames晶府, and make them accessible to the filterchain.
color Provide an uniformly colored input, syntax is: [color[:size[:rate]]]
movie Read from a movie source.
nullsrc Null video source钻趋, never return images.
rgbtestsrc Generate RGB test pattern.
testsrc Generate test pattern.
buffersink Buffer video frames川陆, and make them available to the end of the filter graph.
nullsink Do absolutely nothing with the input video.

2.3.4 FFmpeg 對圖像顏色空間的支持

ffmpeg 支持常見的圖像顏色空間,并且在 libavswcale 中定義了顏色空間轉(zhuǎn)換的相關(guān) 函數(shù)實(shí)現(xiàn)各種顏色模式的互轉(zhuǎn)蛮位。

2.4 FFmpeg 功能及使用說明

2.4.1 ffplay 對多媒體的支持能力驗(yàn)證

一较沪、視頻

3gp 177X144 支持播放鳞绕, 在 windows 下播放正常, 但是在 linux 下面偶有 BUG 如果 發(fā)現(xiàn)畫面無法顯示而聲音可以播放的情況下 可以試著切換全屏或者切換分辨率尸曼。

AVI 208X176 支持
320X240 支持
720X400 支持
720X576 支持
DAT 352X288 支持
DiVX 720X576 支持
MKV 320X240 支持
352X288 支持
704X304 支持
720X576 支持
MP4 320X240 支持
352X288 支持
720X400 支持
MPG 320X240 支持
352X288 支持
480X576 支持
720X576 支持
720X480 支持
VOB 352X288 支持
XVID 720X576 支持
MOV 支持
RMVB 支持

二们何、音頻

AC3 48KHZ 支持
APE 11KHZ 支持
22KHZ 支持
44KHZ 支持
48KHZ 支持
MP3 32KHZ 64Kbps 支持
32KHZ 128KbpS 支持
32KHZ 160Kbps 支持
32KHZ 192Kbps 支持
32KHZ 320Kbps 支持
44KHZ 64Kbps 支持
44KHZ 128Kbps 支持
44KHZ 160Kbps 支持
44KHZ 192Kbps 支持
44KHZ 320Kbps 支持
48KHZ 64Kbps 支持
48KHZ 128Kbps 支持
48KHZ 160Kbps 支持
48KHZ 192Kbps 支持
48KHZ 320Kbps 支持
OGG 32KHZ 128Kbps 支持
32KHZ 192Kbps 支持
44KHZ 64Kbps 支持
44KHZ 128Kbps 支持
44KHZ 192Kbps 支持
48KHZ 64Kbps 支持
44KHZ 128Kbps 支持
44KHZ 192Kbps 支持
WAV 11KHZ 支持
22KHZ 16Kbps 支持
44KHZ 16Kbps 支持
48KHZ 16Kbps 支持
WMA 8KHZ 16Kbps 支持
11KHZ 16Kbps 支持
16KHZ 16Kbps 支持
22KHZ 16Kbps 支持
44KHZ 16Kbps 支持
48KHZ 16Kbps 支持

三、圖像

PNG 支持
JPG 支持
JPEG 支持
GIF 支持
BMP 支持

2.4.2 FFmpeg 格式轉(zhuǎn)換

第一步:準(zhǔn)備媒體

前面已經(jīng)講的很清楚了控轿, ffmpeg 如何安裝不在贅述冤竹。 準(zhǔn)備好相應(yīng)的文件, 如圖 2-1 所示茬射。


圖 2-1

第二步:啟動(dòng) ffmpeg

由于做的是格式轉(zhuǎn)換鹦蠕,在 ffserver 上不能直觀的看見結(jié)果,故我是在 linux 下進(jìn)行的在抛。 打開終端钟病,值得一提的是格式轉(zhuǎn)換需要超級(jí)用戶才能進(jìn)行,故在命令行輸入:su霜定,<回車>, 輸入密碼進(jìn)入超級(jí)用戶廊鸥, 本例中望浩, 以 FFmpeg 將 test.avi 轉(zhuǎn)換為 test.mpg。 在命令行中輸 入:./ffmpeg –i test.avi –r 25 –s 720x400 test.mpg<回車>惰说。 其中原格式分辨率為 320x240磨德, 將轉(zhuǎn)為 720x400, -r 前面已經(jīng)解釋其含義吆视, 表示設(shè)置幀頻為 25典挑。 轉(zhuǎn)換成功后如圖 2-2 所 示,前后兩種格式播放效果如圖 2-3 所示啦吧。相應(yīng)的您觉,轉(zhuǎn)換為其他格式做相應(yīng)的變化即可。

同時(shí)還可以在轉(zhuǎn)換格式時(shí)進(jìn)行強(qiáng)制的音視頻轉(zhuǎn)換授滓, 如–vcodec + 格式琳水, 將會(huì)強(qiáng)制將 視頻按指定格式編碼, -acodec +格式般堆, 將會(huì)強(qiáng)制按指定格式編碼音頻信息在孝。 在轉(zhuǎn)換中有 很多其他參數(shù)可以指定,如碼率淮摔、分辨率私沮、幀率等,具體按照 ffmpeg 的參數(shù)說明指定參 數(shù)即可和橙。 但有一條轉(zhuǎn)低不轉(zhuǎn)高的原則需要注意仔燕, 即品質(zhì)差的音視頻轉(zhuǎn)換不建議轉(zhuǎn)換到品 質(zhì)好的音視頻造垛。

圖 2-2

圖 2-3

再說說如何在轉(zhuǎn)換視頻的時(shí)候?qū)⒁纛l合成到視頻中, 且覆蓋其原來的音頻涨享。 這個(gè)現(xiàn) 在摸索出兩種方法筋搏。

方法一:需要兩條命令實(shí)現(xiàn), 先在命令行中輸入:
 ./ffmpeg –i test.avi -an –r 25 test.mpg <回車>

此時(shí)將生成一個(gè)沒有聲音的 test.mpg 視頻厕隧, 再在命令行中輸入:

./ffmpeg –i test.mpg –i test.mp3 –r 25 test1.mpg<回車>

此時(shí)將會(huì)生成一個(gè)名為 test1.mpg 的視頻奔脐。 該視頻播放時(shí)視頻為 test.avi 的視頻, 但音頻 變?yōu)榱?test.mp3 的音頻了吁讨。

方法二:只要一條指令即可實(shí)現(xiàn)髓迎。 在命令行中輸入:
./ffmpeg –i test.avi –i test.mp3 –vcodec copy –acodec copy –r 25 test2.mpg<回車>

此時(shí)將會(huì)生成一個(gè)名為 test2.mpg 的視頻, 播放時(shí)其視頻為 test.avi 的視頻建丧, 音頻為 test.mp3排龄。 –vcodec copy 為 force video codec(‘copy’ to copy stream)。

有一點(diǎn)需要注意翎朱, 文件命名不能有空格橄维, 否則會(huì)導(dǎo)致編譯時(shí)不能通過。 另外拴曲, -an 為不能使音頻記錄争舞。

第三步:播放媒體

播放我們轉(zhuǎn)換的媒體, 看看是否滿足我們當(dāng)初的愿望澈灼, 不出什么差錯(cuò)的話竞川, 是完全 能夠滿足我們的要求的。

2.4.3 FFmpeg 視頻截圖

截取一張 300x200 尺寸大小的格式為 jpg 的一張圖片:

./ffmpeg –i test.avi –y –f image2 –t 0.001 –s 300x200 test.jpg

要截取指定時(shí)間的圖片叁熔, 如 5 秒之后的:

 ./ffmpeg –i test.avi –y –f image2 –ss 5 –t 0.001 –s 300x200 test.jpg

其中委乌, -ss 后的單位為秒, 也可寫成:-ss 00:00:05荣回。

把視頻的前 30 幀轉(zhuǎn)換為一個(gè)動(dòng)態(tài)的 gif 圖遭贸。 需要說明的是, 轉(zhuǎn)換成功之后心软, 如果用 ffplay 播放是看不出效果的革砸, 建議換成其他圖片播放器播放。 其轉(zhuǎn)換命令為:

./ffmpeg –i test.avi –vframes 30 –pix_fmt rgb24–y –f gif test.gif

也可以從視頻中的第 10 秒開始截取后面的 5 秒內(nèi)容轉(zhuǎn)換為一個(gè)無限重播的動(dòng)態(tài) gif 圖糯累。 其命令為:

./ffmpeg –i test.avi –pix_fmt rgb24 –ss 10 –t 5 –y –f gif test.gif

上面兩種動(dòng)態(tài) gif 都是只播一次算利, 想讓其一直播, 可再加一個(gè)參數(shù):-loop_output 0泳姐。

2.4.4 FFmpeg 屏幕錄制

屏幕錄制其命令為:

./ffmpeg -f x11grab -r 25 -s wxga -i :0.0 /tmp/outputFile.mpg

其他相關(guān)參數(shù)可自行添加效拭。 需要說明的是, 各個(gè)版本的 ffmpeg 對屏幕錄制的命令不一。 如果你只想錄制一個(gè)應(yīng)用程序窗口或者桌面上的一個(gè)固定區(qū)域缎患, 那么可以指定偏移位置 和區(qū)域大小慕的。 使用 xwininfo -frame 命令可以完成查找上述參數(shù)。

注:ffmpeg 的屏幕錄制功能只能在 Linux 環(huán)境下有效挤渔。 并且在配置時(shí)需要添加 –enable-x11grub 指令肮街, 默認(rèn)關(guān)閉。

2.4.5 FFmpeg 音視頻采集

把攝像頭的實(shí)時(shí)視頻錄制下來判导, 存儲(chǔ)為文件

./ffmpeg -f video4linux -s 320x240 -r 10 -i /dev/video0 test.asf

錄音嫉父, 其命令為:

./ffmpeg –i /dev/dsp -f oss test.mp3

2.5 FFmpeg 應(yīng)用實(shí)例

2.5.1 用 FFserver 從文件生成流媒體

一、安裝 ffmpeg

在 ubuntu 下眼刃, 運(yùn)行 sudo apt-get ffmpeg 安裝 ffmpeg绕辖, 在其他 linux 操作系統(tǒng)下, 見 ffmpeg 的編譯過程(編譯完成后可執(zhí)行自動(dòng)安裝)擂红。

二仪际、準(zhǔn)備預(yù)播放的媒體文件

如 test.Mp3,在本文檔中昵骤,默認(rèn)放入用戶文件夾下得 Music 文件夾內(nèi).(直接從設(shè)備采 集不在本文檔敘述范圍之內(nèi))

三树碱、修改 ffserver 配置信息

ffserver 配置文件為: /etc/ffserver.conf 打開, 填寫配置信息.配置信息包括三方面:

  • 1.端口綁定等基本信息变秦,在/etc/ffserver.conf 中有詳細(xì)注釋成榜,在此不再重復(fù),最終配 置信息為:
Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
  • 2.媒體文件配置信息.本信息根據(jù)具體的媒體文件類型直接在配置文件中取消注釋 掉相應(yīng)文件類型的配置信息伴栓, 然后填寫文件路徑即可:

    # MP3 audio
    <Stream test.mp3> 
    File "/home/xiaoma/Music/test.mp3"
    Format mp2
    NoVideo
    </Stream>
    

四伦连、啟動(dòng) ffserver

在終端中運(yùn)行如下代碼來啟動(dòng)ffserver

sudo ffserver -f /etc/ffserver.conf

五雨饺、播放流媒體

在瀏覽器中輸入http://127.0.0.1:8090/test.mp3即可播放音樂.

在終端中輸入 ffplay http://localhost:8090/test.mp3 可播放流媒體.

2.5.2 用 FFserver 從設(shè)備生成實(shí)時(shí)流

一钳垮、準(zhǔn)備媒體

按照上節(jié)步驟安裝 ffmpeg,保證攝像頭和聲卡可用额港, 將從攝像頭和聲卡獲取音視頻 信息饺窿。

二、修改 ffserver 配置信息

ffserver 配置文件為: /etc/ffserver.conf 打開移斩, 填寫配置信息.配置信息包括三方面:

  • 1.端口綁定等基本信息肚医,在/etc/ffserver.conf 中有詳細(xì)注釋,在此不再重復(fù)向瓷,最終配 置信息為:
Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
  • 2.fend(傳沖信息)肠套,在文件播放中,基本不用動(dòng)本配置信息猖任,只需要根據(jù)具體情況分 配緩沖文件.最終配置信息如下:

     <Feed feed1.ffm>
    File /tmp/feed1.ffm
    FileMaxSize 2M
    ACL allow 127.0.0.1
    </Feed>
    

(中間會(huì)有很多很多配置信息你稚,都是關(guān)于音視頻的,有些配置還不懂,慢慢摸索吧)

<Stream test1.mpg> 
Feed feed1.ffm
 Format mpeg
 AudioBitRate 32
 AudioChannels 1
 AudioSampleRate 44100
VideoBitRate 64
 VideoBufferSize 40
 VideoFrameRate 3
 VideoSize 160x128 
 VideoGopSize 12
 </Stream>
 # Flash
 <Stream test.swf>
 Feed feed1.ffm
 Format swf
 VideoFrameRate 2 
VideoIntraOnly
NoAudio
 </Stream>

三刁赖、啟動(dòng) FFserver

在終端中運(yùn)行如下代碼來啟動(dòng) ffserver.

sudo ffserver -f /etc/ffserver.conf

四搁痛、啟動(dòng) ffmpeg

本例中, 以 ffmpeg 作為實(shí)時(shí)攝像頭采集輸入.在命令行中輸入:

./ffmpeg -f video4linux2 -r 25 -i /dev/video0 /tmp/feed1.ffm

如果有音頻設(shè)備宇弛, 則采集音頻的命令如下:

./ffmpeg -f oss -i /dev/dsp -f video4linux2 -r 25 -i /dev/video0 /tmp/feed1.ffm

(音頻格式參數(shù)自己配置)

五鸡典、播放流媒體

在瀏覽器中輸入 http://127.0.0.1:8090/test1.mpg 即可播放音樂.

在終端中輸入 ffplay http://localhost:8090/test.swf 可播放流媒體.

寫在后面

如果對FFmpeg有需要更多了解的請訂閱我的專題:音視頻專輯

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市枪芒,隨后出現(xiàn)的幾起案子彻况,更是在濱河造成了極大的恐慌,老刑警劉巖病苗,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疗垛,死亡現(xiàn)場離奇詭異,居然都是意外死亡硫朦,警方通過查閱死者的電腦和手機(jī)贷腕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咬展,“玉大人泽裳,你說我怎么就攤上這事∑破牛” “怎么了涮总?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長祷舀。 經(jīng)常有香客問我瀑梗,道長,這世上最難降的妖魔是什么裳扯? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任抛丽,我火速辦了婚禮,結(jié)果婚禮上饰豺,老公的妹妹穿的比我還像新娘亿鲜。我一直安慰自己,他們只是感情好冤吨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布蒿柳。 她就那樣靜靜地躺著,像睡著了一般漩蟆。 火紅的嫁衣襯著肌膚如雪垒探。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天怠李,我揣著相機(jī)與錄音圾叼,去河邊找鬼仔引。 笑死,一個(gè)胖子當(dāng)著我的面吹牛褐奥,可吹牛的內(nèi)容都是我干的咖耘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼撬码,長吁一口氣:“原來是場噩夢啊……” “哼儿倒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起呜笑,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤夫否,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后叫胁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凰慈,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年驼鹅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了微谓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡输钩,死狀恐怖豺型,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情买乃,我是刑警寧澤姻氨,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站剪验,受9級(jí)特大地震影響肴焊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜功戚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一娶眷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疫铜,春花似錦茂浮、人聲如沸双谆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顽馋。三九已至谓厘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寸谜,已是汗流浹背竟稳。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人他爸。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓聂宾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親诊笤。 傳聞我的和親對象是個(gè)殘疾皇子系谐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 前言 如此強(qiáng)大的FFmpeg,能夠?qū)崿F(xiàn)視頻采集讨跟、視頻格式轉(zhuǎn)化纪他、視頻截圖、視頻添加水印晾匠、視頻切片茶袒、視頻錄制、視頻推流...
    騷之哈塞給閱讀 25,728評論 6 39
  • 0 概述 FFmpeg是一套領(lǐng)先的音視頻多媒體處理開源框架凉馆,采用LGPL或GPL許可證薪寓。它提供了對音視頻的采集、編...
    但行耕者閱讀 6,796評論 0 19
  • 寫在前面 如果對FFmpeg有需要更多了解的請訂閱我的專題:音視頻專輯 文檔介紹 1.1 文檔目的 整理出開源代碼...
    張芳濤閱讀 3,370評論 4 43
  • 不論是住在美麗的高山澜共, 或是躺臥在陰暗的幽谷预愤, 當(dāng)你抬起頭, 你將會(huì)發(fā)現(xiàn)咳胃, 太陽就在云之上 植康。 云上太陽, 它總不...
    劉敏flower閱讀 310評論 0 1
  • 前一篇文章我分享《稀缺》一書時(shí)展懈,講述了我們真正稀缺的資源是“注意力”销睁。 注意力是你一生最重要的資源,作為日常生活中...
    跡歸云_周照閱讀 1,056評論 0 7