ffmpeg 命令

當然先安裝了 gentoo 下一條命令搞定

emerge  ffmpeg

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

     ffmpeg -i  file.avi   output.flv

       -i 表示輸入文件 

 :現在有個視頻video.avi,有個音頻 audio.mp3,將其合併成output.avi

兩個命令                     ( video2.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) 這個不知怎麼譯 ,估計是直接copy 

  -acodec copy   這個說的應該是音頻了   跟上面一樣

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

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

ffmpeg -i /tmp/a.wav  -i /tmp/a.avi /tmp/a.avi   兩個文件 的順序很重

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

 ffmpeg  -i 人生若只如初見.flv  -vn r.mp3  從flv 文件 中提取聲音並保存爲mp3 格式  

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

 ffmpeg  -i 人生若只如初見.flv  -an  r.flv   只留視頻不留聲音 

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

//

多wav合併

  1. ffmpeg -i Lt.wav -i Rt.wav -map 0,0 -map 1,1 -acodec copy Stereo.mov  

從視頻裏提取圖片( )

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

 -ss 第8秒處 截一圖

壓縮mp3 文件

如果你覺得mp3 文件 有點大,想變小一點那麼可以通過-ab 選項改變音頻的比特率 (bitrate)

ffmpeg -i input.mp3 -ab 128 output.mp3    //這裏將比特率設爲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 就是這個東西

mp3中比特率的含義是:在壓縮音頻文件至mp3時,由壓縮軟件所確定數碼文件在播放時每秒傳 送給播放器大小,其單位是:千位/秒;英文的含義是:kbps - = kilobits per second。現在mp3文件的最高數位率是320 kbps。這樣的文件體積很大,每分鐘的音樂超過兩兆字節。如果採用可變比特率(VBR)編碼來生成mp3文件,獲得與320 kbps相當音質,文件的體積會縮小25~50%。請注意:播放時間相同,而歌曲不同,所獲的壓縮mp3文件的一般不相同,這是因爲VBR編碼所生成的 mp3文件的大小不僅僅取決於播放時間的長度,還取決於源音頻文件的其它因素。


錄音(要有可用的麥克風,並且如果用alsa 的話,好像得安alsa-oss,重啓) 

 ffmpeg  -f oss -i /dev/dsp   out.avi  (should  hava oss or alsa-oss)

 ffmpeg   -f  alsa -ac 2 -i hw:0, 0  out.avi   (should )

 ffmpeg   -f alsa -ac 2 -i pulse  (should hava PulseAudio)

 

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

屏幕錄像

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 表示屏幕(個人理解,因爲系統變量$DISPLAY值就是:0.0)  而100,表示距左端100象素,200表示距上端200

-s 設置窗口大小

  -r 10 好像是設置頻率,不懂

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

-qscale 8 設定畫面質量,值 越小越好

屏幕錄像,同時錄音

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

看到這,你會發現這個命令有多強大,

如果我屏幕上打開了一個窗口,我只想錄這個窗口的內容,如何確定這個窗口的座標位置呢

可以用另外一個命令

xwininfo 輸入這個命令後,用鼠標點選目標窗口,

