我想使用 ffmpeg 在截屏时仅使用应用程序音频而不是整个系统音频。如果截屏命令是这样的,我该怎么做?应用程序特定的意思是它可以是来自 chrome 的音频(音频通过互联网从 chrome 输出)
ffmpeg -f x11grab -s `xdpyinfo | grep 'dimensions:'|awk '{print $2}'` -r 25 -i :0.0 -sameq desktop.mkv
我尝试使用脉冲音频但无法使其工作。
如果有人能发布一个可用的脉冲音频设置链接,我将不胜感激。我想通过编程来实现这一点。而且,如果我运行两个独立的音频流,我应该只能捕获一个!我无法使用 pavucontrol 进行设置
答案1
首先不要使用-sameq
:这并不意味着“相同质量”并且最近已从 ffmpeg 中删除。相反,您可以使用 libx264 无损编码:
ffmpeg -f x11grab -s $(xdpyinfo | grep 'dimensions:'|awk '{print $2}') -r 25 -i :0.0 -codec:v libx264 -preset ultrafast -qp 0 lossless.mkv
使用无损编码器速度很快;这意味着您更有可能以声明的帧速率进行实际捕获。但是,输出可能是一个很大的文件,因此捕获完成后通常会将其重新编码为更易于管理的大小:
ffmpeg -i lossless.mkv -codec:v libx264 -preset medium -crf 23 -pix_fmt yuv420p output.mp4
如果您的计算机可以处理它,您可以跳过无损中间步骤并直接编码为普通的有损 H.264 视频。
至于音频,根据如何在 Linux 上正确进行屏幕录制:
问:如何控制 PulseAudio 输入?(例如捕获应用程序音频而不是麦克风)
答:安装“pavucontrol”。开始使用 ffmpeg 录制。启动 pavucontrol。转到“录制”选项卡,您会在那里找到 ffmpeg。将音频捕获从“内部音频模拟立体声”更改为“内部音频模拟立体声监视器”。现在它应该录制系统和应用程序音频,而不是麦克风。
您的 ffmpeg 命令可能看起来像:
ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 30 -s 1024x768 -i :0.0 -codec:a pcm_s16le -codec:v libx264 -preset ultrafast -qp 0 output.mkv
另请参阅FFmpeg 和 x264 编码指南。