有些時候咱們須要對屏幕進行錄製,好比製做視頻教程,錄製直播等。然而這方面的軟件可能是收費的,即便是免費試用版的還有水印,特別煩人。下面介紹使用FFmpeg進行屏幕錄製的方法。ide
Windows
先安裝dshow軟件 Screen Capturer Recorder, 項目地址:https://sourceforge.net/projects/screencapturer/files/ 。而後查看可用設備名字:編碼
1
|
ffmpeg -list_devices true -f dshow -i dummy
|
會顯示spa
DirectShow video devices (some may be both video and audio devices)
「screen-capture-recorder」 //視頻設備
DirectShow audio devices
「virtual-audio-capturer」 //音頻設備.net
就能看到咱剛安裝的Screen Capturer Recorder,若是你有其餘的設備,好比攝像頭,麥克風等,也會顯示。code
錄製視頻(默認參數)orm
1
|
ffmpeg -f dshow -i video="screen-capture-recorder" v-out.mp4
|
錄製聲音(默認參數)視頻
1
|
ffmpeg -f dshow -i audio="virtual-audio-capturer" a-out.aac
|
同時錄製聲音和視頻(默認參數)htm
1
|
ffmpeg -f dshow -i video="screen-capture-recorder":audio="virtual-audio-capturer" av-out.mp4
|
查看視頻錄製的可選參數教程
1
|
ffmpeg -f dshow -list_options true -i video="screen-capture-recorder"
|
個人設備有以下顯示
DirectShow video device options (from video devices)
Pin 「Capture」 (alternative pin name 「1」)
pixel_format=bgr0 min s=1×1 fps=0.02 max s=1680×1050 fps=30
pixel_format=bgr0 min s=1×1 fps=0.02 max s=1680×1050 fps=30
pixel_format=bgr24 min s=1×1 fps=0.02 max s=1680×1050 fps=30
pixel_format=rgb555le min s=1×1 fps=0.02 max s=1680×1050 fps=30
pixel_format=rgb555le min s=1×1 fps=0.02 max s=1680×1050 fps=30
pixel_format=rgb8 min s=1×1 fps=0.02 max s=1680×1050 fps=30
pixel_format=yuv420p min s=1×1 fps=0.02 max s=1680×1050 fps=30
示例視頻錄製(依次設置:分辨率 幀率 像素格式)
1
|
ffmpeg -f dshow -video_size 1680x1050 -framerate 30 -pixel_format yuv420p -i video="screen-capture-recorder" v-out.mp4
|
查看音頻設備可選參數
1
|
ffmpeg -f dshow -list_options true -i audio=virtual-audio-capturer
|
指定參數錄製音視頻
1
|
ffmpeg -f dshow -video_size 1680x1050 -framerate 30 -pixel_format yuv420p -i video="screen-capture-recorder":audio="virtual-audio-capturer" av-out.mp4
|
Linux
使用x11grab,相信Linux用戶都是高手,自行查看安裝方法吧,點我查看。
安裝完以後,能夠錄製了
1
|
ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 v-out.mp4
|
上面的參數,指的是從屏幕的左上角(x=100, y=200)的位置,錄製分辨率爲1024×768的視頻。
能夠使用ALSA同時錄製聲音
1
|
ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f alsa -ac 2 -i hw:0 av-out.mkv
|
也能夠使用Pulse聲音輸入設備
1
|
ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f pulse -ac 2 -i default av-out.mkv
|
OS X
使用 avfoundation ,而後查看可用設備
1
|
ffmpeg -f avfoundation -list_devices true -i ""
|
選用可用的相應的音視頻設備,進行屏幕錄製
1
|
ffmpeg -f avfoundation -i "<screen device index>:<audio device index>" av-out.mov
|
提示
若是電腦配置比較低,可能不能很好的錄製屏幕的同時進行音視頻編碼。這種狀況下,能夠先錄製未壓縮的音視頻,最後再進行音視頻編碼壓縮。
Linux:
1
|
ffmpeg -framerate 25 -video_size 1024x768 -f x11grab -i :0.0+100,200 -f alsa -ac 2 -i pulse -vcodec libx264 -crf 0 -preset ultrafast -acodec pcm_s16le output.mkv ffmpeg -i output.mkv -acodec ... -vcodec ... final.mkv
|
Windows:
1
|
ffmpeg -f dshow -i video="screen-capture-recorder":audio="Microphone" -vcodec libx264 -crf 0 -preset ultrafast -acodec pcm_s16le output.mkv
|
1
|
ffmpeg -i output.mkv -acodec ... -vcodec ... final.mkv
|
無損格式錄製
若是想要完美的屏幕錄製效果,能夠使用x264進行無損編碼
1
|
ffmpeg -video_size 1920x1080 -framerate 30 -f x11grab -i :0.0 -c:v libx264 -qp 0 -preset ultrafast capture.mkv
|
「-qp 0″是x264無損編碼模式,「-preset ultrafast」表示最快的速度編碼。