FFmpeg-两个文件mix重采样以那个为主

news/2024/10/24 5:18:46/
ffmpeg -i 2ch-44.1k.wav -i 2ch-16k.wav -filter_complex " \
[0:a][1:a]amix=inputs=2[aout]" \
-map [aout] -f null -
ffmpeg -i 2ch-44.1k.wav -i 2ch-16k.wav -filter_complex " \
[0:a][1:a]amix=inputs=2[aout]" \
-map [aout] -f null -

对比发现,这个和-i参数后面的次序有关,默认会选用第一个的samplerate作为输出的samplerate

使用astreamselect:

ffmpeg -i 2ch-44.1k.wav  -i 2ch-16k.wav -filter_complex " \
[0:a][1:a]astreamselect=inputs=2:map=0[aout]" \
-map [aout] -f null - -v 48

输出steamselect的log:

[Parsed_astreamselect_0 @ 0x56243c0c0300] Setting 'inputs' to value '2'
[Parsed_astreamselect_0 @ 0x56243c0c0300] Setting 'map' to value '0'
[Parsed_astreamselect_0 @ 0x56243c0c0300] Add in pad input0
[Parsed_astreamselect_0 @ 0x56243c0c0300] Add in pad input1
[Parsed_astreamselect_0 @ 0x56243c0c0300] Add out pad output0
[Parsed_astreamselect_0 @ 0x56243c0c0300] Configured with 2 inpad and 1 outpad
ffmpeg -i 2ch-44.1k.wav  -i 2ch-16k.wav -filter_complex " \
[0:a][1:a]astreamselect=inputs=2:map=0 1[a1][a2], \
[a1][a2]amix=inputs=2[aout]" \
-map [aout] -f null -

TODO

Assertion parent->nb_outputs == 1 failed at src/libavfilter/framesync.c:89

这样用会报错,原因是astreamselect输出只有一路?

从log看,有两路输出:

[Parsed_astreamselect_0 @ 0x5613513252c0] Setting 'inputs' to value '2'
[Parsed_astreamselect_0 @ 0x5613513252c0] Setting 'map' to value '0 1'
[Parsed_astreamselect_0 @ 0x5613513252c0] Add in pad input0
[Parsed_astreamselect_0 @ 0x5613513252c0] Add in pad input1
[Parsed_astreamselect_0 @ 0x5613513252c0] Add out pad output0
[Parsed_astreamselect_0 @ 0x5613513252c0] Add out pad output1
[Parsed_astreamselect_0 @ 0x5613513252c0] Configured with 2 inpad and 2 outpad
[Parsed_astreamselect_0 @ 0x5613513252c0] n=0 map=0x5613513298a0 p=0x5613513298a1
[Parsed_astreamselect_0 @ 0x5613513252c0] Map input stream 0 to output stream 0
[Parsed_astreamselect_0 @ 0x5613513252c0] n=1 map=0x5613513298a1 p=0x5613513298a3
[Parsed_astreamselect_0 @ 0x5613513252c0] Map input stream 1 to output stream 1
[Parsed_astreamselect_0 @ 0x5613513252c0] n=0 map=0x5613513298a3 p=0x5613513298a3

指定采样率,前面的amix前还是会插入auto_resampler做重采样:

ffmpeg -i 2ch-44.1k.wav -i 2ch-16k.wav -filter_complex " \
[0:a][1:a]amix=inputs=2[aout]" -map [aout] -ar 8000 -f null - -v 48

log:

[auto_resampler_0 @ 0x55aed2e8c940] [SWR @ 0x55aed2e8ce00] Using s16p internally between filters
[auto_resampler_0 @ 0x55aed2e8c940] ch:2 chl:stereo fmt:s16 r:44100Hz -> ch:2 chl:stereo fmt:flt r:44100Hz
[auto_resampler_1 @ 0x55aed2e8a080] [SWR @ 0x55aed2ea2040] Using fltp internally between filters
[auto_resampler_1 @ 0x55aed2e8a080] ch:2 chl:stereo fmt:s16 r:16000Hz -> ch:2 chl:stereo fmt:flt r:44100Hz
[Parsed_amix_0 @ 0x55aed2e6f0c0] inputs:2 fmt:flt srate:44100 cl:stereo
[auto_resampler_2 @ 0x55aed2eb7240] [SWR @ 0x55aed2eb7580] Using fltp internally between filters
[auto_resampler_2 @ 0x55aed2eb7240] ch:2 chl:stereo fmt:flt r:44100Hz -> ch:2 chl:stereo fmt:s16 r:8000Hz

