使用 FFMPEG 实现录屏和录音

news2025/1/10 2:57:14

        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 键。

在 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指定输出文件名
在 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

 

5. FFmpeg 剪辑:截取合并

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

录制屏幕的部分区域:

"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

 

 

                                                                 老徐,2024/4/23

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1619142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DNS 解析过程

一张图即可说明,如果能看到上图就不用往下看了。下面是上图的文字版解析 a. 用户输入 URL: 当你在浏览器中点击一个链接或输入一个网址时,比如点击一个图片链接 http://www.example.com/image.jpg,这个过程开始于你的设备尝试理解这个地址所…

(mac)Promethues监控之mysqld_exporter(MySQL监控)

搭建Mysqld_exporterPrometheusGrafana监控系统 普罗米修斯是后端数据监控平台,通过Mysqld_exporter收集mysql数据,Grafana将数据用图形的方式展示出来 前提:已安装grafana和promethues 1.下载安装Mysql (1)启动MySQL…

在 Slurm 上运行 Jupyter

1. 背景介绍 现在的大模型训练越来越深入每个组了,大规模集群系统也应用的愈发广泛。一般的slurm系统提交作业分为2种,一种是srun,这种所见即所得的申请方式一般适用于短期的调试使用,大概一般允许的时间从几个小时到1天左右&…

详细分析MySQL中的distinct函数(附Demo)

目录 前言1. 基本知识2. 基础Demo3. 进阶Demo 前言 该函数主要用于去重,对于细节知识,此文详细补充说明 1. 基本知识 DISTINCT 是一种用于查询结果中去除重复行的关键字 在查询数据库时,可能会得到重复的结果行,但有时只需要这…

AIGC时代之 - 怎样更好的利用AI助手 - 指令工程

爆火的AIGC 2022年11月30日,OpenAI发布ChatGPT 3 2022年12月4 日,ChatGPT 3 已拥有超过一百万用户 2023年各种大语言模型开始火爆全球 GPT们,已经成为了我工作和学习的非常重要的工具。 ChatGPT也没那么神奇? 不知道大家有没有…

JS----前端将列表数据转树型数据

前端将列表数据转树型数据 场景:后端返回列表数据,由前端根据业务需求完成树型数据转换, 常用于侧边导航菜单,下拉树型数据项等 export function listToTree(data: []) {var map: any {},tree: any []data.forEach((item: any…

virtualbox 网络设置实现主机和虚拟机互相访问

前言 一般来说,virtualbox 虚拟机的上网模式是 NAT。这样虚拟机可以上网并访问宿主机,但宿主机无法访问虚拟机,也无法 ping 通。下面介绍双网卡模式,实现虚拟机和宿主机能够互相访问 ping 通。 双网卡模式 进入虚拟机的网络设置…

【MySQL】A01、性能优化-语句分析

1、数据库优化方向 A、SQL及索引优化 根据需求写出良好的SQL,并创建有效的索引,实现某一种需求可以多种写法,这时候我们就要选择一种效率最高的写法。这个时候就要了解sql优化 B、数据库表结构优化 根据数据库的范式,设计表结构&…

webpack中mode、NODE_ENV、DefinePlugin、cross-env的使用

本文讲的全部知识点,都是和webpack相关的。如果你之前有疑问,那本文一定能帮你搞清楚。 问题来源一般是类似下面代码(webpack.json中): "scripts": {"dev": "cross-env NODE_ENVdevelopmen…

【快速入门 LVGL】-- 5、Gui Guider界面移植到STM32工程

上篇,我们已学习:【快速入门 LVGL】-- 4、显示中文 工程中添加了两个按钮作示范。运行效果如图: 本篇:把Gui Guider设计好的界面,移植到STM32工程。 特别地: 在使用Gui Guider进行界面设计时,应…

探索SAVI:土壤调整植被指数的意义与应用

​随着遥感技术的不断发展,植被指数成为了评估地表植被覆盖和健康状况的重要工具之一。其中,SAVI(Soil Adjusted Vegetation Index,土壤调整植被指数)作为一种针对土壤表面反射率进行调整的植被指数,在土地…

Linux内核之hook机制:call_void_hook用法实例(六十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

使用2023版BurpSuite半自动化Autorize进行垂直越权测试【图文教程】

本人在使用时BurpSuite v2023.12时,查阅网上资料,发现网上大多是旧版,而旧版跟新版在界面上有些许调整。故记录BurpSuite v2023.12使用教程,用于后续本人回顾。 Autorize工具安装 Extensions→BApp Store→Autorize→Download J…

HTML5+CSS3小实例:炫彩荧光线条登录框

实例:炫彩荧光线条登录框 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-sca…

parallels desktop19.3最新版本软件新功能详细介绍

Parallels Desktop是一款运行在Mac电脑上的虚拟机软件&#xff0c;它允许用户在Mac系统上同时运行多个操作系统&#xff0c;比如Windows、Linux等。通过这款软件&#xff0c;Mac用户可以轻松地在同一台电脑上体验不同操作系统的功能和应用程序&#xff0c;而无需额外的硬件设备…

如何在 Flutter 中制作多种颜色的 TextField

TextField widget 本身并不施加任何样式。相反&#xff0c;它会要求 TextEditingController 生成一个样式化的 TextSpan 对象&#xff0c;即一段带有样式的文本。 TextField 将其样式传递给 TextEditingController &#xff0c;默认实现只是将其放入 TextSpan 对象中&#xff0…

揭开ChatGPT面纱(2):OpenAI主类源码概览

文章目录 〇、使用OpenAI的两个步骤一、初始化方法__init__()1.源码2.参数解析 二、提供的接口1.源码2.接口说明主要接口说明 OpenAI版本1.6.1 〇、使用OpenAI的两个步骤 在上一篇博客中&#xff0c;我实现并运行了一个OpenAI的demo&#xff0c;我们可以发现&#xff0c;想要使…

多商家AI智能名片商城系统(开源版)——构建高效数字化商业新生态

一、项目概述 1、项目背景 1&#xff09;起源 随着数字化时代的快速发展&#xff0c;传统名片和商城系统已经难以满足企业日益增长的需求。商家需要更高效、更智能的方式来展示自己的产品和服务&#xff0c;与消费者进行互动和交易。同时&#xff0c;开源技术的普及也为开发…

科林Linux_3 进程

一、进程基础 操作系统基础的执行单元&#xff0c;调度单位 静态数据&#xff1a;只占用磁盘空间&#xff0c;不消耗其他资源 动态数据&#xff1a;磁盘 内存 CPU 1. 编译器将源码编译成一个可执行文件.exe/.elf 2. 运行后系统生成一个同名的进程 程序是进程的静态表现&a…

用 LM Studio 1 分钟搭建可在本地运行大型语言模型平台替代 ChatGPT

&#x1f4cc; 简介 LM Studio是一个允许用户在本地离线运行大型语言模型&#xff08;LLMs&#xff09;的平台&#xff0c;它提供了一种便捷的方式来使用和测试这些先进的机器学习模型&#xff0c;而无需依赖于互联网连接。以下是LM Studio的一些关键特性&#xff1a; 脱机&am…