使用 FFmpeg 实现录屏和录音

ops/2024/9/23 10:50:59/

        FFmpeg 是一个非常强大的开源工具,可以用来处理音频和视频。可以实现录屏和录音,也可以进行简单的剪辑。

        要使用 FFmpeg 进行录屏和录音,需要首先确保系统已经安装了 FFmpeg。在大多数 Linux 发行版中,可以通过包管理器(如 apt 或 yum)来安装。在 Windows 或 Mac 上,需要从 FFmpeg 的官方网站下载并安装。

1. 录屏

        使用 FFmpeg 进行录屏,可以使用 ffmpeg 命令配合 -f x11grab(在 Linux 下)或 -f gdigrab(在 Windows 下)选项。

在 Windows 下录屏:

打开命令行工具,输入以下命令,开始录制整个桌面:

ffmpeg -f gdigrab -framerate 30 -i desktop output.mp4

其中:

  • -f gdigrab指定输入设备为屏幕
  • -framerate 30 指定帧率为 30 fps
  • -i desktop 指定输入设备为屏幕
  • output.mp4 指定输出文件名

        要停止录屏,可以按下 Ctrl+C 键。

录制某个窗口,输入以下命令:

ffmpeg -f gdigrab -framerate 30 -i title=ffmpeg output.mp4

录制带偏移量的某个窗口,输入以下命令:

ffmpeg -f gdigrab -framerate 30 -offset_x 50 -offset_y 50 -video_size 400x400 -i title=ffmpeg output.mp4

在 Linux 下录屏:

ffmpeg -f x11grab -s 1920x1080 -r 30 -i :0.0 -c:v libx264 -preset veryfast output.mp4

这个命令会从屏幕的左上角(:0.0)开始,以 1920x1080 的分辨率,30 帧每秒的速度进行录屏,并使用 H.264 编码(libx264)保存为 output.mp4。

2. 录音

要使用 FFmpeg 进行录音,可以使用 ffmpeg 命令配合 -f alsa(在 Linux 下)或 -f dshow(在 Windows 下)选项。

在 Windows 下录音:

打开命令行工具,输入以下命令,开始录音:

ffmpeg -f dshow -i audio="Stereo Mix" output.wav

其中:

  • -f dshow 指定输入设备为 DirectShow 音频设备
  • -i audio="Stereo Mix" 指定输入设备为 Stereo Mix 音频设备(根据实际情况修改)
  • output.wav指定输出文件名

如果不确定系统有哪些可用音视频设备,可以使用下面的命令来查看:
ffmpeg -list_devices true -f dshow -i dummy

在 Linux 下录音:

ffmpeg -f alsa -i hw:0 output.wav

这个命令会从默认的音频设备(hw:0)开始录音,并保存为 WAV 格式的 output.wav 文件。

3. 同时录屏和录音

要同时录屏和录音,你可以使用 FFmpeg的映射(mapping)功能。

在 Windows 下录屏录音:

ffmpeg -f gdigrab -framerate 30 -i desktop -f dshow -i audio="Stereo Mix" output.mp4

在 Linux 下录屏录音:

ffmpeg -f x11grab -s 1920x1080 -r 30 -i :0.0 -f alsa -i hw:0 -c:v libx264 -preset veryfast -c:a aac -strict experimental output.mp4

这个命令会同时从屏幕的左上角(:0.0)和默认的音频设备(hw:0)开始,以 1920x1080 的分辨率,30 帧每秒的速度进行录屏和录音,并使用 H.264 编码(libx264)和 AAC 编码(aac)保存为output.mp4。

4. FFmpeg 加文字水印

使用 FFmpeg 添加文字水印是一个常见的需求。

ffmpeg -i output001.MP4 -vf "drawtext=fontfile=msyh.ttc:text='老徐AI':fontsize=17:fontcolor=white:x=50:y=360" output002.mp4

给文字水印增加一个框:

ffmpeg -i output001.MP4 -vf "drawtext=fontfile=msyh.ttc:text='ffmpeg':fontsize=17:fontcolor=white:x=50:y=360:box=1:boxcolor=yellow" output002.mp4

5. FFmpeg 剪辑:截取合并

使用 FFmpeg 可以对视频音频进行截取合并等基本的剪辑工作。

使用 Screen Capturer Recorder 录制屏幕的部分区域:

"D:\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin\ffmpeg" -f dshow -i audio="virtual-audio-capturer":video="screen-capture-recorder" -vf crop=720:408:312:415   -crf 16 -y output.mp4

从 2s 开始截取 29s 的长度:

ffmpeg -i output.mp4 -ss 00:00:2 -t 00:00:29 output1.mp4

合并两个文件:

ffmpeg -i output1.mp4 -i output2.mp4 -c:v copy -c:a aac -strict experimental output.mp4

FFmpeg 更加具体和详细的使用方法可以查看帮助:

ffmpeg -h 和 ffmpeg -h full。

                                                                                         老徐,2024/4/23


http://www.ppmy.cn/ops/21245.html

相关文章

Gateway服务网关

一.为什么需要服务网 关 两大特性:高可用和高性能 1、高性能:采用异步的方式调用服务。 在服务的调用方式上面,网关也有一定的要求,API 网关最好是支持 I/O 异步、同步非阻塞的,如果服务是同步阻塞调用,可…

spi接口的基本概念、引脚定义及注意事项

目录 基本概念 引脚定义 注意事项 SPI(Serial Peripheral Interface)是一种同步串行接口技术,广泛应用于微控制器和各种外围设备之间的短距离通信。 基本概念 SPI接口允许微控制器以串行方式与一个或多个外围设备进行通信。它是一种高速、…

verilog 从入门到看得懂---matlab 自动生成verilog

matlab 的强大不用多说,以前经常用simulink 生成c,最近尝试用simulink进行了verilog的生成,方法也很简单。 一个简单的示例如下。 1,新建一个模型文件,并且根据需要进行模型搭建 2.配置HDL生成模块 3.点击 generation…

Android 跨进程通信

Android中常用的跨进程通信方法有以下几种: Intent、Binder、AIDL、Messenger、ContentProvider。 Intent 可以通过Intent传递数据和消息,但是只能传递一些简单的数据类型,比如字符串、整数等。 示例: 从一个应用程序发送一个字…

【紫光同创盘古PGX-Lite 7K教程】——(盘古PGX-Lite 7K开发板/PGC7KD-6IMBG256第七章)数字钟实验例程

本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com) 适用于板卡型号: 紫光同创PGC7KD-6IMBG256开发平台(盘古PGX-Lite 7K) 仅需一根Ty…

成为程序员后我们都明白了什么?

成为程序员后我们都明白了什么? 作为一名程序员,我获得了很多收获和体会。首先,我发现编程是一项极具挑战性和创造性的工作,让我可以不断学习和成长。通过解决问题和构建应用程序,我可以看到自己的成果,这…

防火墙技术基础篇:认识安全策略、安全区域、域间转发及报文转发流程

防火墙技术基础篇:认识安全策略、安全区域、域间转发及报文转发流程 一、安全策略匹配机制 简单通俗的讲,防火墙设备最基本的用途就是定义数据如何转发,靠什么定义呢?最基本的就是安全策略,当流量来到防火墙之后首先…

【Linux】MySQL的安装及配置(Ubuntu-18.04)

一、安装MySQL 分别安装MySQL服务器、MySQL客户端、C/C开发库 sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install libmysqlclient-dev 二、配置MySQL 1.查看默认配置文件,此处的user和password为默认提供的,…