ffmpeg文档27-输出设备

27 输出设备

输出设备是可配置用于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-libcacalibcaca是一个输出文本而不是像素的图形库。

关于libcaca的更多信息参考http://caca.zoy.org/wiki/libcaca

caca选项

  • window_title

    设置CACA窗口标题,如果没有设置,文件名作为默认值指定到输出设备

  • window_size

    设置CACA窗口尺寸, 参数可以是widthxheight或者一个视频大小缩写。如果没有指定,则以输入视频为默认

  • driver

    设置显示驱动

  • algorithm

    设置抖动算法。有时抖动是必要的,其可以让感觉到的颜色大于调色板。其接受-list_dither列出的算法

  • antialias

    设置抗锯齿算法。抗锯齿可柔滑渲染后的图像,并避免常见的楼梯效果。其接受-list_dither列出的抗锯齿算法

  • charset

    设置哪些字符将显示文本时使用。它接受-list_dither列出的字符集

  • color

    设置将用于渲染的颜色,接受-list_dither列出的颜色

  • list_drivers

    如果设置为真,输出可用的设备并退出

  • list_dither

    抖动可用选项列表相关的参数。参数为algorithms, antialiases, charsets, colors

caca例子

  • 下面的命令将强制一个80x25的CACA窗口输出:

    ffmpeg -i INPUT -vcodec rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -

  • 列出有效设备并退出:

    ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -

  • 列出有效抖动颜色并退出:

    ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -

decklink

在Blackmagic DeckLink设备输出回放。

编译需要Blackmagic DeckLink SDK,以及配置--extra-cflags--extra-ldflags以允许。在Windows下,你需要通过widl运行IDL文件。

DEckLink非常挑剔所支持的格式。像素格式必须是uyvy422,帧率和视频分辨率必须是设备-list_formats 1列出的值,音频采样频率必须是48kHz。

decklink选项

  • list_devices

    如果设置为true,将列出设备并退出。默认为false.

  • list_formats

    如果设置为true,将列出支持的格式并退出,默认为false.

  • preroll

    以秒为单位设置预卷视频的时间,默认为0.5

decklink例子

  • 列出输出设备:

    ffmpeg -i test.avi -f decklink -list_devices 1 dummy

  • 列出支持的格式:

    ffmpeg -i test.avi -f decklink -list_formats 1 ‘DeckLink Mini Monitor‘

  • 播放视频片段:

    ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 ‘DeckLink Mini Monitor‘

  • 按非标准的帧率和视频大小播放视频:

    ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 ‘DeckLink Mini Monitor‘

fbdev

Linux framebuffer(linux帧缓冲)输出设备

Linux framebuffer是独立于硬件的计算机屏幕显示图形的抽象层,通常用于控制台,它通过文件设备点访问,通常为/dev/fb0

更多信息阅读Linux源码树中的 Documentation/fb/framebuffer.txt文档。

fbdev选项

  • xoffset
  • yoffset

    设置左上角的x/y坐标,默认为0

fbdev例子

在设备/dev/fb0播放文件,需要的像素格式依赖于当前framebuffer设置

ffmpeg -re -i INPUT -vcodec rawvideo -pix_fmt bgra -f fbdev /dev/fb0

更多请参考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_cbwindow_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

更多关于PulseAudio信息参考http://www.pulseaudio.org

pulse选项

  • server

    以IP地址描述的用于连接到的PulseAudio服务器,如果不提供则为默认服务器(其他地方进行配置)

  • name

    将显示在活动客户端的应用名,默认为LIBAVFORMAT_IDENT

  • stream_name

    显示为活动流的流名称,默认为指定的输出名

  • device

    指定设备。如果不指定则采用默认设备。可以用命令pactl列出输出设备

  • buffer_size
  • buffer_duration

    控制缓冲尺寸和持续时间。一个小的缓冲区提供了更多的控制,当需要更频繁的更新。

    buffer_size是按字节指定
    buffer_duration以milliseconds为单位指定

    当两个都被指定时,使用更大的值(持续时间将按使用流的参数重新计算——即按流参数可以把buffer_size转换成buffer_duration来比较). 如果设置为0 (默认值), 将采用默认的PulseAudio持续时间,即2秒.

  • prebuf

    指定pre-buffering尺寸,单位字节。它指定服务器开始播放前至少缓冲的量。默认会同于buffer_sizebuffer_duration(中大的一个)

  • minreq

    指定最小请求尺寸,单位字节。即如果数据量达到这里指定的值,就可向服务器发送请求,而不是达到缓冲区填满。它不被建议设置,由服务器来初始化这个值更明智

