FFplay文档解读-14-输入设备二

前言

Github地址:Github
简书地址:简书
专辑地址:FFplay专辑

18.11 iec61883

使用libiec61883FireWire DV / HDV输入设备。

要启用此输入设备,您需要在系统上安装libiec61883libraw1394libavc1394。 使用configure选项--enable-libiec61883在启用设备的情况下进行编译。

iec61883捕获设备支持使用libiec61883和新的Linux FireWire堆栈(juju)从通过IEEE1394(FireWire)连接的视频设备进行捕获。 这是Linux Kernel 2.6.37及更高版本中的默认DV / HDV输入方法,因为旧的FireWire堆栈已被删除。

指定要用作输入文件的FireWire端口,或选择auto以选择连接的第一个端口。

18.11.1 选项

dvtype

覆盖DV/HDV的自动检测。 仅当自动检测不起作用或者禁止使用其他设备类型时,才应使用此选项。 将DV设备视为HDV(反之亦然)将不起作用并导致未定义的行为。 支持值autodvhdv

dvbuffer

以帧为单位设置传入数据的最大缓冲区大小。 对于DV,这是一个确切的值。 对于HDV,它不是帧精确的,因为HDV没有固定的帧大小。

dvguid

通过指定其GUID来选择捕获设备。 捕获只会从指定的设备执行,如果找不到具有给定GUID的设备,则会失败。 如果同时连接多个设备,这对于选择输入很有用。 查看/sys/bus/firewire/devices以查找GUID

18.11.2 示例

抓取并显示FireWire DV/HDV设备的输入。

ffplay -f iec61883 -i auto

如果源是HDV,则使用100000个数据包的数据包缓冲区抓取并记录FireWire DV/HDV设备的输入。

ffmpeg -f iec61883 -i auto -hdvbuffer 100000 out.mpg

18.12 jack

JACK输入设备。

要在配置期间启用此输入设备,您需要在系统上安装libjack

JACK输入设备创建一个或多个JACK可写客户端,每个音频通道一个,名称为client_name:input_N,其中client_name是应用程序提供的名称,N是标识通道的编号。 每个可写客户端都将获取的数据发送到FFmpeg输入设备。

一旦创建了一个或多个JACK可读客户端,就需要将它们连接到一个或多个JACK可写客户端。

要连接或断开JACK客户端,可以使用jack_connectjack_disconnect程序,或通过图形界面进行,例如使用qjackctl

要列出JACK客户端及其属性,可以调用命令jack_lsp

下面是一个示例,演示如何使用ffmpeg捕获JACK可读客户端。

# Create a JACK writable client with name "ffmpeg".$ ffmpeg -f jack -i ffmpeg -y out.wav# Start the sample jack_metro readable client.$ jack_metro -b 120 -d 0.2 -f 4000# List the current JACK clients.$ jack_lsp -csystem:capture_1system:capture_2system:playback_1system:playback_2ffmpeg:input_1metro:120_bpm# Connect metro to the ffmpeg writable client.$ jack_connect metro:120_bpm ffmpeg:input_1

欲了解更多信息,请阅读:http://jackaudio.org/

18.12.1 选项

channels

设置通道数。 默认值为2

18.13 lavfi

Libavfilter输入虚拟设备。

该输入设备从libavfilter滤波器图的打开输出焊盘读取数据。

对于每个滤波器图打开输出,输入设备将创建相应的流,该流映射到生成的输出。 目前仅支持视频数据。 filtergraph通过选项graph指定。

18.13.1 选项

graph

指定要用作输入的过滤器图形。每个视频打开输出必须用outN形式的唯一字符串标记,其中N是从0开始的数字,对应于设备生成的映射输入流。第一个未标记的输出会自动分配给out0标签,但需要明确指定所有其他输出。

后缀+ subcc可以附加到输出标签,以创建一个额外的流,其中隐藏的字幕数据包附加到该输出(实验性的;现在仅用于EIA-608 / CEA-708)。在所有正常流之后,按照相应流的顺序创建子流。例如,如果存在out19 + subccout7 + subcc并且直到out42,则流#43对于流#7subcc而对于流#19是流#44subcc

