佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > linux下ffmpeg的使用方法詳解

linux下ffmpeg的使用方法詳解

熱門標(biāo)簽:外呼系統(tǒng) 硅谷的囚徒呼叫中心 百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式 解決方案 電話機(jī)器人搭建 美團(tuán) 服務(wù)器配置 家政服務(wù)網(wǎng)絡(luò)

格式轉(zhuǎn)換 (將file.avi 轉(zhuǎn)換成output.flv)

#ffmpeg -i file.avi output.flv  

-i 表示輸入文件

:現(xiàn)在有個(gè)視頻video.avi,有個(gè)音頻 audio.mp3,將其合并成output.avi

兩個(gè)命令(file.avi 是中間文件,用完可刪)

#ffmpeg -i video.avi -vcodec copy -an video2.avi    
#ffmpeg -i video2.avi -i audio.mp3 -vcodec copy -acodec copy output.avi  

-i 表示輸入文件

-vcodec copy 表示 force video codec (‘copy’ to copy stream) 這個(gè)不知怎么譯 ,估計(jì)是直接copy

-acodec copy 這個(gè)說(shuō)的應(yīng)該是音頻了 跟上面一樣

-an:表示 disable audio 估計(jì)是audio no 之類的縮寫,表示去掉video.avi 原有的音頻

方法2 好像可以直接指定兩個(gè)輸入文件 ,

#ffmpeg -i /tmp/a.wav -i /tmp/a.avi /tmp/a.avi 

兩個(gè)文件的順序很重要

從視頻里提取聲音(聲音與視頻的分離)

#ffmpeg -i 人生若只如初見(jiàn).flv -vnr.mp3 

從flv 文件中提取聲音并保存為mp3格式

-vn : 表示忽略視頻 估計(jì)是video no 之類的縮寫

#ffmpeg -i 人生若只如初見(jiàn).flv -an r.flv

只留視頻不留聲音

-an : 表示 忽略 聲音 估計(jì)是audio no 之類的縮寫

從視頻里提取圖片( )

#ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg     
-ss 

第8秒處截一圖

壓縮mp3 文件

如果你覺(jué)得mp3文件有點(diǎn)大,想變小一點(diǎn)那么可以通過(guò)-ab 選項(xiàng)改變音頻的比特率 (bitrate)

#ffmpeg -i input.mp3 -ab 128 output.mp3  

//這里將比特率設(shè)為128

你可以用file 命令查看一下源文件 的信息

z.mp3: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo

其中的192 kbps 就是這個(gè)東西

mp3中比特率的含義是:在壓縮音頻文件至mp3時(shí),由壓縮軟件所確定數(shù)碼文件在播放時(shí)每秒傳 送給播放器大小,其單位是:千位/秒;英文的含義是:kbps – = kilobits per second?,F(xiàn)在mp3文件的最高數(shù)位率是320 kbps。這樣的文件體積很大,每分鐘的音樂(lè)超過(guò)兩兆字節(jié)。如果采用可變比特率(VBR)編碼來(lái)生成mp3文件,獲得與320 kbps相當(dāng)音質(zhì),文件的體積會(huì)縮小25~50%。請(qǐng)注意:播放時(shí)間相同,而歌曲不同,所獲的壓縮mp3文件的一般不相同,這是因?yàn)閂BR編碼所生成的 mp3文件的大小不僅僅取決于播放時(shí)間的長(zhǎng)度,還取決于源音頻文件的其它因素。

錄音(要有可用的麥克風(fēng),并且如果用alsa 的話,好像得安alsa-oss,重啟)

#ffmpeg -f oss -i /dev/dsp out.avi  
#ffmpeg -f alsa -ac 2 -i hw:0,0 ut.avi  
#ffmpeg -f alsa -ac 2 -i pulse  

oss 是linux 下的聲音相關(guān)的東西,與alsa 一樣,不過(guò)oss 是商業(yè)的, 而/dev/dsp 是oss 用到的麥克的設(shè)備吧,可以這樣理解

屏幕錄像

