仅使用 ffmpeg 录制应用程序音频

仅使用 ffmpeg 录制应用程序音频

我想使用 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 编码指南

相关内容