FFmpeg进阶:各种输入输出设备
文章目录
- 查看设备列表
- 输入设备介绍
- 输出设备介绍
查看设备列表
我们可以通过ffmpeg自带的工具查看系统支持的设备列表信息, 对应的指令如下所示:
ffmpeg -devices
输入设备介绍
通过配置ffmpeg的输入设备,我们可以访问系统中的某个多媒体设备的数据。下面详细介绍一下各个系统中的常见设备。
1.alsa
ALSA(Advanced Linux Sound Architecture——高级Linux音频架构)是Linux系统中用来采集音频的输入设备。如果需要使用这个设备, 系统需要安装libasound库。
使用ffmpeg采集alsa设备音频的命令如下所示:
ffmpeg -f alsa -i hw:0 output.wav
2.avfoundation
AVFoundation是当前Apple OSX(>=10.7)下建议采用的流采集框架,它在IOS上也是可用的。而老的QTKit框架从OSX10.7开始已经废弃。我们可以通过avfoundation采集音频和视频。对应的命令如下所示:
//从视频设备0和音频设备0采集输出到out.avi
ffmpeg -f avfoundation -i “0:0” out.avi
3.decklink
decklink输入设备提供从Blackmagic DeckLink采集的能力
4.dshow
Windows DirectShow 输入设备,DirectShow在ffmpeg中由mingw-w64项目提供支持。当前只有音频和视频设备能够使用。多个单独输入的设备可能被打开,但它们也可能打开相同的输入,这将改善他们之间的同步。常用的命令行示例:
//输出DirectShow支持的设备列表ffmpeg -list_devices true -f dshow -i dummy//打开摄像头
ffmpeg -f dshow -i video=”Camera”//打开摄像头和麦克风
ffmpeg -f dshow -i video="Camera":audio="Microphone"//输出选择设备支持的选项列表
ffmpeg -list_options true -f dshow -i video="Camera"
5.fbdev
Linux framebuffer(Linux帧缓冲)输入设备,是一种独立于硬件的图像抽象层,它用于在计算机屏幕上显示图像,通常是在控制台(环境)。它可以通过一个文件设备节点访问,通常为:
/dev/fb0
//录像命令
ffmpeg -f fbdev -r 10 -i /dev/fb0 out.avi
//截屏命令
ffmpeg -f fbdev -frames:v 1 -r 1 -i /dev/fb0 screenshot.jpeg
6.gdigrab
Win32 GDI屏幕截取设备,这个设备允许你截取显示在Windows(系统)上的屏幕区域。它有两个可选的输入形式:desktop或title=window_title, desktop会截取整个桌面或者桌面的指定区域,第二个可选名(根据窗口标题)会截取单独的窗口,而无论在屏幕上的位置(即使根据某些操作,该窗口已经移除屏幕可见区域,或者被其他窗口覆盖了也可以截取到。
//截取整个桌面
ffmpeg -f gdigrab -framerate 6 -i desktop desktop.mpg//截取桌面的一部分
ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg//截取名称为Calculator应用的图
ffmpeg -f gdigrab -framerate 6 -i title=Calculator output.mpg
7.iec61883
使用 iec61883的FireWire(火线)DV/HDV输入设备。要允许这个输入设备,需要libiec61883 ,libraw1394和libavc1394被安装到系统中。此外还要在编译时配置 --enable-libiec61883 以支持。
8.jack
JACK输入设备, 为了能使用JACK设备,需要系统上存在libjack。
9.lavfi
Libavfilter输入虚拟设备, 这个输入设备可以从libavfilter滤镜链图的一个开放输出端口读取数据。对于每个滤镜链图开放输出端口,这个输入设备将创建一个对应的流映射到这个端口进行输出。当前只支持视频数据。
10.libcdio
基于libcdio的音乐CD输入设备。需要系统中有libcdio才能启用,且编译时需要用 --enable-libcdio 配置选项允许。设备允许从音频CD播放和获取。
11.openal
这个OpenAL输入设备支持在所有实现了OpenAL 1.1的系统上进行音频捕获。要编译使用它需要系统包含OpenAL头和libraries库,并且设置编译选项 --enable-openal OpenAL 头和 libraries 库可以是你OpenAL实现的部分,或者作为附件下载(SDK)。根据你的安装方式,你可能需要通过–extra-cflags和–extra-ldflags为编译指定本地的头文件和库文件。
12.qtkit
QTKit输入设备,文件名作为设备名或者索引序号参数被传递。设备索引也可以使用 -video_device_index选项来设定。一个获取的设备索引可以覆盖任何获取的设备名。如果所需的设备仅包含数字,则使用 -video_device_index来识别。如果文件名为空字符串或者设备名为"default"都会选择默认设备。有效设备可以由-list_devices枚举。
13.x11grab
X11视频输入设备使用需要libxcb库,它会在编译时自动检测。另外,配置–enable-x11grab以对应遗留的Xlib用户。这个设备允许捕获X11显示区域。
//ffmpeg捕获(10,20)开始的屏幕尺寸,更详细参数请参照X11文档
ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
输出设备介绍
1.alsa
ALSA(Advanced Linux Sound Architecture) 音频输出设备
//在默认ALSA设备播放
ffmpeg -i INPUT -f alsa default
//在声卡1的7音频设备播放
ffmpeg -i INPUT -f alsa hw:1,7
2.caca
CACA输出设备,这个输出设备允许在CACA窗口显示视频流。每个程序仅有一个CACA窗口。所以在一个实例中你只能有一个CACA输出。
//强制一个80x25的CACA窗口输出
ffmpeg -i INPUT -vcodec rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca
//列出有效设备并退出
ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true
3.decklink
在Blackmagic DeckLink设备输出回放。编译需要Blackmagic DeckLink SDK,以及配置 --extra-cflags和–extra-ldflags以允许。在Windows下,你需要通过widl运行IDL文件。
4.opengl
OpenGL输出设备, 编译允许配置选项–enable-opengl, 这个输出设备允许渲染输出OpenGL内容。内容可以是由程序提供或者默认创建的的SDL窗口。
//用OpenGL渲染播放到SDL窗口
ffmpeg -i INPUT -f opengl "window title"
5.sdl
SDL(Simple DirectMedia Layer)输出设备, 其可以允许在SDL窗口上显示视频流。每个进程仅能创建一个SDL窗口所以你的程序实例只有一个SDL设备输出。编译需要libsdl库。
6.andio
sndio 音频输出设备
7.xv
XV(XVideo)输出设备, 这个X环境设备允许在Xwindow系统的一个窗口上显示视频流。
相关文章:
FFmpeg进阶:各种输入输出设备
文章目录查看设备列表输入设备介绍输出设备介绍查看设备列表 我们可以通过ffmpeg自带的工具查看系统支持的设备列表信息, 对应的指令如下所示: ffmpeg -devices输入设备介绍 通过配置ffmpeg的输入设备,我们可以访问系统中的某个多媒体设备的数据。下面详细介绍一下各个系统中…...
使用Shell笔记总结
一、变量 1、定义变量不加$符号,使用变量要用$;等号两边不能直接接空格符;通常大写字符为系统默认变量,自行设定变量可以使用小写字符。 2、双引号内的特殊字符如 $ 等,可以保有其符号代表的特性,即可以有…...
反常积分的审敛法
目录 无穷先的反常积分的审敛法 定理1:比较判别法 例题: 比较判别法的极限形式: 例题: 定理3:绝对收敛准则 例题: 无界函数的反常积分收敛法 例题: 无穷先的反常积分的审敛法 定理1&#x…...
python实战应用讲解-【numpy专题篇】numpy常见函数使用示例(十三)(附python示例代码)
目录 Python numpy.ma.mask_or()函数 Python numpy.ma.notmasked_contiguous函数 Python numpy.ma.notmasked_edges()函数 Python numpy.ma.where()函数 Python Numpy MaskedArray.all()函数 Python Numpy MaskedArray.anom()函数 Python Numpy MaskedArray.any()函数 …...
Java设计模式(十九)—— 桥接模式
桥接模式定义如下:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 适合桥接模式的情景如下: 不希望抽象和某些重要的实现代码是绑定关系,可运行时动态决定抽象和实现者都可以继承的方式独立的扩充,程序在运行…...
多线程并发安全问题
文章目录并发安全问题线程安全性死锁定义实现一个死锁查看死锁解决死锁其他线程安全问题单例模式并发安全问题 线程安全性 线程安全是指我们所写的代码在并发情况下使用时,总是能表现出正确的行为;反之,未实现线程安全的代码,表…...
P1005 [NOIP2007 提高组] 矩阵取数游戏
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 ��nm 的矩阵,矩阵中的每个元素 ��,�ai,j 均为非负整数。游戏规则如下: 每次取数时须从每行各取走一个元素ÿ…...
百度云【人脸识别】
目录 1:百度云【人脸识别云服务】 2:Java-SDK文档 3:项目中测试 1:百度云【人脸识别云服务】 人脸识别云服务 包含实名认证、人脸对比、人脸搜索、活体检测等能力。灵活应用于金融、泛安防等行业场景,满足身份核验…...
强化模板模块
一、非类型模板参数 模板参数分为 类型模板参数(C模板的零基础讲解)和非类型模板参数。 看下面的代码 #define N 10 //T就是类型模板参数 template<class T> class Array { private:T a[N]; }; int main() {Array<int> a1;Array<double> a2;return 0; }上面…...
Vue.js学习详细课程系列--共32节(6 / 6)
Vue.js学习课程(6 / 6)29. 组件:参数验证知识点组件的数据综合例30. 组件:事件传递知识点v-on$emit综合例31. 组件:slot插槽知识点slot综合例32. 组件:组合slot知识点slot命名综合例29. 组件:参…...
【TFT屏幕】1.44寸彩屏
文章目录一.硬件层——引脚配置的移植二.应用层——显示函数的移植1. 移植显示一个字符函数2. 移植显示数字函数3.叠加方式选择一.硬件层——引脚配置的移植 宏定义的方式,直接修改引脚,实测可直接更改,非常方便移植 /*******************…...
vue3组合式api
文章目录组合式API介绍什么是组合式 API?为什么要有组合式 API?更好的逻辑复用更灵活的代码组织Option ApiOption Api的缺陷Composition Api更好的类型推导更小的生产包体积与选项式 API 的关系取舍组合式 API 是否覆盖了所有场景?可以同时使…...
Maven高级-私服
Maven高级-私服6,私服6.1 私服简介6.2 私服安装步骤1:下载解压步骤2:启动Nexus步骤3:浏览器访问步骤4:首次登录重置密码6.3 私服仓库分类6.4 本地仓库访问私服配置步骤1:私服上配置仓库步骤2:配置本地Maven对私服的访问权限步骤3:配置私服的访问路径6.5 私服资源上传…...
网络优化小结
网络基础知识 OSI七层网络架构 OSI简称Open System Intercnnect,开放式系统互联,是一个国际互联网标准制定的一个组织 应用层 实际应用场景,比如 浏览器、文件传输、电子邮件、文件服务、虚拟终端等; http、FTP、ssh等 表示层…...
Android 11.0 原生SystemUI下拉通知栏UI背景设置为圆角背景的定制(一)
1.前言 在11.0的系统rom定制化开发中,在原生系统中关于SystemUI下拉状态栏的通知栏的每条通知的背景是白色的四角的背景, 由于在产品设计中,需要把四角背景默认改成白色的圆角背景,所以就需要分析系统原生下拉通知栏的每条通知的默认背景, 这就需要了解11.0的systemui的通…...
个人练习-Leetcode-1942. The Number of the Smallest Unoccupied Chair
题目链接:https://leetcode.cn/problems/the-number-of-the-smallest-unoccupied-chair/ 题目大意:给出一群人到达一个排队的时间和离开派对的时间[arr, lev]。有无数个座位,下标从0开始。当一个人在tm时刻离开时,如果一个人在tm…...
EMC经典问答85问(59-62问)
59、用双向可控硅控制直流电机的调速,但电机会干扰电源影响过零检则,造成不受控或速度妀变。请各位指教! 答 1: 出现这中现象的可能性有:1、电机属于非阻性负载,所以电路中产生相位移动,导致控制不准&#…...
Java面向对象 - 封装、继承和多态的综合练习(答案+知识点总结)第1关:封装、继承和多态进阶(一)+ 第2关:封装、继承和多态进阶(二)
目录 第1关:封装、继承和多态进阶(一) 报错总结 & 注意事项: 第2关:封装、继承和多态进阶(二) 源码: 报错总结 & 注意事项: 思维导图免费制作网站…...
小迪安全day20WEB漏洞-文件上传之基础及过滤方式
小迪安全day20WEB漏洞-文件上传之基础及过滤方式 什么是文件上传漏洞 有文件上传就可以测试是否有漏洞,关键看代码是否完备。 服务端代码未对客户端上传的文件进行严格的验证和过滤 漏洞危害 自定义网站后门,获取网站权限,属于高危漏洞。 上…...
LeetCode236.最近的公共祖先
求解最近公共祖先的算法 分为两个步骤: 求出两节点路径取两路径上最后一个相同的节点(该节点即为p,q节点的最近公共祖先) 节点路径的算法设计与实现 求节点路径即输入二叉树根节点与待求节点返回根节点到该节点路径上的所有节…...
G-Helper:华硕笔记本电池健康管理的终极轻量化解决方案
G-Helper:华硕笔记本电池健康管理的终极轻量化解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地…...
咱们今天来唠唠机器人轨迹规划那点事儿。不少小伙伴在玩机械臂的时候总会遇到关节空间和笛卡尔空间轨迹规划的抉择困难症,这俩货到底有什么区别?直接上硬核代码
matlab笛卡尔空间和关节空间轨迹规划 关节空间机器臂多项式轨迹规划定做,353和333多项式轨迹规划和优化关节空间规划有个大杀器——多项式插值。比如要让机械臂从A点平滑运动到B点,咱们可以玩三次多项式(3-3-3)或者五次多项式&…...
Anthropic调整Claude使用限制以缓解高峰时段需求压力
Anthropic公司周三调整了Claude客户的使用限制策略,在高峰需求时段降低服务功率,以平衡用户需求与其服务交付能力。Anthropic技术团队成员Thariq Shihipar在社交媒体上发布消息称:"为了管理Claude日益增长的需求,我们正在调整…...
MicroOS:Arduino轻量级任务调度内核详解
1. MicroOS:面向Arduino的轻量级任务管理内核概述MicroOS是一个专为Arduino平台设计的极简型实时任务管理器,其核心定位并非替代FreeRTOS或Zephyr等完整RTOS,而是填补Arduino原生loop()单线程模型在多任务调度、精确定时与事件解耦方面的空白…...
收藏!非计算机专业也能转AI大模型?小白/程序员必看,打消转行所有顾虑
当下人工智能(大模型)领域发展势头迅猛,成为职场人眼中的“新风口”,不少就业者都想抓住这波新兴行业的红利,跻身AI赛道。但很多人卡在了起点——担心自己的专业不对口、过往经历不相关,纠结犹豫迟迟不敢迈…...
OpenClaw性能调优:Qwen3-32B在RTX4090D上的参数配置
OpenClaw性能调优:Qwen3-32B在RTX4090D上的参数配置 1. 为什么需要性能调优 当我第一次在RTX4090D上部署Qwen3-32B模型时,本以为高端硬件能轻松应对所有任务。但实际使用OpenClaw执行自动化流程时,却发现响应时快时慢,有时甚至出…...
AI 模型量化精度控制与评估方法
AI模型量化精度控制与评估方法 随着人工智能技术的快速发展,AI模型在边缘计算、移动设备等资源受限场景中的应用日益广泛。为了在有限的计算资源下保持模型性能,量化技术成为关键手段。量化过程中精度的损失直接影响模型的可靠性,因此量化精…...
【PAT甲级真题】- Is It a Binary Search Tree (25)
题目来源 Is It a Binary Search Tree (25) 题目描述点击链接自行查看 注意点: 这里的二叉搜索树大于等于插到右边 思路简介 一道二叉树模板题(6202年了应该不会还有人不会写二叉树吧bushi ) 一开始想到前序遍历不可能确定一棵树还以为题目…...
Path of Building:流放之路玩家必备的终极Build规划神器
Path of Building:流放之路玩家必备的终极Build规划神器 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 如果你正在玩《流放之路》并为复杂的Build规划感到头…...
著名学者、顶尖大学教授近期失联
点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达点击进入—>【顶会/顶刊】投稿交流群添加微信号:CVer2233,小助手拉你进群!扫描下方二维码,加入CVer学术星球!可以获得最新顶会/顶…...
