当前位置: 首页 > news >正文

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

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.lryc.cn/news/103543.html

相关文章:

  • 【WebGL】初探WebGL,我了解到这些
  • fwft fifo和standard fifo
  • pdf阅读器哪个好用?这个阅读器别错过
  • 【LeetCode】下降路径最小和
  • 从0到1开发go-tcp框架【2-实现Message模块、解决TCP粘包问题、实现多路由机制】
  • Boost开发指南-3.6weak_ptr
  • Swift 周报 第三十三期
  • 网络空间安全及计算机领域常见英语单词及短语——网络安全(一)
  • Go基准测试Benchmark
  • docker容器的基本操作
  • MySQL绿色安装和配置
  • 《cuda c编程权威指南》03 - cuda小功能汇总
  • Java:Java程序通过执行系统命令调用Python脚本
  • this is incompatible with sql_mode=only_full_group_by
  • GCC编译选项
  • 信息安全战线左移!智能网联汽车安全亟需“治未病”
  • 服务器介绍
  • Java_25_方法引用
  • QT基于TCP协议实现数据传输以及波形绘制——安卓APP及Windows程序双版本
  • mac 中 brctl 怎么用
  • 20.2 HTML 常用标签
  • mysql_2.5——【约束】详解
  • 回归预测 | MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络多输入单输出回归预测
  • opencv顺时针,逆时针旋转视频并保存视频
  • 【LeetCode】最小路径和
  • zygote forkSystemServer及systemServer启动
  • 享元模式-提供统一实现对象的复用
  • Jenkins工具系列 —— 在Ubuntu 18.04上安装各种版本OpenJDK
  • vue基础-虚拟dom
  • C#时间轴曲线图形编辑器开发2-核心功能实现