ffmpeg命令系列:

FFmpeg命令行使用手册-protocols协议汇总篇
FFmpeg命令行使用手册-devices输入输出设备汇总篇

一、前言

本系列介绍ffmpeg命令行中有关-devices输入输出设备的支持和使用。

输入设备(input devices)用于采集/抓取来自连接到系统的多媒体设备的数据,比如采集麦克风/话筒的音频采样数据,桌面屏幕图像数据,摄像头/相机图像数据等。

输出设备(output devices)用于将多媒体数据写出到系统的输出设备中,比如音频播放设备,窗口,图形渲染设备(openGL上下文、SDL)等。

二、参考资料

本文参考自ffmpeg官方文档:https://ffmpeg.org/ffmpeg-devices.html

三、如何下载和安装ffmpeg

windows平台下载:https://download.csdn.net/download/eguid_1/12567936
mac平台下载:https://download.csdn.net/download/eguid_1/12607297
linux平台下载:linux发行版较多,有些发行版支持ffmpeg,不一一提供,提供ffmpeg官方提供的两个下载链接
http://ffmpeg.org/download.html

https://johnvansickle.com/ffmpeg/

四、如何查看ffmpeg支持的所有输入输出设备

使用ffmpeg命令列出所有ffmpeg支持的设备

ffmpeg.exe -devices

注意:ffmpeg支持的设备列表与每台机器的系统环境和设备环境有关,每台机器可能都不同。

五、ffmpeg支持的devices设备列表

输入设备(input devices)

1. alsa

ALSA(高级Linux声音体系结构)输入设备。
要在配置期间启用此输入设备,您需要在系统上安装libasound。
该设备允许从ALSA设备进行捕获。要捕获的设备的名称必须是ALSA卡标识符。

alsa详细信息:https://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html

1.1 ffmpeg命令

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

1.2 参数说明

hw:CARD[,DEV[,SUBDEV]]

三个参数顺序为:CARD,DEV,SUBDEV
CARD:指定卡号或标识符
DEV:设备号
SUBDEV:子设备号(-1表示任意)

2. android_camera

Android相机输入设备。
基于Android Camera2 NDK API,该API在API级别为24+的设备上可用。在配置过程中会自动检测到android_camera的可用性。
该设备允许从集成在Camera2 NDK API中的Android设备上的所有相机捕获。可用的摄像机在内部进行枚举,可以使用camera_index参数进行选择。输入文件字符串将被丢弃。
通常,背面摄像头的索引为0,而正面摄像头的索引为1。

3. avfoundation

AVFoundation是Apple(苹果公司)当前推荐的多媒体框架,可用于在OSX> = 10.7和iOS上进行流式抓取图像和音频。
可以通过ffmpeg -f avfoundation -list_devices true -i ""列出当前macOS或iOS上支持的抓取设备名称和对应设备的索引号

3.1 ffmpeg命令

ffmpeg -f avfoundation -i “0:0” out.avi

将索引号为0的视频设备和索引号0的音频设备录制成out.avi视频文件

3.2 参数说明

-i “[[VIDEO]:[AUDIO]]”

video:视频设备索引号
audio:音频设备索引号
索引号通过ffmpeg -f avfoundation -list_devices true -i ""命令查看。

4. bktr

BSD视频输入设备。

5. decklink

decklink输入设备为Blackmagic DeckLink设备提供捕获功能。

6.dshow

Windows DirectShow输入设备,用于采集windows下的视频和音频设备。
通过命令 ffmpeg -list_devices true -f dshow -i dummy 查看支持的设备列表,包含设备名称,设备类型等信息。

6.1 ffmpeg命令

ffmpeg -f dshow -i video=“Camera”:audio=“Microphone”

打开摄像头和麦克风

6.2 参数说明

TYPE=NAME[:TYPE=NAME]

TYPE:设备类型,video或者audio
NAME:设备名称(对应命令 ffmpeg -list_devices true -f dshow -i dummy 中输出的设备名称)

7. fbdev

Linux帧缓冲输入设备。
Linux帧缓冲区是独立于图形硬件的图形抽象层,用于在计算机监视器(通常在控制台)上显示图形。通过文件设备节点(通常是/ dev / fb0)访问它。
详情信息:http://linux-fbdev.sourceforge.net/

8.gdigrab

基于Win32 GDI的屏幕捕获设备。可以捕获Windows桌面屏幕显示区域的画面图像,包含windows窗口显示画面。

8.1 ffmpeg命令

捕获桌面屏幕指定区域的画面图像(不加-offset_x 和 -offset_y就是捕获全屏)

ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg

捕获计算器窗口画面图像

ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg

8.2 参数说明

framerate:帧率
desktop:desktop是指输入设备是桌面屏幕
title=window_title :window_title是windows窗口的标题,注意不是进程名称
draw_mouse:是否绘制鼠标,0:不绘制鼠标,1:绘制鼠标(如果为空默认为1)
-offset_x:捕获的区域X坐标,屏幕左上角为起始坐标(0,0),右下角为(screenSize,screenSize)
-offset_y:捕获的区域Y坐标

