搜索
 找回密码
 立即注册

使用FFmpeg进行屏幕录像和录音

音视频开发进阶 2022-11-17 22:14:20 38

有些时候我们需要对屏幕进行录制,比如制作视频教程,录制直播等。然而这方面的软件多是收费的,即使是免费试用版的还有水印,特别烦人。下面介绍使用FFmpeg进行屏幕录制的方法。

Windows

先安装dshow软件 Screen Capturer Recorder, 项目地址:on screen capture recorder to video free 。然后查看可用设备名字:

<pre class="public-DraftStyleDefault-pre" data-offset-key="1usem-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="1usem-0-0"><div data-offset-key="1usem-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="1usem-0-0"><span data-text="true">ffmpeg -list_devices true -f dshow -i dummy</span></span></div></pre></pre>

会显示

<pre class="public-DraftStyleDefault-pre" data-offset-key="46ub3-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="46ub3-0-0"><div data-offset-key="46ub3-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="46ub3-0-0"><span data-text="true">DirectShow video devices (some may be both video and audio devices)</span></span></div></pre><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="duob1-0-0"><div data-offset-key="duob1-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="duob1-0-0"><span data-text="true">“screen-capture-recorder” //视频设备</span></span></div></pre><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="fniv-0-0"><div data-offset-key="fniv-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="fniv-0-0"><span data-text="true">DirectShow audio devices</span></span></div></pre><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="8g6ia-0-0"><div data-offset-key="8g6ia-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="8g6ia-0-0"><span data-text="true">“virtual-audio-capturer” //音频设备</span></span></div></pre></pre>

就能看到咱刚安装的Screen Capturer Recorder,如果你有其他的设备,比如摄像头,麦克风等,也会显示。

录制视频(默认参数)

<pre class="public-DraftStyleDefault-pre" data-offset-key="8jj9v-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="8jj9v-0-0"><div data-offset-key="8jj9v-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="8jj9v-0-0"><span data-text="true">ffmpeg -f dshow -i video="screen-capture-recorder" v-out.mp4</span></span></div></pre></pre>

录制声音(默认参数)

<pre class="public-DraftStyleDefault-pre" data-offset-key="1mno1-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="1mno1-0-0"><div data-offset-key="1mno1-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="1mno1-0-0"><span data-text="true">ffmpeg -f dshow -i audio="virtual-audio-capturer" a-out.aac</span></span></div></pre></pre>

同时录制声音和视频(默认参数)

<pre class="public-DraftStyleDefault-pre" data-offset-key="blt7f-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="blt7f-0-0"><div data-offset-key="blt7f-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="blt7f-0-0"><span data-text="true">ffmpeg -f dshow -i video="screen-capture-recorder":audio="virtual-audio-capturer" av-out.mp4</span></span></div></pre></pre>

查看视频录制的可选参数

<pre class="public-DraftStyleDefault-pre" data-offset-key="9uleh-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="9uleh-0-0"><div data-offset-key="9uleh-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="9uleh-0-0"><span data-text="true">ffmpeg -f dshow -list_options true -i video="screen-capture-recorder"</span></span></div></pre></pre>

我的设备有如下显示

<pre class="public-DraftStyleDefault-pre" data-offset-key="60sfr-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="60sfr-0-0"><div data-offset-key="60sfr-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="60sfr-0-0"><span data-text="true">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

</span></span></div></pre></pre>

示例视频录制(依次设置:分辨率 帧率 像素格式)

<pre class="public-DraftStyleDefault-pre" data-offset-key="a9mmu-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="a9mmu-0-0"><div data-offset-key="a9mmu-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="a9mmu-0-0"><span data-text="true">ffmpeg -f dshow -video_size 1680x1050 -framerate 30 -pixel_format yuv420p -i video="screen-capture-recorder" v-out.mp4</span></span></div></pre></pre>

查看音频设备可选参数

<pre class="public-DraftStyleDefault-pre" data-offset-key="6r48k-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="6r48k-0-0"><div data-offset-key="6r48k-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="6r48k-0-0"><span data-text="true">ffmpeg -f dshow -list_options true -i audio=virtual-audio-capturer</span></span></div></pre></pre>

指定参数录制音视频

<pre class="public-DraftStyleDefault-pre" data-offset-key="epf21-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="epf21-0-0"><div data-offset-key="epf21-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="epf21-0-0"><span data-text="true">ffmpeg -f dshow -video_size 1680x1050 -framerate 30 -pixel_format yuv420p -i video="screen-capture-recorder":audio="virtual-audio-capturer" av-out.mp4</span></span></div></pre></pre>

Linux

使用x11grab,相信Linux用户动手能力的比较强,自行查看安装方法吧,点我查看。 安装完之后,可以录制了

<pre class="public-DraftStyleDefault-pre" data-offset-key="bl63r-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="bl63r-0-0"><div data-offset-key="bl63r-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="bl63r-0-0"><span data-text="true">ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 v-out.mp4</span></span></div></pre></pre>

上面的参数,指的是从屏幕的左上角(x=100, y=200)的位置,录制分辨率为1024×768的视频。