#ffmpeg -f x11grab -s xga -r 10 -i :0.0+0+0 wheer.avi   
#ffmpeg -f x11grab -s 320x240  -r 10 -i :0.0+100+200 wheer.avi  

:0:0 表示屏幕(個(gè)人理解,因?yàn)橄到y(tǒng)變量$DISPLAY值就是:0.0) 而100,表示距左端100象素,200表示距上端200

-s 設(shè)置窗口大小

-r 10 好像是設(shè)置頻率,不懂

#ffmpeg -f x11grab -s xga-qscale 5-r 10 -i :0.0+0+0 wheer.avi  

-qscale 8 設(shè)定畫面質(zhì)量,值越小越好

屏幕錄像,同時(shí)錄音

#ffmpeg -f oss -i /dev/dsp-f x11grab -r 30 -s 1024x768 -i :0.0  output.mkv  
#ffmpeg -ac 2 -f oss -i /dev/dsp -f x11grab -r 30 -s 1024x768 -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 output.mkv  

看到這,你會(huì)發(fā)現(xiàn)這個(gè)命令有多強(qiáng)大,

如果我屏幕上打開(kāi)了一個(gè)窗口,我只想錄這個(gè)窗口的內(nèi)容,如何確定這個(gè)窗口的坐標(biāo)位置呢

可以用另外一個(gè)命令

xwininfo 輸入這個(gè)命令后,用鼠標(biāo)點(diǎn)選目標(biāo)窗口,

會(huì)出現(xiàn)目標(biāo)窗口的坐標(biāo),寬高等一系列信息

Absolute upper-left X: 276

Absolute upper-left Y: 57

Relative upper-left X: 2

Relative upper-left Y: 23

Width: 742

Height: 499

Depth: 24

Visual: 0×21

Visual Class: TrueColor

Border width: 0

Class: InputOutput

Colormap: 0×20 (installed)

Bit Gravity State: NorthWestGravity

Window Gravity State: NorthWestGravity

Backing Store State: NotUseful

Save Under State: no

Map State: IsViewable

Override Redirect State: no

Corners: +276+57 -262+57 -262-244 +276-244

-geometry 80×24+274+34 看到這一行了沒(méi) ()

比如根據(jù)上面的信息

#ffmpeg -f oss -i /dev/dsp -f x11grab -r 30 -s 1280x752 -i :0.0+0+23 output.avi

Another thing you can change is the video frame rate (FPS). In the example above we used -r 30 which means capture at 30 FPS. You can change this value to whatever frame rate you want.

這個(gè) -r 30 應(yīng)該是每秒鐘取樣幾次,估計(jì)是一秒截三十次屏,

切頭去尾

#ffmpeg -ss 00:00:10 -t 00:01:22 -i 五月天-突然好想你.mp3 output.mp3  

只要從第10秒開(kāi)始截取,共截取1:22時(shí)長(zhǎng)的內(nèi)容,視頻文件的連接,如兩個(gè)flv 文件 連接成一塊

好像必須先將文件 轉(zhuǎn)成mpg ,dv 等格式的文件后才能進(jìn)行連接

連接復(fù)數(shù)的AVI影片檔之范例(在此范例中須一度暫時(shí)將AVI檔轉(zhuǎn)換成MPEG-1檔(MPEG-1, MPEG-2 PS, DV格式亦可連接))

#ffmpeg -i input1.avi -sameq inputfile_01.mpg -r 20  
#ffmpeg -i input2.avi -sameq inputfile_02.mpg -r 20  
#cat inputfile_01.mpg inputfile_02.mpg > inputfile_all.mpg  
#ffmpeg -i inputfile_all.mpg -sameq outputfile.avi  

上面將input1.avi input2.avi 合并成outputfile.avi

-sameq 表示 相同的質(zhì)量(可能指的是畫面,不太清楚)

-r 指頻率

=====================================================================

下面是wiki 上給的幾個(gè)例子

參數(shù)

FFmpeg可使用眾多參數(shù),參數(shù)內(nèi)容會(huì)根據(jù)ffmpeg版本而有差異,使用前建議先參考參數(shù)及編解碼器的敘述。此外,參數(shù)明細(xì)可用 ffmpeg -h 顯示;編解碼器名稱等明細(xì)可用 ffmpeg -formats 顯示。