9. iec61883

使用libiec61883的FireWire DV / HDV输入设备。

10. jack

JACK输入设备

11. kmsgrab

KMS视频输入设备。
将与指定的CRTC或平面关联的KMS扫描输出帧缓冲区捕获为DRM对象,并将其传递给其他硬件功能。
需要DRM主服务器或CAP_SYS_ADMIN才能运行。

12. lavfi

Libavfilter输入虚拟设备。
该输入设备从libavfilter过滤器图的打开的输出垫读取数据。
对于每个filtergraph打开的输出,输入设备将创建一个对应的流,该流映射到生成的输出。当前仅支持视频数据。过滤器图是通过选项图指定的。

13. libcdio

基于libcdio的音频CD输入设备。
要在配置期间启用此输入设备,您需要在系统上安装libcdio。它需要配置选项–enable-libcdio。
此设备允许从音频CD播放和抓取。

14. libdc1394

IIDC1394输入设备,基于libdc1394和libraw1394。

15. openal

OpenAL输入设备通过有效的OpenAL 1.1实施在所有系统上提供音频捕获。OpenAL标头和库应作为OpenAL实施的一部分提供,或作为其他下载(SDK)提供。

16. oss

打开声音系统输入设备。
提供给输入设备的文件名是代表OSS输入设备的设备节点,通常设置为/ dev / dsp。

17. pulse

pulseAudio输入设备。
提供给输入设备的文件名是源设备或字符串“ default”。

18. sndio

sndio输入设备。
提供给输入设备的文件名是代表sndio输入设备的设备节点,通常设置为/ dev/audio0。

19. video4linux2, v4l2

Video4Linux2输入视频设备。“ v4l2”可以用作“ video4linux2”的别名。
如果FFmpeg是使用v4l-utils支持构建的(通过使用–enable-libv4l2配置选项),则可以将其与-use_libv4l2输入设备选项一起使用。
要抓取的设备的名称是文件设备节点,通常,Linux系统会在将设备(例如USB网络摄像头)插入系统时自动创建此类节点,并且名称为/ dev / videoN,其中N是与设备关联的数字。
Video4Linux2设备通常支持一组有限的widthxheight大小和帧速率。您可以使用-list_formats all查看Video4Linux2设备支持的功能。某些设备(例如电视卡)支持一种或多种标准。可以使用-list_standards all列出所有受支持的标准。
时间戳记的时基为1微秒。根据内核版本和配置的不同,时间戳可能来自实时时钟(Unix纪元起源)或单调时钟(通常在引导时起源,不受NTP或手动更改时钟的影响)。 -timestamps abs或-ts abs选项可用于强制转换为实时时钟。

20. vfwcap

VfW(Windows视频)捕获输入设备。作为输入传递的文件名是捕获驱动程序号,范围从0到9,一般用于捕获摄像头图像。
可以使用“ list”作为文件名来查看支持的设备列表。其他任何文件名将被解释为设备号0。

20.1 ffmpeg命令

查看本机支持的设备列表

ffmpeg -y -f vfwcap -i list

捕获摄像头图像并保存成mp4文件

ffmpeg -y -f vfwcap -i 0 out.mp4

20.2 参数说明

video_size:设置抓取的图像大小(例如:800x600)
framerate:帧率,默认30帧

21. x11grab

X11视频输入设备。可以捕获X11显示器的区域。

输出设备

1. alsa

ALSA(高级Linux声音体系结构)输出设备。

2. AudioToolbox

AudioToolbox输出设备。
允许本机输出到OSX上的CoreAudio设备。

3. caca

CACA输出设备。
此输出设备允许在CACA窗口中显示视频流。每个应用程序只允许一个CACA窗口,因此在一个应用程序中只能有一个此输出设备的实例。

4. decklink

decklink输出设备为Blackmagic DeckLink设备提供播放功能。

5. fbdev

Linux帧缓冲输出设备。
Linux帧缓冲区是独立于图形硬件的图形抽象层,用于在计算机监视器(通常在控制台)上显示图形。通过文件设备节点(通常是/ dev / fb0)访问它。
更多详细信息请查看:http://linux-fbdev.sourceforge.net/

6. opengl

OpenGL输出设备。
此输出设备允许渲染到OpenGL上下文。上下文可以由应用程序提供,也可以创建默认的SDL窗口。

7. oss

OSS(开放声音系统)输出设备。

8. pulse

PulseAudio输出设备。
更多信息请查看:http://www.pulseaudio.org。

9. sdl

SDL(简单DirectMedia层)输出设备。“ sdl2”可以用作“ sdl”的别名。
此输出设备允许在SDL窗口中显示视频流。每个应用程序只允许一个SDL窗口,因此在一个应用程序中只能有此输出设备的一个实例。
更多sdl信息请查看:http://www.libsdl.org/

10. sndio

sndio音频输出设备。

