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
相关文章:
FFmpeg-两个文件mix重采样以那个为主
ffmpeg -i 2ch-44.1k.wav -i 2ch-16k.wav -filter_complex " \ [0:a][1:a]amixinputs2[aout]" \ -map [aout] -f null -ffmpeg -i 2ch-44.1k.wav -i 2ch-16k.wav -filter_complex " \ [0:a][1:a]amixinputs2[aout]" \ -map [aout] -f null -对比发现&#…...

【WebGL】初探WebGL,我了解到这些
WebGL(Web图形库)是一种强大的技术,允许您在Web浏览器中直接创建交互式的3D图形和动画。它利用现代图形硬件的能力来呈现令人惊叹的视觉效果,使其成为Web开发人员和计算机图形爱好者必备的技能。 WebGL基础知识 WebGL基于OpenGL …...
fwft fifo和standard fifo
fifo共有两种,分别是standard fifo和fwft fifo,其中,前者的latency=1,即rd_en信号有效且fifo非空时,数据会在下一个周期出现在fifo的读数据端口。而后者,即fwft fifo的latency=0,也就是说,rd_en信号有效的当拍,数据就会出现在读端口上。这里,fwft是First-word-Fall-T…...

pdf阅读器哪个好用?这个阅读器别错过
pdf阅读器哪个好用?PDF是一种流行的文件格式,可以保留文档的原始格式、布局和字体。与其他文档格式相比,PDF在不同设备和操作系统上的显示效果更为一致,确保文档内容的准确性和可读性。在阅读一些PDF文件的时候,使用一…...

【LeetCode】下降路径最小和
下降路径最小和 题目描述算法分析编程代码 链接: 下降路径最小和 题目描述 算法分析 编程代码 class Solution { public:int minFallingPathSum(vector<vector<int>>& matrix) {int n matrix.size();vector<vector<int>> dp(n1,vector(n2,INT_M…...

从0到1开发go-tcp框架【2-实现Message模块、解决TCP粘包问题、实现多路由机制】
从0到1开发go-tcp框架【2-实现Message模块、解决TCP粘包问题、实现多路由机制】 1 实现\封装Message模块 zinx/ziface/imessage.go package zifacetype IMessage interface {GetMsdId() uint32GetMsgLen() uint32GetMsgData() []byteSetMsgId(uint32)SetData([]byte)SetData…...

Boost开发指南-3.6weak_ptr
weak_ptr weak_ptr是为配合shared_ptr而引入的一种智能指针,它更像是shared_ptr的一个助手而不是智能指针,因为它不具有普通指针的行为,没有重载 operator*和->。它的最大作用在于协助shared_ptr工作,像旁观者那样观测资源的使…...

Swift 周报 第三十三期
文章目录 前言新闻和社区App 内购买项目和订阅即将实行价格与税率调整为家庭提供安全的 App 体验 提案正在审查的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组自主整理周报的第二十四期,每个模块已初步成型。各位读者如果有好的提议ÿ…...
网络空间安全及计算机领域常见英语单词及短语——网络安全(一)
目录 网络空间安全常见英语单词没事儿读着玩儿相关知识扫盲 CSDN的小伙伴们,我快回来咯!网络空间安全常见英语单词 Cybersecurity 网络安全Network security 网络安全Information security 信息安全Data protection 数据保护Threat analysis 威胁分析Ri…...
Go基准测试Benchmark
Go语言自带了一个强大的测试框架,其中包括基准测试(Benchmark)功能,基准测试用于测量和评估一段代码的性能。 我们可以通过在Go的测试文件中编写特殊格式的函数来创建基准测试。测试文件的命名遵守原函数名称_test.go 的格式。 基…...

docker容器的基本操作
一、查看Docker的版本信息 [roothuyang1 ~]# docker version 二、查看docker的详细信息 [roothuyang1 ~]# docker info 三、Docker镜像操作 Docker创建容器前需要本地存在对应的镜像,如果本地加载不到相关镜像,Docker默认就会尝试从镜像仓库https://hu…...

MySQL绿色安装和配置
1、 从地址http://dev.mysql.com/downloads/mysql/中选择windows的版本下载。 2、 mysql各个版本的简介 (1) MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。 (2) MySQL Enterprise Ed…...

《cuda c编程权威指南》03 - cuda小功能汇总
1. 计时 1.1 linux #include <sys/time.h>double cpuSecond() {struct timeval tp;gettimeofday(&tp, NULL);return ((double)tp.tv_sec (double)tp.tv_usec*1e-6); }// 调用 double start cpuSecond(); kernel_name << <grid, block >> > (ar…...
Java:Java程序通过执行系统命令调用Python脚本
本文实现功能:Java程序调用Python脚本 Python脚本 import sysdef add(x, y):return x yif __name__ "__main__":print(add(int(sys.argv[1]), int(sys.argv[2])))直接执行 $ python math.py 1 2 3Java程序调用Python脚本 package io.github.mouday.…...

this is incompatible with sql_mode=only_full_group_by
查看配置 select global.sql_mode 在sql命令行中输入select sql_mode 能够看到sql_mode配置,如果有ONLY_FULL_GROUP_BY,则需要修改 在mysql5.7.5后,ONLY_FULL_GROUP_BY是默认选项,所以就会导致group by的问题 set sql_mode‘复制去掉ONLY_F…...
GCC编译选项
当使用GCC编译器时,可以根据不同的需求选择适当的编译选项来控制编译过程和生成的代码的行为。以下是一些常见的GCC编译选项的归纳: 优化选项: -O0: 不进行优化,保留原始的C代码结构。-O1: 启用基本优化级别,进行简单…...

信息安全战线左移!智能网联汽车安全亟需“治未病”
当汽车由典型的工业机械产品逐步发展成为全新的智能移动终端,汽车的安全边界发生了根本性改变,信息安全风险和挑战不断增加。 面对复杂的异构网络、异构系统及车规级特异性要求,智能智能网联汽车信息安全到底要如何防护,已经成为…...

服务器介绍
本文章转载与b战up主谈三国圈,仅用于学习讨论,如有侵权,请联系博主 机架型服务器 堆出同时服务百万人次机组 刀型服务器 服务器炸了 比如用户访问量暴增 超过机组的峰值处理能力,进而导致卡顿或炸服, 适合企业的塔式…...
Java_25_方法引用
方法引用 方法引用: 方法引用是为了进一步简化Lambda表达式的写法。 方法引用的格式:类型或者对象::引用的方法。 关键语法是:“::” 小结:方法引用可以进一步简化Lambda表达式的写法。关键语法是:“::”范例代码&…...

QT基于TCP协议实现数据传输以及波形绘制——安卓APP及Windows程序双版本
文章代码有非常非常之详细的解析!!!诸位可放心食用 这个玩意我做了两个,一个是安卓app,一个是Windows程序。代码并非全部都是由我从无到有实现,只是实现了我想要的功能。多亏了巨人的肩膀,开源…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...