http://blog.csdn.net/leixiaohua1020/article/details/39702113
FFmpeg中有一个和多媒体设备交互的类库:Libavdevice。使用这个库可以读取电脑(或者其他设备上)的多媒体设备的数据,或者输出数据到指定的多媒体设备上。
Libavdevice支持以下设备作为输入端:
alsa
avfoundation
bktr
dshow
dv1394
fbdev
gdigrab
iec61883
jack
lavfi
libcdio
libdc1394
openal
oss
pulse
qtkit
sndio
video4linux2, v4l2
vfwcap
x11grab
decklink
Libavdevice支持以下设备作为输出端:
alsa
caca
decklink
fbdev
opengl
oss
pulse
sdl
sndio
xv
- avdevice_register_all();
- 使用libavdevice读取数据和直接打开视频文件比较类似。因为系统的设备也被FFmpeg认为是一种输入的格式(即AVInputFormat)。
使用FFmpeg打开一个普通的视频文件使用如下函数:
- AVFormatContext *pFormatCtx = avformat_alloc_context();
- avformat_open_input(&pFormatCtx, "test.h265",NULL,NULL);
使用libavdevice的时候,唯一的不同在于需要首先查找用于输入的设备。在这里使用av_find_input_format()完成:
- AVFormatContext *pFormatCtx = avformat_alloc_context();
- AVInputFormat *ifmt=av_find_input_format("vfwcap");
- avformat_open_input(&pFormatCtx, 0, ifmt,NULL);
==================
http://blog.csdn.net/weixin_35804181/article/details/57079884
libavdevice库提供和libavformat相同的接口。即输入设备被认为是一个demuxer,而输出设备被认为是一个muxer。
此外,每个输入输出设备都支持私有选项。
1.输入Devices
ffmpeg的默认支持所有的输入设备,可以使用”–list-indevs”(./configure –list-indevs
)来查看所有的输入设备列表。
“ffmpeg -devices” 将显示支持的输入设备列表。
1.1.音频输入设备
ALSA
ALSA是Advanced Linux Sound Architecture的缩写,高级Linux声音架构的简称,它在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持
jack
音频输入设备
libcdio
音频输入设备,音频CD输入设备.
openal
提供基于OpenAL的音频捕捉
oss
Open Sound System的音频输入设备
pulse
sndio
1.2.视频输入设备
bktr
BSD系统上的视频输入设备
dv1394
计算机接口IEEE1394,俗称火线接口,主要用于视频的采集,在INTEL高端主板与数码摄像机(DV)上可见。
libdc1394
视频输入设备,IIDC1394 input device, based on libdc1394 and libraw1394.
fbdev
视频输入设备,Linux的输入缓冲帧设备。
gdigrab
基于WIN32 GDI屏幕捕获设备,允许在Windows上捕获显示区域。
iec61883
视频输入设备,当使用libiec61883时,DV/HDV火线输入设备.
qtkit
video4linux2, v4l2
vfwcap
VfW (Video for Windows) 捕捉输入设备.
x11grab
linux系统的X11屏幕捕捉输入设备.
1.3.音视频输入设备
AVFoundation
AVFoundation是苹果在推荐的抓流框架
decklink
Blackmagic DeckLink采集卡的接口设备,主要是SDI接口
dshow
Windows上的DirectShow输入设备。
1.4.其他输入设备
lavfi
Libavfilter的虚拟输入设备
2.输出Devices
2.1.音频输出设备
alsa
oss
pulse
sndio
2.2.视频输出设备
caca
fbdev
xv
2.3.音视频输出设备
decklink
opengl
sdl
2.4.其他输出设备
3.查看工作平台支持设备的详情
命令:ffmpeg -devices
信息:
Devices:
D. = Demuxing supported
.E = Muxing supported
--
DE alsa ALSA audio output
D dv1394 DV1394 A/V grab
DE fbdev Linux framebuffer
D lavfi Libavfilter virtual input device
DE oss OSS (Open Sound System) playback
E v4l2 Video4Linux2 output device
D video4linux2,v4l2 Video4Linux2 device grab
D x11grab X11 screen capture, using XCB