FFmpeg进阶:各种输入输出设备

这篇具有很好参考价值的文章主要介绍了FFmpeg进阶:各种输入输出设备。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

查看设备列表

我们可以通过ffmpeg自带的工具查看系统支持的设备列表信息, 对应的指令如下所示:

ffmpeg -devices

输入设备介绍

通过配置ffmpeg的输入设备,我们可以访问系统中的某个多媒体设备的数据。下面详细介绍一下各个系统中的常见设备。
1.alsa
ALSA(Advanced Linux Sound Architecture——高级Linux音频架构)是Linux系统中用来采集音频的输入设备。如果需要使用这个设备, 系统需要安装libasound库。

使用ffmpeg采集alsa设备音频的命令如下所示:

ffmpeg -f alsa -i hw:0 output.wav

2.avfoundation
AVFoundation是当前Apple OSX(>=10.7)下建议采用的流采集框架,它在IOS上也是可用的。而老的QTKit框架从OSX10.7开始已经废弃。我们可以通过avfoundation采集音频和视频。对应的命令如下所示:

//从视频设备0和音频设备0采集输出到out.avi
ffmpeg -f avfoundation -i “0:0” out.avi

3.decklink
decklink输入设备提供从Blackmagic DeckLink采集的能力

4.dshow
Windows DirectShow 输入设备,DirectShow在ffmpeg中由mingw-w64项目提供支持。当前只有音频和视频设备能够使用。多个单独输入的设备可能被打开,但它们也可能打开相同的输入,这将改善他们之间的同步。常用的命令行示例:

//输出DirectShow支持的设备列表
 ffmpeg -list_devices true -f dshow -i dummy

//打开摄像头
ffmpeg -f dshow -i video=”Camera”

//打开摄像头和麦克风
ffmpeg -f dshow -i video="Camera":audio="Microphone"

//输出选择设备支持的选项列表
ffmpeg -list_options true -f dshow -i video="Camera"

5.fbdev
Linux framebuffer(Linux帧缓冲)输入设备,是一种独立于硬件的图像抽象层,它用于在计算机屏幕上显示图像,通常是在控制台(环境)。它可以通过一个文件设备节点访问,通常为:
/dev/fb0

//录像命令
ffmpeg -f fbdev -r 10 -i /dev/fb0 out.avi
//截屏命令
ffmpeg -f fbdev -frames:v 1 -r 1 -i /dev/fb0 screenshot.jpeg

