使用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以选择连接的第一个端口。
dvtype
覆盖DV/HDV的自动检测。 仅当自动检测不起作用或者禁止使用其他设备类型时,才应使用此选项。 将DV设备视为HDV(反之亦然)将不起作用并导致未定义的行为。 支持值auto,dv和hdv。
dvbuffer
以帧为单位设置传入数据的最大缓冲区大小。 对于DV,这是一个确切的值。 对于HDV,它不是帧精确的,因为HDV没有固定的帧大小。
dvguid
通过指定其GUID来选择捕获设备。 捕获只会从指定的设备执行,如果找不到具有给定GUID的设备,则会失败。 如果同时连接多个设备,这对于选择输入很有用。 查看/sys/bus/firewire/devices以查找GUID。
抓取并显示FireWire DV/HDV设备的输入。
ffplay -f iec61883 -i auto
如果源是HDV,则使用100000个数据包的数据包缓冲区抓取并记录FireWire DV/HDV设备的输入。
ffmpeg -f iec61883 -i auto -hdvbuffer 100000 out.mpg
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
channels
设置通道数。 默认值为2。
学习地址:音视频新手快速入门必备系列-FFmpeg+SDL播放器开发实现-学习视频教程-腾讯课堂
【文章福利】免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~