Ubuntu系统腾讯会议使用ffmpeg屏幕录制+声音录制

1.腾讯会议for Linux简介

经过一段时间的开发,腾讯终于搞定了Linux系统下的腾讯会议,腾讯会议目前可以进行远程视频对话,桌面远程展示等等功能,与Windows差异并无两样。但是也存在着一些问题。腾讯会议并没有录制视频的功能。所以对于Linux系统我们采用另外的一种方式进行录制.

2.录制方法

使用ffmpeg库首先需要安装对应的软件.可以从Ubuntu 软件源下载对应所需要的软件包

apt search ffmpeg

找到对应的libffmpeg库以及ffmpeg使用软件就可以下载了

sudo apt install  ffmpeg

2.1 视频录制

视频录制的方法分为以下的几种,对屏幕的录制,对系统声音的录制,对外接麦克风录制
单纯屏幕操作视频的录制不包含音频的录制,录制的命令如下所示

ffmpeg -video_size 1920x1080 -framerate 25 -f x11grab -i $DISPLAY output.mp4

其中video_size参数表示的是录制视频的分辨率大小,通常选取的是和自己主机的屏幕分辨率一致即可录制全部的屏幕.framerate参数表示的是屏幕录制采集的帧数,通常选取的25帧.-f x11grab参数表示的是使用x11grab设备进行录制视频.-i $DISPLAY参数表示的是录制的屏幕,当然也可以选取局部的区域进行录制屏幕,命令如下所示

ffmpeg -video_size 640x480 -framerate 25 -f x11grab -i $DISPLAY.200,500 output.mp4

这里其实表示的就是,我们当前录制的范围选取位置为X=[200,200+640],Y=[500,500+480]这个范围进行屏幕录制.当然,这里我们可以选择录制的视频格式有MP4,MKV,FLV等等各种格式.

2.2 录制系统声音

录制系统声音需要找到对应的音频录制设备,查找音频录制的设备使用到的命令有

pactl list | grep -A2 'Source #'

显示处的音频设备信息如下所示

Source #1
	State: IDLE
	Name: alsa_output.pci-0000_00_1f.3.analog-stereo.monitor
--
Source #2
	State: RUNNING
	Name: alsa_input.pci-0000_00_1f.3.analog-stereo

其中Source #1表示的系统主机的声音,Source #2表示的是插入的耳机声音,这两个是主要的系统录制声音的设备.单独录制音频的命令如下所示

ffmpeg -f pulse -i alsa_output.pci-0000_00_1f.3.analog-stereo.monitor -qscale 0.01 output.mp3

这样就会单独录制系统的声音.录制耳机或者是外部设备的命令如下所示

ffmpeg -f pulse -i alsa_input.pci-0000_00_1f.3.analog-stereo -qscale 0.01 output.mp3

上述命令录制外部设备效果并不是很好,应该是录制的本身的音频信号,并没有经过除噪处理,感觉录制的音频比较嘈杂.

下面的这个命令也是可以录制外部设备的声音

ffmpeg -f alsa -ac 2 -ar 44100 -i pulse -qscale 0.01 output.mp3

2.3 录制音视频

通过上述的讲解,录制系统声音和视频的话,直接录制的命令是

ffmpeg -video_size 1920x1080 -framerate 25 -f x11grab -i $DISPLAY -f pulse -i alsa_output.pci-0000_00_1f.3.analog-stereo.monitor -qscale 0.01 output.mp4

仅仅录制屏幕和耳机声音的话,直接录制的命令如下所示

ffmpeg -video_size 1920x1080 -framerate 25 -f x11grab -i $DISPLAY -f pulse -i alsa_input.pci-0000_00_1f.3.analog-stereo -qscale 0.01 output.mp4

录制视频可能会有视频与音频跟不上节奏,所以使用以下的命令对音视频进行同步修复处理

ffmpeg -y -f x11grab -s 1920x1080 -framerate 30 -i :0 -f pulse -i alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -vf "setpts='(RTCTIME-RTCSTART)/(TB*1000000)'" -af asetpts=N/SR/TB,apad -shortest -c:v libx264 -profile:v high444 -preset:v veryfast -qp:v 0 -pix_fmt yuv444p -c:a flac screencast.mkv

这样就可以进行处理了,一般的参数意义如下所示

-ab bitrate 设置音频码率

-ar freq 设置音频采样率

-ac channels 设置通道 缺省为1

-an 不使能音频记录

-acodec codec 使用codec编解码

3. 遇到的问题

笔者在使用ffmpeg的时候遇到的以下的问题

ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0 output.mp4

ffmpeg version 4.2.3 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9 (GCC)
  configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --docdir=/usr/share/doc/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' --extra-ldflags='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld ' --extra-cflags=' ' --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-version3 --enable-bzlib --disable-crystalhd --enable-fontconfig --enable-frei0r --enable-gcrypt --enable-gnutls --enable-ladspa --enable-libaom --enable-libdav1d --enable-libass --enable-libbluray --enable-libcdio --enable-libdrm --enable-libjack --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libmp3lame --enable-nvenc --enable-openal --enable-opencl --enable-opengl --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librsvg --enable-libsrt --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-version3 --enable-vapoursynth --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg --enable-libzvbi --enable-avfilter --enable-avresample --enable-libmodplug --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-libmfx --enable-runtime-cpudetect
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Invalid MIT-MAGIC-COOKIE-1 key[x11grab @ 0x563d96a71640] Cannot open display :0.0, error 1.
:0.0: Input/output error

Cannot open display :0.0, error 1.表示的是无法打开对应的视频显示设备,主要的问题就是,并不能找到对应的显示设备.我们一般通过查看环境变量来确定显示设备

echo $DISPLAY

所以在指定显示设备的时候一般用$DISPLAY来指定对应的显示设备.

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值