下列為較常使用的參數(shù)。

主要參數(shù)

-i 設(shè)定輸入檔名。

-f 設(shè)定輸出格式。

-y 若輸出檔案已存在時(shí)則覆蓋檔案。

-fs 超過(guò)指定的檔案大小時(shí)則結(jié)束轉(zhuǎn)換。

-ss 從指定時(shí)間開(kāi)始轉(zhuǎn)換。

-title 設(shè)定標(biāo)題。

-timestamp 設(shè)定時(shí)間戳。

-vsync 增減Frame使影音同步。

影像參數(shù)

-b 設(shè)定影像流量,默認(rèn)為200Kbit/秒。( 單位請(qǐng)參照下方注意事項(xiàng) )

-r 設(shè)定FrameRate值,默認(rèn)為25。

-s 設(shè)定畫面的寬與高。

-aspect 設(shè)定畫面的比例。

-vn 不處理影像,于僅針對(duì)聲音做處理時(shí)使用。

-vcodec 設(shè)定影像影像編解碼器,未設(shè)定時(shí)則使用與輸入檔案相同之編解碼器。

聲音參數(shù)

-ab 設(shè)定每Channel (最近的SVN 版為所有Channel的總合)的流量。( 單位 請(qǐng)參照下方注意事項(xiàng) )

-ar 設(shè)定采樣率。

-ac 設(shè)定聲音的Channel數(shù)。

-acodec 設(shè)定聲音編解碼器,未設(shè)定時(shí)與影像相同,使用與輸入檔案相同之編解碼器。

-an 不處理聲音,于僅針對(duì)影像做處理時(shí)使用。

-vol 設(shè)定音量大小,256為標(biāo)準(zhǔn)音量。(要設(shè)定成兩倍音量時(shí)則輸入512,依此類推。)

注意事項(xiàng)

以-b及ab參數(shù)設(shè)定流量時(shí),根據(jù)使用的ffmpeg版本,須注意單位會(huì)有kbits/sec與bits/sec的不同。(可用ffmpeg -h顯示說(shuō)明來(lái)確認(rèn)單位。)

例如,單位為bits/sec的情況時(shí),欲指定流量64kbps時(shí)需輸入‘ -ab 64k ’;單位為kbits/sec的情況時(shí)則需輸入‘ -ab 64 ’。

以-acodec及-vcodec所指定的編解碼器名稱,會(huì)根據(jù)使用的ffmpeg版本而有所不同。例如使用AAC編解碼器時(shí),會(huì)有輸入aac 與 libfaac的情況。此外,編解碼器有分為僅供解碼時(shí)使用與僅供編碼時(shí)使用,因此一定要利用ffmpeg -formats 確 認(rèn)輸入的編解碼器是否能運(yùn)作。

范例

將MPEG-1影片轉(zhuǎn)換成MPEG-4格式之范例

#ffmpeg -i inputfile.mpg -f mp4 -acodec libfaac -vcodec mpeg4 -b 256k -ab 64k outputfile.mp4  

將MP3聲音轉(zhuǎn)換成MPEG-4格式之范例

#ffmpeg -i inputfile.mp3 -f mp4 -acodec libaac -vn -ab 64k outputfile.mp4  

將DVD的VOB檔轉(zhuǎn)換成VideoCD格式的MPEG-1檔之范例

#ffmpeg -i inputfile.vob -f mpeg -acodec mp2 -vcodec mpeg1video -s 352x240 -b 1152k -ab 128k outputfile.mpg  

將AVI影片轉(zhuǎn)換成H.264格式的M4V檔之范例

#ffmpeg -i inputfile.avi -f mp4 -acodec libfaac -vcodec libx264 -b 512k -ab 320k outputfile.m4v  

將任何影片轉(zhuǎn)換成東芝REGZA可辨識(shí)的MPEG2格式之范例

#ffmpeg -i inputfile -target ntsc-svcd -ab 128k -aspect 4:3 -s 720x480 outputfile.mpg  

