输出设备
输出设备是可配置用于ffmpeg写入多媒体数据的元素,其附加到系统的输出设备。
在编译配置ffmepg时,所有支持的输出设备都被默认允许。你可以使用配置选项–list-outdevs
了解有哪些设备。
你可以通过–disable-outdevs
禁止编译所有输出设备,然后再通过–enable-outdev=OUTDEV
以支持个别的设备,也可以通过默认配置,再添加–disable-outdev=OUTDEV
来禁用个别设备。
在ff*工具集中,-devices
可以显示当前允许的输出设备。
当前有效的输出设备介绍见下。
alsa
ALSA(Advanced Linux Sound Architecture) 音频输出设备
alsa例子
-
在默认ALSA设备播放:
ffmpeg -i INPUT -f alsa default
-
在声卡1的7音频设备播放:
ffmpeg -i INPUT -f alsa hw:1,7
caca
CACA输出设备
这个输出设备允许在CACA窗口显示视频流。每个程序仅有一个CACA窗口。所以在一个实例中你只能有一个CACA输出。
要允许这个输出设备,需要编译时配置--enable-libcaca
,libcaca
是一个输出文本而不是像素的图形库。
关于libcaca的更多信息参考http://linux-fbdev.sourceforge.net/的fbset(1)
opengl
OpenGL输出设备
编译允许配置选项--enable-opengl
这个输出设备允许渲染输出OpenGL内容。内容可以是由程序提供或者默认创建的的SDL窗口。
当设备呈现到外部环境时,程序必须实现处理如下的消息:
- AV_DEV_TO_APP_CREATE_WINDOW_BUFFER - 在当前线程创建OpenGL 环境
- AV_DEV_TO_APP_PREPARE_WINDOW_BUFFER - OpenGL当前上下文(环境)
- AV_DEV_TO_APP_DISPLAY_WINDOW_BUFFER - 交换缓冲区
- AV_DEV_TO_APP_DESTROY_WINDOW_BUFFER - 分解/摧毁OpenGL环境
- AV_APP_TO_DEV_WINDOW_SIZE - 告知相关设备(更新信息,程序向设备的)
opengl选项
-
background
设置背景颜色,默认为
Black
(黑色) -
no_window
非0表示禁止默认的SDL窗口。程序必须提供OpenGL环境(上下文)同时设置
window_size_cb
与window_swap_buffers_cb
两个回调 -
window_title
设置SDL窗口标题,如果没有指定将以指代输出设备的文件名作为默认。当
no_window
设置时会被忽略。 -
window_size
设置首选窗口尺寸,可以是形如
widthxheight
的字符串参数或者视频尺寸短语。如果不指定则默认以输入视频尺寸进行等比例缩放(让高或者宽恰好等于窗口最大可能且完全展示的尺寸)。如果no_window
没有设置可用
opengl例子
使用OpenGL渲染播放到SDL窗口
ffmpeg -i INPUT -f opengl "window title"
oss
OSS(open Sound System)输出设备
pulse
PulseAudio输出设备
编译选项开关--enable-libpulse