Linux下使用"avconv"捕捉錄製桌面視訊及音訊
Libav
是一套跨平臺的庫和工具,用來處理多媒體檔案、流及協議,它原生於ffmpeg
專案。它包含的一些工具如下:
avplay
:視訊、音訊播放器;avconv
:多媒體轉換器,並可以對來自不同源的視訊和音訊進行錄製;avprobe
:連線多媒體流檔案流,並返回多種有用資訊及統計資料的工具;Libavfilter
:為不同Libav
工具提供的過濾器API。
本文將闡釋如何使用Debian
、Ubuntu
或Linux Mint
發行版中的avconv
進行Linux桌面音視訊捕捉錄製。
1. 安裝avconv工具
avconv
是libav-tools
軟體包的一部分,對於如Ubuntu和Mint等所有基於Debain
的發行版,可從官方的資源庫中獲取並進行安裝,命令如下:
$ sudo apt-get update
$ sudo apt-get install libav-tools
注意:從預設資源庫中安裝的軟體包,版本可能有些舊,因此,推薦從官方的git
資源庫中獲取最新版本進行編譯安裝,命令如下:
$ sudo apt-get install yasm
$ git clone git://git.libav.org/libav.git
$ cd libav
$ ./configure
$ make
$ sudo make install
當然,可以執行./configure –help
命令,先列出所有的可選項,進行配置並安裝需要的庫。為了安裝依賴項,可能有大量的工作要做。在使用從原始碼編譯安裝時,要注意操作許可權,可能要使用sudo avconv
而不是avconv
來執行。
2. 開始捕捉錄製桌面視訊
安裝就緒後,可使用下面的命令捕捉錄製桌面視訊:
avconv -f x11grab -r 25 -s 1920x1080 -i :0.0 -vcodec libx264 -threads 4 $HOME/output.avi
簡單地介紹下上面的命令:
avconv -f x11grab
是從X
伺服器捕捉視訊的預設命令;-r 25
是所需的幀頻,可以根據需要進行調整;-s 1920×1080
是視訊的解析度,選定的值不應大於當前系統螢幕最大解析度,否則可能會出現以下錯誤:avconv version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers built on Mar 16 2015 13:19:10 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) [x11grab @ 0x9de2c0] device: :0.0 -> display: :0.0 x: 0 y: 0 width: 1920 height: 1080 [x11grab @ 0x9de2c0] shared memory extension found X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 130 (MIT-SHM) Minor opcode of failed request: 4 (X_ShmGetImage) Serial number of failed request: 11 Current serial number in output stream: 11
-i :0.0
要捕捉錄製的當前X
伺服器的桌面,一般無需改變此值;-vcodec libx264
錄製視訊時所用的編碼庫;-threads 4
,錄製時所用的執行緒數,根據需要調整合適的值;$HOME/output
,檔案儲存的目標路徑;.avi
,視訊的格式及檔案的副檔名,支援的格式還有.flv
、.mp4
、.wmv
、.mov
和.mkv
等。
在命令列終端中,回車執行該命令後,就自動開始錄製,可以在該命令列終端視窗時使用Ctrl + C
終止錄製。
錄製結束,可使用mplayer或者其他的多媒體播放器進行播放,或者可以使用此Libav
包中自帶avplay
工具進行播放,命令如下:
$ avplay $HOME/output.avi
注意:切勿忘記修改檔案儲存的目標路徑。
3. 捕捉錄製桌面的音訊
如果要捕捉錄製音訊,首先執行下面的命令來列出所有可用的音訊輸入源:
$ arecord -l
該命令可能的輸出如下:
card 0: SB [HDA ATI SB], device 0: ALC892 Analog [ALC892 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: SB [HDA ATI SB], device 2: ALC892 Alt Analog [ALC892 Alt Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 1/1
Subdevice #0: subdevice #0
就我當前的系統而言,有card 0
和card 2
兩塊卡作為音訊輸入源卡(儘管card 2
是偽裝置),依次執行下面的命令來捕捉錄製桌面的音訊:
avconv -f alsa -i hw:0 output.wav
如果錄製成mp3
格式,可採用下面的命令:
avconv -f alsa -i hw:0 -acodec libmp3lame output.mp3
或 avconv -f alsa -i hw:0 output.mp3
如果系統支援多執行緒,也可採用下面的命令:
avconv -f alsa -i hw:0 -acodec libmp3lame -threads 4 output.wav
對以上命令的簡單解釋:
-f alsa
,捕捉音訊的裝置源可選項,其他的還有dv1394
、jack
、fbdev
、oss
及pulse
等;-i hw:0
,對應alsa
裝置的音訊輸入源,此選項中0
與arecord -l
命令輸出中card 0
對應。
但採用alsa
時,錄製成的音訊可能比源音訊來音量小,推薦採用下面的方式改進:
1) 先執行下面的路徑,找到pulse
的源裝置:
$ pactl list sources | grep analog-stereo.monitor
該命令的輸出可能如下:
Name: alsa_output.pci-0000_00_14.2.analog-stereo.monitor
Name: alsa_output.2.analog-stereo.monitor
2) 接著,採用-f pulse
可選項進行捕捉錄製音訊,命令如下:
avconv -f pulse -i alsa_output.pci-0000_00_14.2.analog-stereo.monitor output.wav
按下Ctrl + C
,終止錄製。
4. 同時捕捉錄製桌面的視訊和音訊
同時錄製桌面的視訊和音訊命令如下:
$ avconv -f alsa -i hw:0 -f x11grab -r 25 -s 1920x1080 -i :0.0 -vcodec libx264 -threads 4 output-02.avi
為改進音訊的音量大小,推薦使用下面的命令:
$ avconv -f pulse -i alsa_output.pci-0000_00_14.2.analog-stereo.monitor -f x11grab -r 25 -s 1920x1080 -i :0.0 -vcodec libx264 -threads 4 output-file2.avi
如果音訊採用mp3
進行壓縮編碼,可採用下面的命令:
$ avconv -f pulse -i alsa_output.pci-0000_00_14.2.analog-stereo.monitor -f x11grab -r 25 -s 1920x1080 -i :0.0 -acodec libmp3lame -vcodec libx264 -threads 4 output-file2.avi
參考資料:
相關文章
- 在 Linux 中使用"avconv"工具錄製計算機桌面影片和音訊Linux計算機音訊
- Linux下錄製視訊Linux
- IOS音視訊(二)AVFoundation視訊捕捉iOS
- iOS開發:音訊播放、錄音、視訊播放、拍照、視訊錄製iOS音訊
- Android音視訊之MediaRecorder音視訊錄製Android
- 音訊錄製及視覺化處理音訊視覺化
- Camera2錄製視訊(一):音訊的錄製及編碼音訊
- iOS開發系列--音訊播放、錄音、視訊播放、拍照、視訊錄製(轉)iOS音訊
- 【秒懂音視訊開發】08_音訊錄製音訊
- ffmpeg命令錄製windows音視訊Windows
- 音訊錄製:三星電腦如何錄製音訊?音訊
- iOS ARKit錄製視訊(AVAssetWriter & 有聲音)iOS
- 在伺服器端錄製語音視訊伺服器
- 【秒懂音視訊開發】19_視訊錄製01_命令列命令列
- 【秒懂音視訊開發】09_音訊錄製02_程式設計音訊程式設計
- 電腦錄音工具有什麼,怎麼錄製電視音訊?音訊
- Recordia for Mac快速錄製音訊Mac音訊
- Mac快速錄製音訊:RecordiaMac音訊
- Android 音視訊錄製硬編碼實現Android
- win10怎麼錄螢幕視訊帶聲音 錄製視訊沒有聲音的解決方法Win10
- WPF下的視訊錄製介面設計
- 如何使用系統音訊錄製Mac螢幕?音訊Mac
- 自定義相機採集及視訊編輯(1)-短視訊錄製
- Android音訊處理知識(一)MediaRecorder錄製音訊Android音訊
- 短視訊“音訊化”,音樂“視訊化”音訊
- 音訊_錄音音訊
- iOS採集錄製音視訊API選擇推薦iOSAPI
- 音視訊--音訊入門音訊
- 音視訊–音訊入門音訊
- AVFoundation 文字轉語音和音訊錄製 播放音訊
- Android WebView 實現檔案選擇、拍照、錄製視訊、錄音AndroidWebView
- 微信下載錄音檔案(音軌分離 ffmpeg視訊合成)
- 音視訊--視訊入門
- NCH RecordPad for mac音訊錄製工具Mac音訊
- 螢幕音訊錄製Aiseesoft Screen Recorder音訊AI
- 基於react的錄音及音訊曲線繪製的元件開發React音訊元件
- Chrome 新功能 - 錄製小視訊Chrome
- Android視訊錄製命令screenrecordAndroid