6.gdigrab
Win32 GDI屏幕截取设备,这个设备允许你截取显示在Windows(系统)上的屏幕区域。它有两个可选的输入形式:desktop或title=window_title, desktop会截取整个桌面或者桌面的指定区域,第二个可选名(根据窗口标题)会截取单独的窗口,而无论在屏幕上的位置(即使根据某些操作,该窗口已经移除屏幕可见区域,或者被其他窗口覆盖了也可以截取到。

//截取整个桌面
ffmpeg -f gdigrab -framerate 6 -i desktop desktop.mpg

//截取桌面的一部分
ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg

//截取名称为Calculator应用的图
ffmpeg -f gdigrab -framerate 6 -i title=Calculator output.mpg

7.iec61883
使用 iec61883的FireWire(火线)DV/HDV输入设备。要允许这个输入设备,需要libiec61883 ,libraw1394和libavc1394被安装到系统中。此外还要在编译时配置 --enable-libiec61883 以支持。

8.jack
JACK输入设备, 为了能使用JACK设备,需要系统上存在libjack。

9.lavfi
Libavfilter输入虚拟设备, 这个输入设备可以从libavfilter滤镜链图的一个开放输出端口读取数据。对于每个滤镜链图开放输出端口,这个输入设备将创建一个对应的流映射到这个端口进行输出。当前只支持视频数据。

10.libcdio
基于libcdio的音乐CD输入设备。需要系统中有libcdio才能启用,且编译时需要用 --enable-libcdio 配置选项允许。设备允许从音频CD播放和获取。

11.openal
这个OpenAL输入设备支持在所有实现了OpenAL 1.1的系统上进行音频捕获。要编译使用它需要系统包含OpenAL头和libraries库,并且设置编译选项 --enable-openal OpenAL 头和 libraries 库可以是你OpenAL实现的部分,或者作为附件下载(SDK)。根据你的安装方式,你可能需要通过–extra-cflags和–extra-ldflags为编译指定本地的头文件和库文件。

12.qtkit
QTKit输入设备,文件名作为设备名或者索引序号参数被传递。设备索引也可以使用 -video_device_index选项来设定。一个获取的设备索引可以覆盖任何获取的设备名。如果所需的设备仅包含数字,则使用 -video_device_index来识别。如果文件名为空字符串或者设备名为"default"都会选择默认设备。有效设备可以由-list_devices枚举。

13.x11grab
X11视频输入设备使用需要libxcb库,它会在编译时自动检测。另外,配置–enable-x11grab以对应遗留的Xlib用户。这个设备允许捕获X11显示区域。

//ffmpeg捕获(10,20)开始的屏幕尺寸,更详细参数请参照X11文档  
ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg

输出设备介绍

1.alsa
ALSA(Advanced Linux Sound Architecture) 音频输出设备

//在默认ALSA设备播放
ffmpeg -i INPUT -f alsa default
//在声卡1的7音频设备播放
ffmpeg -i INPUT -f alsa hw:1,7

2.caca
CACA输出设备,这个输出设备允许在CACA窗口显示视频流。每个程序仅有一个CACA窗口。所以在一个实例中你只能有一个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

3.decklink
在Blackmagic DeckLink设备输出回放。编译需要Blackmagic DeckLink SDK,以及配置 --extra-cflags和–extra-ldflags以允许。在Windows下,你需要通过widl运行IDL文件。

4.opengl
OpenGL输出设备, 编译允许配置选项–enable-opengl, 这个输出设备允许渲染输出OpenGL内容。内容可以是由程序提供或者默认创建的的SDL窗口。

//用OpenGL渲染播放到SDL窗口
ffmpeg -i INPUT -f opengl "window title"

5.sdl
SDL(Simple DirectMedia Layer)输出设备, 其可以允许在SDL窗口上显示视频流。每个进程仅能创建一个SDL窗口所以你的程序实例只有一个SDL设备输出。编译需要libsdl库。

6.andio
sndio 音频输出设备

7.xv
XV(XVideo)输出设备, 这个X环境设备允许在Xwindow系统的一个窗口上显示视频流。文章来源地址https://www.toymoban.com/news/detail-602665.html

到了这里,关于FFmpeg进阶:各种输入输出设备的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ffmpeg系列学习——FFmpeg的音视频处理

    1.音视频的采样率、采样位深度和声道数 音频和视频的采样率、采样位深度和声道数是媒体文件中的重要参数,它们会直接影响到音视频的质量和文件大小。下面对它们进行详细解释: 采样率 采样率指音频每秒钟采样的次数,用赫兹(Hz)表示。采样率越高,音频的还原度越

    2024年02月04日
    浏览(38)
  • ffmpeg@音视频工具@音视频合并

    FFmpeg中文网 (github.net.cn) FFmpeg 是一款强大的开源跨平台音视频处理工具集,它包含了一系列命令行工具以及用于音频和视频编码解码、格式转换、抓取、流化等功能的库。FFmpeg 支持多种视频、音频格式和编解码器,能够进行音视频的压缩、封装、转码、分割、合并、过滤、抓

    2024年03月17日
    浏览(54)
  • 音视频 FFmpeg音视频处理流程

    推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月12日
    浏览(44)
  • 音视频 ffmpeg命令提取音视频数据

    保留封装格式 提取视频 提取音频 推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月10日
    浏览(45)
  • 音视频 ffmpeg视频裁剪

    将输入视频帧的宽度和高度从x和y值表示的位置裁剪到指定的宽度和高度;x和y是输出的左上角坐标,协调系统的中心是输入视频帧的左上角。 如果使用了可选的keep_aspect参数,将会改变输出SAR(样本宽比)以补偿新的DAR(显示长宽比) 推荐一个零声学院项目课,个人觉得老师讲得不

    2024年02月10日
    浏览(38)
  • [一]ffmpeg音视频解码

    (1)下载FFmpeg源码(v3.3.6) 下载地址( http://www.ffmpeg.org/download.html#releases ) (2)下载NDK(r14b) 下载地址( https://developer.android.google.cn/ndk/downloads/index.html) (3)编写Android编译脚本 (1)用ftp上传到Ubuntu中 (2)解压Ffmpeg(tar -zxvf ffmpeg-3.3.6.tar.gz) (3)解压NDK(unzip andro

    2024年01月19日
    浏览(40)
  • Android音视频: 引入FFmpeg

    本文你可以了解到 本文将介绍如何将上一篇文章编译出来的  FFmpeg so  库,引入到  Android  工程中,并验证  so  是否可以正常使用。 一、开启 Android 原生 C/C++ 支持 在过去,通常使用  makefile  的方式在项目中引入  C/C++  代码支持,随着  Android Studio  的普及, makefile  的

    2024年02月02日
    浏览(31)
  • 音视频 ffmpeg命令转封装

    保持编码格式: 改变编码格式: 修改帧率: 修改视频码率: 修改视频码率: 修改音频码率: 修改音视频码率: 修改视频分辨率: 修改音频采样率: 推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音

    2024年02月10日
    浏览(43)
  • 音视频 ffmpeg命令参数说明

    主要参数: -i 设定输入流 -f 设定输出格式(format) -ss 开始时间 -t 时间长度 音频参数: -aframes 设置要输出的音频帧数 -b:a 音频码率 -ar 设定采样率 -ac 设定声音的Channel数 -acodec 设定声音编解码器,如果用copy表示原始编解码数据必须被拷贝。 -an 不处理音频 -af 音频过滤器 视频

    2024年02月10日
    浏览(40)
  • FFMPEG常用命令 音视频合并

            目录 一、音频合并 1.获取音频时长 2.合并两段音频 3.合并音频插入空白 二、视频加背景图 三、音视频合成 1.保留视频声音 2.不保留视频声音 四、合并视频         本文将用几个实例,介绍ffmpeg命令的综合使用,主要涉及音频处理、视频处理和音视频合成。 参数

    2024年02月10日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包