連接復(fù)數(shù)的AVI影片檔之范例(在此范例中須一度暫時(shí)將AVI檔轉(zhuǎn)換成MPEG-1檔(MPEG-1, MPEG-2 PSDV格式亦可連接)、

#ffmpeg -i input1.avi -sameq inputfile_01.mpg  
#ffmpeg -i input2.avi -sameq inputfile_02.mpg  
#cat inputfile_01.mpg inputfile_02.mpg > inputfile_all.mpg  
#ffmpeg -i inputfile_all.mpg -sameq outputfile.avi  

=============================================================================

http://ffmpeg.org/ffmpeg-doc.html

http://ubuntuforums.org/showthread.php?t=1392026

同時(shí)搞明白的一些問(wèn)題

在alsa 體系中聲卡(也可能是麥克風(fēng),)叫hw:0,0 而在oss 體系中叫/dev/dsp (用詞可能不太專業(yè)) Linux在安裝了聲卡后,會(huì)有一些設(shè)備文件生成。

采集數(shù)字樣本的/dev/dsp文件,針對(duì)混音器的/dev/mixer文件,用于音序器的/dev/sequencer,/dev/audio文件一個(gè) 基于兼容性考慮的聲音設(shè)備文件。只要向/dev/audio中輸入wav文件就能發(fā)出聲音。而對(duì)/dev/dsp文件讀取就能得到WAV文件格式的聲音文 件。

用ffmpeg將rmvb壓制成mp4

1、查看rmvb屬性

轉(zhuǎn)換之前先查看一下文件屬性,將分辨率等信息看一下,如果分辨率超過(guò)960*640就需要調(diào)整。順便看一下碼率,壓制成x264的時(shí)候參考一下。

ffmpeg -i 文件名 

2、壓制成mp4

1).pass1編碼

ffmpeg -i 01.rmvb -an -vcodec libx264 -b 560k -pass 1 -f mp4 -y NUL   

-an : 不編碼音頻

-vcodec : 設(shè)置視頻的編碼,我這里使用的是x264

-b : 這個(gè)是碼率

-f : 強(qiáng)制使用格式

-y : 自動(dòng)輸y確認(rèn)

NUL : 因?yàn)槭莗ass1 所以不需要輸出文件,直接用NUL

2).pass2編碼

ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -pass 2 -f mp4 01.mp4   

因?yàn)楝F(xiàn)在很多rmvb的音頻部分都是aac編碼的,所以可以直接用-acodec copy復(fù)制音頻部份

3、針對(duì)某些文件的參數(shù)調(diào)整

有些rmvb或著mkv之類的分辨率比較高,所以傳到itouch需要調(diào)整一下。在ffmpeg里面可以用-s參數(shù):ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -s 960x640 -f mp4 01.mp4 

ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -s 960x640 -f mp4 01.mp4 

960x640需要自己計(jì)算一下,按比例進(jìn)行調(diào)整

按時(shí)間截取

ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -ss 00:00:00 -t 00:01:00 -f mp4 01.mp4  

設(shè)置B-frame對(duì)動(dòng)畫片有些好處,2pass的時(shí)候不是很明顯,1pass的比較明顯:

ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -bf 6 -f mp4 01.mp4 

標(biāo)簽:臨沂 烏蘭察布 北海 邢臺(tái) 撫州 韶關(guān) 南昌 防城港

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《linux下ffmpeg的使用方法詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    清苑县| 云梦县| 和静县| 林甸县| 阿拉尔市| 平定县| 奎屯市| 偃师市| 锦州市| 大英县| 孟州市| 织金县| 洛隆县| 桃源县| 区。| 栾川县| 米林县| 大港区| 杭锦后旗| 唐河县| 泾源县| 疏附县| 潞城市| 苗栗县| 秦安县| 桐梓县| 南和县| 城口县| 宝山区| 额尔古纳市| 闸北区| 两当县| 莱西市| 德江县| 邢台市| 洪雅县| 勃利县| 岳西县| 莒南县| 渭南市| 兴义市|