Chinaunix首页 | 论坛 | 博客
  • 博客访问: 688114
  • 博文数量: 95
  • 博客积分: 1773
  • 博客等级: 上尉
  • 技术积分: 1653
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-17 23:28
文章分类
文章存档

2018年(2)

2017年(10)

2016年(7)

2015年(48)

2014年(2)

2013年(2)

2012年(2)

2011年(7)

2010年(7)

2009年(3)

2008年(1)

2007年(4)

分类: 其他平台

2015-07-20 08:50:43

输出设备

输出设备是可配置用于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://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信息参考

sdl

SDL(Simple DirectMedia Layer)输出设备

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

编译需要libsdl库。

关于SDL的更多信息参考

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

阅读(1471) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~