pulse例子

在默认服务器的默认设备上播放文件

ffmpeg  -i INPUT -f pulse "stream name"

sdl

SDL(Simple DirectMedia Layer)输出设备

其可以允许在SDL窗口上显示视频流。每个进程仅能创建一个SDL窗口所以你的程序实例只有一个SDL设备输出。

编译需要libsdl库。

关于SDL的更多信息参考http://www.libsdl.org/

sdl选项

  • window_title

    设置SDL窗口标题,如果没有指定,则用输出文件名

  • icon_title

    置图标化SDL窗口的名称,如果没有指定则采用和window_title

  • window_size

    设置SDL窗口尺寸,可以是widthxheight格式,也可以是视频尺寸短语。如果没有指定则以输入文件的等比例填充放大最大可能值(某边和屏幕窗口边重合)

  • window_fullscreen

    非0则设置全屏模式,默认为0

sdl交换命令

  • 窗口创建的设备可以通过下面的交互式控制命令;

    Quit the device immediately.

sdl例子

下面强制以qcif尺寸标准中SDL窗口上显示图像

andio

sndio 音频输出设备

xv

XV(XVideo)输出设备

这个X环境设备允许在Xwindow系统的一个窗口上显示视频流

xv选项

  • display_name

    指定用在显示的硬件名,它决定了显示和通信

    显示名或者DISPLAY环境变量值是一个格式字符串hostname[:number[.screen_number]]

    hostname是指定了主机的物理连接,number指明了在主机上显示服务索引号,screen_number指定了服务上的那个屏幕

    如果不指定,则采用DISPLAY环境变量值

    例如:dual-headed:0.1指定了是dual-headed主机上的0号显示服务的1号屏幕

    通过X11介绍了解更多关于显示名的格式信息

  • window_id

    为非0值表示不创建新窗口而是使用已有的window_id窗口(如果该window_id窗口已经存在)。默认为0表示创建自己的窗口。

  • window_size

    设置窗口尺寸,参数可以是widthxheight或者视频尺寸短语。如果不指定,则默认以输入视频尺寸,当window_id被设置时忽略

  • window_x
  • window_y

    设置创建窗口的坐标偏移。默认都为0.它可能被窗口管理器忽略。当window_id被设置后被忽略。

  • window_title

    设置窗口标题,如果不设置默认以输出文件名作为值,当window_id被设置后被忽略

xv例子

  • 同时解码、显示和编码输入

    ffmpeg -i INPUT OUTPUT -f xv display

  • 解码显示输入视频到多个X11窗口:

    ffmpeg -i INPUT -f xv normal -vf negate -f xv negated

时间: 2024-10-06 00:45:29

ffmpeg文档27-输出设备的相关文章

ffmpeg文档43-开发者

