FFplay文档解读-25-音频源,音频接收器

前言

Github地址:Github
简书地址:简书
专辑地址:FFplay专辑

27. 音频源

以下是当前可用音频源的说明。

27.1 abuffer

缓冲音频帧,并使其可用于过滤器链。

该源主要用于编程用途,特别是通过'libavfilter / asrc_abuffer.h'中定义的接口。

它接受以下参数:

time_base

将用于提交帧的时间戳的时基。它必须是浮点数或分子/分母形式。

sample_rate

传入音频缓冲区的采样率。

sample_fmt

传入音频缓冲区的样本格式。来自'libavutil/samplefmt.h'中的枚举AVSampleFormat的样本格式名称或其对应的整数表示

channel_layout

传入音频缓冲区的通道布局。 'libavutil/channel_layout.c'channel_layout_map的通道布局名称或'libavutil/channel_layout.h'AV_CH_LAYOUT_ *宏的相应整数表示

channels

传入音频缓冲区的通道数。如果指定了channelschannel_layout,则它们必须一致。

27.1.1 示例

abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo

将指示信号源接受44100Hz的平面16位有符号立体声。 由于名称为s16p的样本格式对应于数字6"stereo"通道布局对应于值0x3,因此这相当于:

abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3

27.2 aevalsrc

生成由表达式指定的音频信号。

该源在输入中接受一个或多个表达式(每个通道一个),其被评估并用于生成相应的音频信号。

此来源接受以下选项:

exprs

为每个单独的通道设置'|'分隔表达式列表。如果未指定'channel_layout'选项,则所选通道布局取决于提供的表达式的数量。否则,最后指定的表达式将应用于其余输出通道。

channel_layout,c

设置通道布局。指定布局中的通道数必须等于指定表达式的数量。

duration, d

设置源音频的最短持续时间。请参阅(ffmpeg-utils)接受语法的持续时间语法。请注意,结果持续时间可能大于指定的持续时间,因为生成的音频始终在完整帧的末尾被剪切。

如果未指定,或者表达的持续时间为负,则应该永久生成音频。

nb_samples,n

设置每个输出帧的每个通道的采样数,默认为1024

sample_rate,s

指定采样率,默认为44100

exprs中的每个表达式都可以包含以下常量:

n

评估样本的编号,从0开始

t

评估样本的时间以秒为单位,从0开始

s

采样率

27.2.1 示例

  • 生成静音:

      aevalsrc=0
    
  • 产生频率为440 Hzsin信号,将采样率设置为8000 Hz:

      aevalsrc="sin(440*2*PI*t):s=8000"
    
  • 生成双通道信号,明确指定通道布局(Front Center + Back Center):

      aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
    
  • 产生white noise:

      aevalsrc="-2+random(0)"
    
  • 生成调幅信号:

      aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
    
  • 360 Hz载波上生成2.5 Hz双耳节拍:

      aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
    

27.3 anullsrc

空音频源,返回未处理的音频帧。 它主要用作模板并用于分析/调试工具,或作为忽略输入数据的过滤器的源(例如sox合成滤波器)。

此来源接受以下选项:

channel_layout,cl

指定通道布局,可以是整数或表示通道布局的字符串。 channel_layout的默认值是stereo

检查'libavutil / channel_layout.c'中的channel_layout_map定义,了解字符串和通道布局值之间的映射。

sample_rate,r

指定采样率,默认为44100

nb_samples,n

设置每个请求帧的样本数。

27.3.1 示例

  • 将采样率设置为48000 Hz,将通道布局设置为AV_CH_LAYOUT_MONO

      anullsrc=r=48000:cl=4
    
  • 使用更明显的语法执行相同的操作:

      anullsrc=r=48000:cl=mono
    

所有参数都需要明确定义。

27.4 flite

使用libflite库合成语音话语。

要启用此过滤器的编译,您需要使用--enable-libflite配置FFmpeg

请注意,2.0之前的flite库的版本不是线程安全的。

过滤器接受以下选项:

list_voices

如果设置为1,请列出可用语音的名称并立即退出。 默认值为0

