3、FFmpeg 过滤器
FFmpeg 过滤器
在编码之前,FFmpeg 可以使用 libavfilter 库中的过滤器处理原始音频和视频帧。几个链式过滤器行程一个过滤图像。
FFmpeg中的filter包含三个层次,filter -> filterchain -> filtergraph。
在多媒体处理中,filter的意思是被编码到输出文件之前用来修改输入文件的内容到一个软件工具。如:视频翻转、旋转、缩放等。
1、filter
在简单过滤器中,只包含一个输入和一个输出,并且输入输出是同一类型。在下面的处理过程中,仅仅是在解码和编码之前加上了一个额外的过滤步骤。简单过滤器有 per-stream-filter 参数(视频为-vf, 音频为-af)配置。
(1)视频过滤器 -vf
# 如testsrc视频按顺时针方向旋转90度 ffplay -f lavfi -i testsrc -vf transpose=1# 如testsrc视频水平翻转(左右翻转) ffplay -f lavfi -i testsrc -vf hflip(2)音频过滤器 -af
# 实现慢速播放,声音速度是原始速度的50% ffplay p629100.mp3 -af atempo=0.52、filterchain
filterchain 不是简单的将线性操作链应用于一个流(上面的简单过滤器便是如此)。例如,当图形有多个输入和/或输出,或者当输出流类型与输入不同时,就是这种情况。
基本用法:
Filterchain = 逗号分隔的一组filter“filter1,filter2,filter3,…filterN-2,filterN-1,filterN”顺时针旋转90度并水平翻转:
ffplay -f lavfi -i testsrc -vf transpose=1,hflip复杂的过滤器图使用-filter_complex选项进行配置。 请注意,此选项是全局性的,因为复杂的过滤器图形本质上不能与单个流或文件明确关联。-lavfi选项等同于-filter_complex。
3、filtergraph
基本语法:
Filtergraph = 分号分隔的一组filterchain 语法: “filterchain1;filterchain2;…filterchainN-1;filterchainN”Filtergraph的分类:
- 1、简单(simple)一对一
- 2、负责(complex)多对一,多对多
一个复杂的过滤器图的一个简单的例子是覆盖过滤器,它有两个视频输入和一个视频输出,包含一个视频叠加在另一个上面。 它的音频对应是amix滤波器。
4、经典的 filter
(1)音频 filter
| adelay | 实现不同声道的延时处理。使用参数如adelay=1500|0|500,这个例子中实现了第一个声道的延迟 1.5 |
| aecho | 实现回声效果 |
| amerge | 将多个音频流合并成一个多声道音频流 |
| ashowinfo | 显示每一个 audio frame 信息 |
| pan | 特定声道处理,比如立体声变为单声道,或者通过特定参数修改声道或交换声道。主要有两大类: 混音处理,比如下面的例子pan=1c|c0=0.9*c0+0.1*c1,实现立体声到单声道的变换; 声道变换,比如5.1声道顺序调整,pan=“5.1 | c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5” |
| silencedetech 和 silenceremove | 根据特定参数检测静音和移除静音 |
| volume 和 volumedetect | 这两个filter分别实现音量调整和音量检测 |
(2)视频 filter
| blend tblend | 将两帧视频合并为一帧 |
| crop | 按照特定分辨率裁剪输入视频 |
| drawbox drawgrid drawtext | 绘制 box(对话框) grid(表格) text(文本) |
| fps | 按照指定帧率输出视频帧(丢帧或复制) |
| hflip vflip | 水平和垂直镜像 |
| overlay | 视频叠加 |
| rotate | 视频任意角度旋转 |
| showinfo | 显示视频的参数信息,比如时间戳,采样格式,帧类型等 |
| subtitles | 使用 libass 库绘制 subtitle(字幕) |
| transpose | 图像转置 |
| scale | 使用 libswscale 库完成视频缩放 |
| thumbnail | 提取缩略图 |
(3)多媒体 filter
| ahistogram | 将音频转换为视频输出,并显示为音量的直方图 |
| concat | 将音频流、视频流拼接成一个 |
| metadata ametadata | 操作 metadata 信息 |
| setpts asetpts | 改变输入音频帧或视频帧的 pts |
| showfreqs showspectrum showspertrumpic showvolume showwaves | 将输入音频转换为视频显示,并显示频谱、音量等信息 |
| split asplit | 将输入切分为多个相同的输出 |
| movie amovie | |
| 从 movie 容器中读取音频或视频 |
总结
以上是生活随笔为你收集整理的3、FFmpeg 过滤器的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: java 生成中文字符乱码,java汉字
- 下一篇: 怎么查二手华为手机价格