可以使用ALSA同时录制声音

<pre class="public-DraftStyleDefault-pre" data-offset-key="83l6i-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="83l6i-0-0"><div data-offset-key="83l6i-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="83l6i-0-0"><span data-text="true">ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f alsa -ac 2 -i hw:0 av-out.mkv</span></span></div></pre></pre>

也可以使用Pulse声音输入设备

<pre class="public-DraftStyleDefault-pre" data-offset-key="b39si-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="b39si-0-0"><div data-offset-key="b39si-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="b39si-0-0"><span data-text="true">ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f pulse -ac 2 -i default av-out.mkv</span></span></div></pre></pre>

MacOS

使用avfoundation ,然后查看可用设备

<pre class="public-DraftStyleDefault-pre" data-offset-key="b134q-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="b134q-0-0"><div data-offset-key="b134q-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="b134q-0-0"><span data-text="true">ffmpeg -f avfoundation -list_devices true -i ""</span></span></div></pre></pre>

我的电脑显示如下

<pre class="public-DraftStyleDefault-pre" data-offset-key="ai5ea-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="ai5ea-0-0"><div data-offset-key="ai5ea-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="ai5ea-0-0"><span data-text="true">[AVFoundation input device @ 0x7f83e150fd00] AVFoundation video devices: [AVFoundation input device @ 0x7f83e150fd00] [0] FaceTime HD Camera [AVFoundation input device @ 0x7f83e150fd00] [1] Capture screen 0 [AVFoundation input device @ 0x7f83e150fd00] [2] Capture screen 1 [AVFoundation input device @ 0x7f83e150fd00] AVFoundation audio devices: [AVFoundation input device @ 0x7f83e150fd00] [0] Built-in Microphone</span></span></div></pre></pre>

选用可用的相应的音视频设备,进行屏幕录制

<pre class="public-DraftStyleDefault-pre" data-offset-key="ank2o-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="ank2o-0-0"><div data-offset-key="ank2o-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="ank2o-0-0"><span data-text="true">ffmpeg -f avfoundation -i "<video device index>:<audio device index>" av-out.mov</span></span></div></pre></pre>

-i参数后指定设备序列号,比如使用“[1] Capture screen 0”和“[0] Built-in Microphone”

<pre class="public-DraftStyleDefault-pre" data-offset-key="16ih9-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="16ih9-0-0"><div data-offset-key="16ih9-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="16ih9-0-0"><span data-text="true">ffmpeg -f avfoundation -i "1:0" Screen.mkv # 注意啊 1:0 外面有个双引号</span></span></div></pre></pre>

这里使用的默认参数进行录制的,我电脑生成的是AVC和Vorbis编码的mkv文件。

提示

如果电脑配置比较低,可能不能很好的录制屏幕的同时进行音视频编码。这种情况下,可以先录制未压缩的音视频,最后再进行音视频编码压缩。

Linux:

<pre class="public-DraftStyleDefault-pre" data-offset-key="9lcjq-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="9lcjq-0-0"><div data-offset-key="9lcjq-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="9lcjq-0-0"><span data-text="true">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</span></span></div></pre></pre>

Windows:

<pre class="public-DraftStyleDefault-pre" data-offset-key="9aaii-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="9aaii-0-0"><div data-offset-key="9aaii-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="9aaii-0-0"><span data-text="true">ffmpeg -f dshow -i video="screen-capture-recorder":audio="Microphone" -vcodec libx264 -crf 0 -preset ultrafast -acodec pcm_s16le output.mkv</span></span></div></pre></pre>

<pre class="public-DraftStyleDefault-pre" data-offset-key="dj9hh-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="dj9hh-0-0"><div data-offset-key="dj9hh-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="dj9hh-0-0"><span data-text="true">ffmpeg -i output.mkv -acodec ... -vcodec ... final.mkv</span></span></div></pre></pre>

无损格式录制

如果想要完美的屏幕录制效果,可以使用x264进行无损编码

<pre class="public-DraftStyleDefault-pre" data-offset-key="d5n1d-0-0"><pre class="Editable-styled" data-block="true" data-editor="4vire" data-offset-key="d5n1d-0-0"><div data-offset-key="d5n1d-0-0" class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr"><span data-offset-key="d5n1d-0-0"><span data-text="true"> ffmpeg -video_size 1920x1080 -framerate 30 -f x11grab -i :0.0 -c:v libx264 -qp 0 -preset ultrafast capture.mkv</span></span></div></pre></pre>

“-qp 0″是x264无损编码模式,“-preset ultrafast”表示最快的速度编码。

参考:http://trac.ffmpeg.org/wiki/Capture/Desktop

https://blog.csdn.net/shaosunrise/article/details/81068080?ops_request_misc=&request_id=&biz_id=102&utm_term=FFmpeg%E5%BD%95%E5%B1%8F%E7%9B%B4%E6%92%AD&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-4-81068080.142^v65^control,201^v3^add_ask,213^v2^t3_esquery_v2&spm=1018.2226.3001.4187

使用道具 举报

随机推荐

0 回复

游客
返回顶部