nb_samples,n

设置每帧的最大样本数。 默认值为512

textfile

设置包含要发言的文本的文件名。

text

设置要发言的文本。

voice, v

设置用于语音合成的语音。 默认值为kal。 另请参见list_voices选项。

27.4.1 示例

  • 从文件'speech.txt'中读取,并使用标准的flite语音合成文本

      flite=textfile=speech.txt
    
  • 读取选择slt语音的指定文本:

      flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
    
  • 输入文本到ffmpeg

      ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
    
  • 使用flitelavfi设备让'ffplay'说出指定的文本:

      ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
    

有关libflite的更多信息,请访问:http://www.festvox.org/flite/

27.5 anoisesrc

生成噪声音频信号。

过滤器接受以下选项:

sample_rate,r

指定采样率。 默认值为48000 Hz

amplitude, a

指定生成的音频流的幅度(0.0 - 1.0)。 默认值为1.0

duration, d

指定生成的音频流的持续时间。 不指定此选项会产生无限长度的噪音。

color, colour, c

指定噪音的颜色。 可用的噪音颜色有白色,粉红色,棕色,蓝色和紫罗兰色。 默认颜色为白色。

seed, s

指定用于为PRNG设定seed的值。

 nb_samples, n

设置每个输出帧的样本数,默认为1024

27.5.1 示例

  • 产生60秒的粉红噪声,采样率为44.1 kHz,幅度为0.5

       anoisesrc=d=60:c=pink:r=44100:a=0.5
    

27.6 hilbert

生成奇数抽头希尔伯特变换FIR系数。

得到的流可以与afir滤波器一起使用,用于将信号相移90度。

这用于许多矩阵编码方案和分析信号生成。 该过程通常被写为虚数单元i(或j)的乘法。

过滤器接受以下选项:

sample_rate,s

设置采样率,默认为44100

taps,t

设置FIR滤波器的长度,默认为22051

nb_samples,n

设置每帧的样本数。

win_func,w

设置生成FIR系数时使用的窗口函数。

27.7 sine

生成由幅度为1/8的正弦波构成的音频信号。

音频信号是精确的。

过滤器接受以下选项:

frequency, f

设置载波频率。 默认值为440 Hz

beep_factor,b

每秒发出一次周期性的蜂鸣声,频率为beep_factor乘以载波频率。 默认值为0,表示禁用蜂鸣声。

sample_rate,r

指定采样率,默认为44100

duration, d

指定生成的音频流的持续时间。

samples_per_frame

设置每个输出帧的样本数。

表达式可以包含以下常量:

常量 解释
n 输出音频帧的(顺序)编号,从0开始
pts 输出音频帧的PTS(Presentation TimeStamp),以TB为单位表示
t 输出音频帧的PTS,以秒为单位表示
TB 输出音频帧的时基

默认值是: 1024

27.7.1 示例

  • 生成一个简单的440 Hz正弦波:

      sine
    
  • 产生220 Hz正弦波,每秒发出880 Hz蜂鸣声,持续5秒:

      sine=220:4:d=5
      sine=f=220:b=4:d=5
      sine=frequency=220:beep_factor=4:duration=5
      
      在* `1602,1601,1602,1601,1602 NTSC`模式之后生成`1 kHz`正弦波:
    

28. 音频接收器

以下是当前可用音频接收器的说明。

28.1 abuffersink

缓冲音频帧,并使其可用于过滤器链的末尾。

此接收器主要用于程序化使用,特别是通过libavfilter/buffersink.h或选项系统中定义的接口。

它接受一个指向AVABufferSinkContext结构的指针,该结构定义传入缓冲区的格式,作为opaque参数传递给avfilter_init_filter进行初始化。

28.2 anullsink

空音频接收器; 对输入音频一无所知。 它主要用作模板和用于分析/调试工具。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,706评论 4 366
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,002评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,462评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,375评论 0 216
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,763评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,849评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,033评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,768评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,490评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,734评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,204评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,566评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,227评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,137评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,934评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,926评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,774评论 2 274

推荐阅读更多精彩内容