如果未指定,则默认为为输入设备指定的文件名。

graph_file

设置要读取的过滤器图形的文件名并将其发送到其他过滤器。 filtergraph的语法与选项图指定的语法相同。

dumpgraph

graph抛给stderr

18.13.2 示例

  • 创建彩色视频流并使用ffplay播放:

      ffplay -f lavfi -graph "color=c=pink [out0]" dummy
  • 如前面的示例所示,但是使用filename来指定图形描述,并省略out0标签:

      ffplay -f lavfi color=c=pink
  • 创建三个不同的视频测试过滤源并播放它们:

      ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3
  • 使用amovie源从文件中读取音频流,然后使用ffplay播放:

      ffplay -f lavfi "amovie=test.wav"
  • 读取音频流和视频流并使用ffplay播放:

      ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]"
  • 将已解码的帧转储到图像并将隐藏的字幕转储到文件中(实验性):

      ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map v frame%08d.png -map s -c copy -f rawvideo subcc.bin

18.14 libcdio

基于libcdio的音频CD输入设备。

要在配置期间启用此输入设备,您需要在系统上安装libcdio。 它需要配置选项--enable-libcdio

该设备允许从音频CD播放和抓取。

例如,使用ffmpeg复制/ dev / sr0中的整个音频CD,可以运行命令:

ffmpeg -f libcdio -i /dev/sr0 cd.wav

18.14.1 选项

speed

设置驱动器读取速度。 默认值为0

速度指定CD-ROM速度单位。 速度通过libcdio cdio_cddap_speed_set函数设置。 在许多CD-ROM驱动器上,指定一个太大的值将导致使用最快的速度。

paranoia_mode

设置偏执恢复模式标志。 它接受以下值之一:

disable
verify
overlap
neverskip
full

默认值是disable

有关可用恢复模式的更多信息,请参阅paranoia项目文档。

18.15 libdc1394

IIDC1394输入设备,基于libdc1394libraw1394

需要configure选项--enable-libdc1394

18.16 openal

OpenAL输入设备在所有系统上提供音频捕获,并具有可用的OpenAL 1.1实现。

要在配置期间启用此输入设备,您需要在系统上安装OpenAL标头和库,并且需要使用--enable-openal配置FFmpeg

OpenAL头文件和库应作为OpenAL实现的一部分提供,或作为附加下载(SDK)提供。 根据您的安装,您可能需要通过--extra-cflags--extra-ldflags指定其他标志,以允许构建系统找到OpenAL标头和库。

以下是不完整的OpenAL实现列表:

Creative

官方Windows实施,通过支持的设备和软件回退提供硬件加速。 见http://openal.org/

OpenAL Soft

便携式,开源(LGPL)软件实现。 包括Windows,Linux,SolarisBSD操作系统上最常见的声音API的后端。 请参阅http://kcat.strangesoft.net/openal.html

Apple

OpenAL是官方Mac OS X Audio接口Core Audio的一部分。 请参阅http://developer.apple.com/technologies/mac/audio-and-video.html

该设备允许从通过OpenAL处理的音频输入设备中捕获。

需要在提供的文件名中指定要捕获的设备的名称。 如果提供空字符串,设备将自动选择默认设备。 可以使用list_devices选项获取支持的设备列表。

18.16.1 选项

channels

设置捕获的音频中的通道数。 目前仅支持值1(单声道)和2(立体声)。 默认为2

sample_size

设置捕获的音频的样本大小(以位为单位)。 目前仅支持值816。 默认为16

sample_rate

设置捕获的音频的采样率(以Hz为单位)。 默认为44 .1k

list_devices

如果设置为true,则打印设备列表并退出。 默认为false

18.16.2 示例

打印OpenAL支持的设备列表并退出:

$ ffmpeg -list_devices true -f openal -i dummy out.ogg