43 开发者 是FFmpeg的开发者 关于作者的详细信息,可以观看项目(git://source.ffmpeg.org/ffmpeg)的Git历史,或者项目中目录中使用命令git log了解,或者浏览在线的源码(http://source.ffmpeg.org) 源代码树中维护者文件(MAINTAINERS)列出了特定组件的维护人员 另本文档英文版本由makeinfo于2015年6月16日生成 汉化翻译补充说明 由xdsnet(xdsnet at gmail dot com)在2015年6月16

ffmpeg文档26-输入设备

26 输入设备 FFmpeg中的输入设备配置元素用来启用对附加到您的系统一个多媒体设备访问数据. 当编译时,默认会支持所有的输入设备.你可以通过在配置脚本执行时附加–list-indevs了解到支持的设备. 可以通过–disable-indevs在编译时禁用所有输入设备,也可以在此基础上通过–enable-indev=INDEV允许个别设备,或者在默认支持基础上通过–disable-indev=INDEV禁用个别设备支持达到类似的目的. 在ff*工具集中,使用-devices可以获取当前支持的设

ffmpeg文档05-选项

5 选项 所有的数值选项,如果没有特殊定义,则需要一个接受一个字符串代表一个数作为输入,这可能跟着一个单位量词首字母,例如"k","m"或"G" 如果i是附加到SI单位的首字母,完整的字母将被解释为一个2的幂数单位,这是基于1024而不是1000的,添加B的SI单位则是再将此值乘以8.例如KB,MiB,G和B 对于选项中不带参数的布尔选项,即把相应的值设置为true,它们可以添加no设置为false,例如nofoo就相当于foo false .

ffmpeg文档17-视频编码器

17 视频编码器 介绍一些当前有效的视频编码器 libtheora libtheora的封装 编译需要头和库文件,还需要利用--enable-libtheora在配置中允许 更多信息参考http://www.theora.org/ libtheora选项 下面是映射给libtheora的全局选项,它们对品质和码率产生影响. b 对CBR(固定码率编码)设置码率,单位bit/s,在VBR(动态码率编码)模式下本选项被忽略. flags 设置是否允许qscale标志(恒定质量模式——VBR模式下)在

ffmpeg文档16-音频编码器

16 音频编码器 介绍当前可用的音频编码器 aac AAC(Advanced Audio Coding )编码器 当前原生(内置)编码器还处于实验阶段,而且只能支持AAC-LC(低复杂度AAC).要使用这个编码器,必须选择 ‘experimental’或者'lower' 因为当前还处于实验期,所以很多意外可能发生.如果需要一个更稳定的AAC编码器,参考libvo-aacenc,然而它也有一些负面报告. aac选项 b 设置码率,单位是bits/s,是自动恒定比特率(CBR)模式的码率 q 设置为

ffmpeg文档38-视频源

38 视频源 下面是当前有效的视频源 buffer 缓冲视频帧,其可以作为滤镜链图的环节 它通常用于编程,特别是通过libavfilter/vsrc_buffer.h的接口. 接受如下参数: video_size 指定视频尺寸,(同时指定width 和 height).语法同于ffmpeg-utils手册中的视频尺寸章节. width 输入视频宽 height 输入视频高 pix_fmt 像素格式描述,可以是一个表征像素格式的号码或者名称 time_base 指定时间戳时基 frame_rate

ffmpeg文档34-音频滤镜

34 音频滤镜 当你配置编译FFmpeg时,先采用--disable-filters可以禁止所有的滤镜,然后显式配置想要支持的滤镜. 下面是当前可用的音频滤镜 adelay 延迟一个或者多个音频通道 它接受如下选项: delays 参数是以|分隔的列表字符串,分别用于指明对应各个通道延迟的微秒(milliseconds)数.应提供至少一个大于0的延迟.未使用的延迟将被静默忽略.如果延迟值数量小于通道数量,则剩余通道不会被延迟. adelay例子 第一通道延迟1.5秒,第三通道0.5秒(其它通道均

ffmpeg文档25-设备选项

25 设备选项 libavdevice库提供类似libavformat的接口,即一个输入设备被认为类似一个分离器活着输出设备类似一个混合器.这些接口也类似libavformat一样提供一些常规设备选项.(参考ffmepeg 格式手册). 当然,一些输入或者输出设备还提供一些私有的选项,它们只在特定的组件中有效. 可以做ffmpeg命令行中采用-option value来设定某个选项点,或者通过libavutil/opt.h中的API设置,或者通过AVFormatContext的显式值来进行设置.

ffmpeg文档23-元数据(metadata)

23 元数据(metadata) FFmpeg能够提取媒体文件元数据,并转储到一个简单的utf-8编码的类INI文本文件中,然后在分离器/混合器中再次使用 转储的文件格式为: 文件包含一个头,以及一些元数据标签,元数据放置在各自子节的行中 文件头有一个 ‘;FFMETADATA’ 字符串,紧接着版本号(目前为1) 元数据标签以‘key=value’ 形式给出 头紧跟着是全局元数据 在全局元数据后可能有分部的元数据(每个流/每个章) 分节元数据从分节名,由(‘[’, ‘]’)括起的大写字符串(ST