18.11 iec61883
使用libiec61883
的FireWire DV / HDV
输入设备。
要启用此输入设备,您需要在系统上安装libiec61883
,libraw1394
和libavc1394
。 使用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
(反之亦然)将不起作用并导致未定义的行为。 支持值auto
,dv
和hdv
。
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_connect
和jack_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 -c
system:capture_1
system:capture_2
system:playback_1
system:playback_2
ffmpeg:input_1
metro:120_bpm
# Connect metro to the ffmpeg writable client.
$ jack_connect metro:120_bpm ffmpeg:input_1
18.12.1 选项
channels
设置通道数。 默认值为2
。
学习地址:音视频新手快速入门必备系列-FFmpeg+SDL播放器开发实现-学习视频教程-腾讯课堂
【文章福利】免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~