就會出現目標窗口的座標,寬高等一系列信息

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: 0x21
  Visual Class: TrueColor
  Border width: 0
  Class: InputOutput
  Colormap: 0x20 (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 80x24+274+34 看到這一行了沒 ()

 

比如根據上面的信息

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.

這個 -r 30 應該是每秒鐘取樣幾次,估計是一秒截三十次屏,

切頭去尾

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

只要 從第10秒開始截取,共截取1:22時長的內容

視頻文件的連接,如兩個flv 文件 連接成一

好像必須先將文件 轉成mpg ,dv 等格式的文件後才能進行連接

  • 連接複數的AVI影片檔之範例(在此範例中須一度暫時將AVI檔轉換成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  表示  相同的質量(可能指的是畫面,不太清楚)

 -r 指頻率







=====================================================================下面是wiki 上給的幾個例子

參數

FFmpeg可使用衆多參數,參數內容會根據ffmpeg版本而有差異,使用前建議先參考參數及編解碼器的敘述。此外,參數明細可用 ffmpeg -h 顯示;編解碼器名稱等明細可用 ffmpeg -formats 顯示。

下列爲較常使用的參數。

[編輯 ] 主要參數

  • -i 設定輸入檔名。
  • -f 設定輸出格式。
  • -y 若輸出檔案已存在時則覆蓋檔案。
  • -fs 超過指定的檔案大小時則結束轉換。
  • -ss 從指定時間開始轉換。
  • -title 設定標題。
  • -timestamp 設定時間戳。
  • -vsync 增減Frame使影音同步。

[編輯 ] 影像參數

  • -b 設定影像流量,默認爲200Kbit/秒。( 單位請參照下方注意事項 )
  • -r 設定FrameRate值,默認爲25。
  • -s 設定畫面的寬與高。
  • -aspect 設定畫面的比例。
  • -vn 不處理影像,於僅針對聲音做處理時使用。
  • -vcodec 設定影像影像編解碼器,未設定時則使用與輸入檔案相同之編解碼器。

[編輯 ] 聲音參數

  • -ab 設定每Channel (最近的SVN 版爲所有Channel的總合)的流量。( 單位 請參照下方注意事項 )
  • -ar 設定採樣率。
  • -ac 設定聲音的Channel數。
  • -acodec 設定聲音編解碼器,未設定時與影像相同,使用與輸入檔案相同之編解碼器。
  • -an 不處理聲音,於僅針對影像做處理時使用。
  • -vol 設定音量大小,256爲標準音量。(要設定成兩倍音量時則輸入512,依此類推。)

[編輯 ] 注意事項

  • 以-b及ab參數設定流量時,根據使用的ffmpeg版本,須注意單位會有kbits/sec與bits/sec的不同。(可用ffmpeg -h顯示說明來確認單位。)
例如,單位爲bits/sec的情況時,欲指定流量64kbps時需輸入‘ -ab 64k ’;單位爲kbits/sec的情況時則需輸入‘ -ab 64 ’。
  • 以-acodec及-vcodec所指定的編解碼器名稱,會根據使用的ffmpeg版本而有所不同。例如使用AAC編解碼器時,會有輸入aac與 libfaac的情況。此外,編解碼器有分爲僅供解碼時使用與僅供編碼時使用,因此一定要利用ffmpeg -formats 確 認輸入的編解碼器是否能運作。

[編輯 ] 範例

  • 將MPEG-1影片轉換成MPEG-4格式之範例
ffmpeg -i inputfile.mpg -f mp4 -acodec libfaac -vcodec mpeg4 -b 256k -ab 64k outputfile.mp4

  • 將MP3聲音轉換成MPEG-4格式之範例
ffmpeg -i inputfile.mp3 -f mp4 -acodec libaac -vn -ab 64k outputfile.mp4

  • 將DVD的VOB檔轉換成VideoCD格式的MPEG-1檔之範例
ffmpeg -i inputfile.vob -f mpeg -acodec mp2 -vcodec mpeg1video -s 352x240 -b 1152k -ab 128k outputfile.mpg
  • 將AVI影片轉換成H.264格式的M4V檔之範例
  • ffmpeg -i inputfile.avi -f mp4 -acodec libfaac -vcodec libx264 -b 512k -ab 320k outputfile.m4v
  • 將任何影片轉換成東芝REGZA可辨識的MPEG2格式之範例
  • ffmpeg -i inputfile -target ntsc-svcd -ab 128k -aspect 4:3 -s 720x480 outputfile.mpg
  • 連接複數的AVI影片檔之範例(在此範例中須一度暫時將AVI檔轉換成MPEG-1檔(MPEG-1, MPEG-2 PS
DV格式亦可連接)、

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




同時搞明白的一些問題


在alsa 體系中聲卡(也可能是麥克風,)叫hw:0,0 而在oss 體系中叫/dev/dsp (用詞可能不太專業)  Linux在安裝了聲卡後,會有一些設備文件生





成。







   採集數字樣本的




/dev/dsp文件,針對混音器的




/dev/mixer文件,用於音序器的




/dev/sequencer




/dev/audio文件一個







 







基於兼容性考慮的聲音設備文件。只要向




/dev/audio中輸入




wav文件就能發出聲音。而對




/dev/dsp文件讀取就能得到




WAV文件格式的聲音文




件。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章