11. v4l2

Video4Linux2输出设备。

12. xv

XV(XVideo)输出设备。可以在X Window System窗口中显示视频流。

FFmpeg命令行使用手册-devices输入输出设备汇总篇相关推荐

  1. Linux 命令之 iostat 命令-监视系统输入输出设备和 cpu 的使用情况

    介绍 iostat`命令被用于监视系统输入输出设备和 CPU 的使用情况.它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU 使用情况.同 vmstat 一样,iostat 也有一个弱点,就是它不 ...

  2. 在Android项目中调用FFmpeg命令

    概述 FFmpeg,命令行非常强大.在PC机上,调用一行FFmpeg命令,就可以对视频文件进行剪切.合并.转码等功能.本文将介绍如何在Android中调用FFmpeg命令行. 编译 前面已经有两篇文章 ...

  3. ffmpeg入门教程之ffmpeg命令行------全局命令

    ffmpeg入门教程https://www.jianshu.com/p/042c7847bd8a 视频播放器原理 视音频技术主要包含以下几点:封装技术,视频压缩编码技术以及音频压缩编码技术.如果考虑到 ...

  4. ffmpeg命令解析

    前言 FFMPEG是特别强大的专门用于处理音视频的开源库.你既可以使用它的API对音视频进行处理,也可以使用它提供的工具,如 ffmpeg, ffplay, ffprobe,来编辑你的音视频文件. 本 ...

  5. 音视频编解码流程与如何使用 FFMPEG 命令进行音视频处理

    一.前言 FFMPEG 是特别强大的专门用于处理音视频的开源库.你既可以使用它的 API 对音视频进行处理,也可以使用它提供的工具,如 ffmpeg, ffplay, ffprobe,来编辑你的音视频 ...

  6. FFMPEG命令汇总

    1.ffmpeg使用语法 命令格式:     ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]     ffmpeg [[options][`-i' input_file ...

  7. 《Linux命令速查手册》笔记

    写在前面:我看过很多技术相关的书籍,但是很少有全部看完的.大部分都是看了一小半,甚至是一大半.但是印象中,没有哪一本是全部读完的,哪怕的通读. 不过这本<Linux命令速查手册>,我倒是很 ...

  8. FFmpeg命令行工具-实用命令

    目录 help命令使用 流选择选项 视频封装解封装 3.1 视频格式转换 3.2 分离/合并视频音频流 3.3 截取视频片段 3.4 视频转换为m3u8格式 3.5 把视频文件推送到rtmp服务器 3 ...

  9. ffmpeg命令大全

    ffmpeg命令大全 FFMPEG 目录及作用 FFMPEG基本概念 FFMPEG 命令 基本信息查询命令 主要参数 视频参数 音频参数 录制 录屏 分解与复用 滤镜 简单滤镜 复杂滤镜 直播相关 前 ...

最新文章

  1. 设置Socket缓冲区
  2. 如何做好网站项目需求分析?
  3. hdu4267线段树段更新,点查找,55棵线段树.
  4. Linux命令必知必会
  5. 宿迁学计算机的学校,宿迁计算机学校
  6. Win32ASM学习[12]:位测试指令位扫描指令
  7. rust矿洞绳子怎么爬下_rust矿洞绳子怎么爬下_打工小伙爬冰救人,每动一下都能听到冰面碎裂声...
  8. 机器学习分类_机器学习之简单分类模型
  9. 可优比和aag哪个好_2020年儿童床品牌排行榜,如何购买婴儿床?(可优比/思多嘉儿Stokke/好孩子/葛莱Graco)...
  10. java listen_java web-- listen
  11. 大学计算机 学生成绩表格,学生成绩分析系统的设计与实现
  12. iOS 循环引用 委托 (实例说明)
  13. 计算机音乐乐谱打上花火,【B】打上花火
  14. 远程连接redis,并设置字符集
  15. Ubuntu下两款划词翻译神器
  16. DelayQueue
  17. 如何准备一场Java面试?
  18. 愚人节的背后:技术在一面打假,一面造假
  19. PAT 乙级 1065 单身狗 (25 分)
  20. [feather]StarlingUi框架——feather抱怨

热门文章

  1. 广泛运用在工业、轨道交通、监狱的ip对讲终端
  2. 如何在xp添加无线网络连接服务器,xp怎么设置无线网络连接 windowsxp无线网络连接设置方法【图文】...
  3. JS函数前加!是什么意思
  4. 岳阳南湖学院计算机系,湖南理工学院南湖学院2019年各省各专业录取分数线
  5. 图象的感光原件、成象原理、相机的相关坐标系
  6. chrom插件DHC和火狐HttpRequester插件教程
  7. pip版本升级和常用操作
  8. Bad owner or permissions on /home/cxhpc/.ssh/config
  9. “Run Android instrumented tests using Gradle“ option was ignored ... 的解决方法
  10. 遗传图谱+转录组揭示梨赤褐色果皮细胞程序性死亡和周皮发育的开关基因