换成这样也一样报错:

ffmpeg -i 2ch-44.1k.wav -i 2ch-16k.wav -filter_complex " \
[0:a][1:a]astreamselect=inputs=2:map=0 1[a1][a2], \
[a1]amix=inputs=1[aout1], \
[a2]amix=inputs=1[aout2], \
[aout1][aout2]amix=inputs=2[aout]" \
-map [aout] -f null - -v 48

http://www.ppmy.cn/news/989969.html

相关文章

uniapp checkbox radio 样式修改

文章目录 通过查看代码,发现 before部分是设置样式的主要属性 我们要设置的话,就要设置checkbox::before的属性。 其中的content表示内容,比如内部的对勾 那么我们设置的时候,比如设置disabletrue的时候或者checkedtrue的时候&…

Glide原理分析

工程目录图 Glide源码分析 - 缓存源码分析 活动缓存 :当前activity有效内存缓存(LRU算法,核心linkhashmap),当前运行的整个app生命周都有效,有大小限制,防止app oom磁盘缓存,整个app都有效&…

MyBatis-Plus 查询PostgreSQL数据库jsonb类型保持原格式

文章目录 前言数据库问题背景后端返回实体对象前端 实现后端返回List<Map<String, Object>>前端 前言 在这篇文章&#xff0c;我们保存了数据库的jsonb类型&#xff1a;MyBatis-Plus 实现PostgreSQL数据库jsonb类型的保存与查询 这篇文章介绍了模糊查询json/json…

Pycharm debug程序,跳转至指定循环条件/循环次数

在断点出右键&#xff0c;然后设置条件 示例 for i in range(1,100):a i 1b i 2print(a, b, i) 注意&#xff1a; 1、你应该debug断点在循环后的位置而不是循环上的位置&#xff0c;然后你就可以设置你的条件进入到指定的循环上了 2、设置条件&#xff0c;要使用等于符号…

iOS - 检测项目中无用类和无用图片

一、无引用图片检测 LSUnusedResources 安装插件 LSUnusedResources &#xff0c;用【My Mac】模拟器运行,如下图&#xff1a; Project Path 就是项目所在的路径&#xff0c;然后点击右下角 Search按钮&#xff0c;就可以看到被搜索出来的图片资源。 注意&#xff1a;这里被搜…

mysql的主从复制

1.主从复制的原理 主从复制的原理是通过基于日志的复制方式实现数据的同步。当主服务器上发生数据变更时&#xff0c;会将这些变更写入二进制日志&#xff08;Binary Log&#xff09;中。从服务器通过连接到主服务器&#xff0c;请求从主服务器获取二进制日志&#xff0c;并将…

C语言学习笔记---函数续章

C语言程序设计笔记---010 C语言函数 --- 续1、函数声明和函数的定义1.1、函数声明例程 2、函数递归2.1、错误递归&#xff0c;栈溢出例程2.2、函数递归练习例程12.3、递归的必要条件函数递归例程2 3、递归与迭代递归与迭代例程1递归与迭代例程2 4、结语 C语言函数 — 续 1、函…

Java基础_网络编程

Java基础_网络编程 网络编程三要素InetAddress网络模型 UDP通信程序单播发送数据接收数据聊天室 组播广播 TCPTCP通信程序三次握手和四次挥手 来源Gitee地址 网络编程三要素 IP: 设备在网络中的地址&#xff0c;是唯一的标识端口号: 应用程序在设备中唯一的标识。协议: 数据在…