通过PulseAudio从OpenAL设备DR-BT101捕获:

$ ffmpeg -f openal -i'DR-BT101 via PulseAudio'out.ogg

从默认设备捕获(注意空字符串作为文件名):

$ ffmpeg -f openal -i''out.ogg

同时从两个设备捕获,在同一个ffmpeg命令中写入两个不同的文件:

$ ffmpeg -f openal -i'DR-BT101 via PulseAudio'out1.ogg -f openal -i'ALSA Default'out2.ogg

注意:并非所有OpenAL实现都支持多个同时捕获 - 如果上述操作不起作用,请尝试最新的OpenAL Soft

18.17 oss

打开音响系统输入设备。

提供给输入设备的文件名是表示OSS输入设备的设备节点,通常设置为/dev/dsp

例如,使用ffmpeg/dev/dsp获取使用命令:

ffmpeg -f oss -i /dev/dsp /tmp/oss.wav

有关OSS的更多信息,请参阅:http://manuals.opensound.com/usersguide/dsp.html

18.17.1 选项

sample_rate

Hz为单位设置采样率。 默认值为48000

channels

设置通道数。 默认值为2

18.18 pulse

PulseAudio输入设备。

要启用此输出设备,需要使用--enable-libpulse配置FFmpeg

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

要列出PulseAudio源设备及其属性,可以调用命令pactl list sources

有关PulseAudio的更多信息,请访问http://www.pulseaudio.org

18.18.1 选项

server

连接到由IP地址指定的特定PulseAudio服务器。 未提供时使用默认服务器。

name

指定PulseAudio在显示活动客户端时将使用的应用程序名称,默认情况下它是LIBAVFORMAT_IDENT字符串。

stream_name

指定PulseAudio在显示活动流时将使用的流名称,默认情况下为record

sample_rate

Hz为单位指定采样率,默认使用48kHz

channels

指定正在使用的通道,默认设置为2(立体声)。

frame_size

指定每帧的字节数,默认设置为1024

fragment_size

PulseAudio中指定最小缓冲片段,它将影响音频延迟。 默认情况下,它是未设置的。

wallclock

使用当前时间设置初始PTS。 默认值为1

18.18.2 示例

从默认设备录制流:

ffmpeg -f pulse -i default /tmp/pulse.wav

18.19 sndio

sndio输入设备。

要在配置期间启用此输入设备,您需要在系统上安装libsndio

提供给输入设备的文件名是表示sndio输入设备的设备节点,通常设置为``。

例如,使用ffmpeg/dev/audio0获取使用命令:

ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav

18.19.1 选项

sample_rate

Hz为单位设置采样率。 默认值为48000

channels

设置通道数。 默认值为2

18.20 video4linux2, v4l2

Video4Linux2输入视频设备。

v4l2可用作video4linux2的别名。

如果FFmpeg是使用v4l-utils支持构建的(通过使用--enable-libv4l2配置选项),则可以将它与-use_libv4l2输入设备选项一起使用。

要抓取的设备的名称是文件设备节点,通常Linux系统倾向于在将设备(例如USB网络摄像头)插入系统时自动创建此类节点,并且具有/dev/videoN类型的名称,其中N是与设备关联的数字。

Video4Linux2设备通常支持一组有限的widthxheight大小和帧速率。可以使用-list_formats allVideo4Linux2设备检查支持的内容。某些设备(如电视卡)支持一种或多种标准。可以使用-list_standards all列出所有支持的标准。

时间戳的时基是1微秒。根据内核版本和配置,时间戳可以从实时时钟(Unix Epoch的原点)或单调时钟(通常在启动时来源,不受NTP影响或手动更改时钟)导出。 -timestamps abs-ts abs选项可用于强制转换为实时时钟。

使用ffmpegffplayvideo4linux2设备的一些用法示例:

列出video4linux2设备支持的格式:

ffplay -f video4linux2 -list_formats all /dev/video0

抓取并显示video4linux2设备的输入:

ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0

抓取并记录video4linux2设备的输入,保留以前设置的帧速率和大小:

ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg

有关Video4Linux的更多信息,请访问http://linuxtv.org/

18.20.1 选项

standard

设定标准。 必须是受支持标准的名称。 要获取支持的标准列表,请使用list_standards选项。

channel

设置输入通道编号。 默认为-1,表示使用先前选择的通道。

video_size

设置视频帧大小。 参数必须是WIDTHxHEIGHT形式的字符串或有效大小的缩写。

pixel_format

选择像素格式(仅对原始视频输入有效)。

input_format

设置首选像素格式(对于原始视频)或编解码器名称。 此选项允许用户在有多个输入格式可用时选择输入格式。

framerate

设置首选视频帧速率。

list_formats

列出可用格式(支持的像素格式,编解码器和帧大小)并退出。

可用值包括:

解释
all 显示所有可用(压缩和非压缩)格式
raw 仅显示原始视频(非压缩)格式
compressed 仅显示压缩格式
list_standards

列出支持的标准并退出。

可能的取值如下:

解释
all 显示所有支持的标准
timestamps, ts

设置抓取帧的时间戳类型。

可能的取值如下:

解释
default 使用内核中的时间戳
abs 使用绝对时间戳(挂钟)
mono2abs 强制从单调转换为绝对时间戳

默认值为default

use_libv4l2

使用libv4l2(v4l-utils)转换函数。 默认值为0

18.21 vfwcap

VfW(Video for Windows)捕获输入设备。

作为输入传递的文件名是捕获驱动程序编号,范围从09。可以使用list作为文件名来打印驱动程序列表。 任何其他文件名将被解释为设备号0

18.21.1 选项

video_size

设置视频帧大小。

framerate

设置抓取帧率。 默认值为ntsc,对应帧速率30000/1001

18.22 x11grab

X11视频输入设备。

要在配置期间启用此输入设备,您需要在系统上安装libxcb。 它将在配置期间自动检测到。

该设备允许捕获X11显示器的区域。

作为输入传递的文件名具有以下语法:

[hostname]:display_number.screen_number[+x_offset,y_offset]

hostnamedisplay_number.screen_number指定要从中获取的屏幕的X11显示名称。 hostname可以省略,默认为localhost。 环境变量DISPLAY包含默认显示名称。

x_offsety_offset指定相对于X11屏幕左上边框的抓取区域的偏移量。 它们默认为0

查看X11文档(例如man X)以获取更多详细信息。

使用xdpyinfo程序获取有关X11显示属性的基本信息(例如grepnamedimensions)。

例如,使用ffmpeg:0.0抓取:

ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg

位置10,20

ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg

18.22.1 选项

draw_mouse

指定是否绘制鼠标指针。值0指定不绘制指针。默认值为1

follow_mouse

抓住区域跟随鼠标。该参数可以居中或像素像素PIXELS

当用centered指定时,抓取区域跟随鼠标指针并将指针保持在区域的中心;否则,仅当鼠标指针到达区域边缘的PIXELS(大于零)内时,该区域才会跟随。

例如:

ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg

仅在鼠标指针到达边缘100个像素内时才能跟随:

ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i:0.0 out.mpgframerate

设置抓取帧率。默认值为ntsc,对应帧速率30000/1001

show_region

在屏幕上显示抓取的区域。

如果show_region指定为1,则将在屏幕上指示抓取区域。使用此选项,如果仅抓取屏幕的一部分,则很容易知道抓取的内容。

region_border

如果show_region指定为1,请设置区域边框粗细。范围是1128,默认值是3(仅基于XCBx11grab)。

例如:

ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i:0.0 + 10,20 out.mpg

使用follow_mouse

ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpgvideo_size

设置视频帧大小。默认值为vga

grab_xgrab_y

设置抓取区域坐标。它们表示为偏离X11窗口左上角的偏移量,对应于设备名称中的x_offsety_offset参数。两个选项的默认值均为0

(0)

相关推荐