语音助手开发小记(2023.9.25)

通道问题

       在使用函数swr_alloc_set_opts给SwrContext传递输入输出的音频参数时,需要设置通道,这里通道为2,但是通道布局不能传递2.比如AV_CH_LAYOUT_STEREO 实际值为3

如果要计算通道布局的通道数使用函数av_get_channel_layout_nb_channels

int src_nb_channels = av_get_channel_layout_nb_channels(src_ch_layout);
swr_ctx = swr_alloc_set_opts(nullptr,dst_wave_fmt.ch_layout, //输出通道dst_wave_fmt.sample_fmt, //输出样本格式dst_wave_fmt.rate, //输出采样率AV_CH_LAYOUT_STEREO_DOWNMIX,  //输入通道src_wave_fmt.sample_fmt,  //输入样本格式src_wave_fmt.rate, //输入采样率0, nullptr);

声道map定义在 libavutil/channel_layout.c文件中

static const struct {const char *name;int         nb_channels;uint64_t     layout;
} channel_layout_map[] = {{ "mono",        1,  AV_CH_LAYOUT_MONO },{ "stereo",      2,  AV_CH_LAYOUT_STEREO },{ "2.1",         3,  AV_CH_LAYOUT_2POINT1 },{ "3.0",         3,  AV_CH_LAYOUT_SURROUND },{ "3.0(back)",   3,  AV_CH_LAYOUT_2_1 },{ "4.0",         4,  AV_CH_LAYOUT_4POINT0 },{ "quad",        4,  AV_CH_LAYOUT_QUAD },{ "quad(side)",  4,  AV_CH_LAYOUT_2_2 },{ "3.1",         4,  AV_CH_LAYOUT_3POINT1 },{ "5.0",         5,  AV_CH_LAYOUT_5POINT0_BACK },{ "5.0(side)",   5,  AV_CH_LAYOUT_5POINT0 },{ "4.1",         5,  AV_CH_LAYOUT_4POINT1 },{ "5.1",         6,  AV_CH_LAYOUT_5POINT1_BACK },{ "5.1(side)",   6,  AV_CH_LAYOUT_5POINT1 },{ "6.0",         6,  AV_CH_LAYOUT_6POINT0 },{ "6.0(front)",  6,  AV_CH_LAYOUT_6POINT0_FRONT },{ "hexagonal",   6,  AV_CH_LAYOUT_HEXAGONAL },{ "6.1",         7,  AV_CH_LAYOUT_6POINT1 },{ "6.1(back)",   7,  AV_CH_LAYOUT_6POINT1_BACK },{ "6.1(front)",  7,  AV_CH_LAYOUT_6POINT1_FRONT },{ "7.0",         7,  AV_CH_LAYOUT_7POINT0 },{ "7.0(front)",  7,  AV_CH_LAYOUT_7POINT0_FRONT },{ "7.1",         8,  AV_CH_LAYOUT_7POINT1 },{ "7.1(wide)",   8,  AV_CH_LAYOUT_7POINT1_WIDE_BACK },{ "7.1(wide-side)",   8,  AV_CH_LAYOUT_7POINT1_WIDE },{ "octagonal",   8,  AV_CH_LAYOUT_OCTAGONAL },{ "hexadecagonal", 16, AV_CH_LAYOUT_HEXADECAGONAL },{ "downmix",     2,  AV_CH_LAYOUT_STEREO_DOWNMIX, },{ "22.2",          24, AV_CH_LAYOUT_22POINT2, },
};

PCMA播放问题

播放PCMA

ffplay -f s16le -ar 8000 -acodec pcm_alaw -ac 1 src.pcma

播放PCMU

ffplay -f s16le -ar 8000 -acodec pcm_mulaw -ac 1 src.pcmu

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/90040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何管理好公司的公海客户呢?

销售周期比较长,线索处理比较繁琐,想知道用哪些系统可解决这一问题? 很简单,针对客户管理繁杂,线索复杂的问题,crm系统中的公海池就可以轻松解决。 接下来我将以简道云为例为大家进行详细的公海池介绍 ht…

深度学习-Python调用ONNX模型

目录 ONNX模型使用流程 获取ONNX模型方法 使用ONNX模型 手动编写ONNX模型 Python调用ONNX模型 常见错误 错误raise ValueError...: 错误:Load model model.onnx failed 错误:CUDAExecutionProvider is not in available provider 错…

TouchGFX界面开发 | 项目代码结构分析

项目代码结构分析 本文介绍TouchGFX项目中TouchGFX Designer自动生成的代码,以及需要用户编写的扩展代码。 一、生成的代码和用户代码 TouchGFX Designer生成的代码将与用户编写的代码完全分离。 事实上,自动生成的代码位于generated/gui_generated文…

美国零售电商平台Target,值得入驻吗?如何入驻?

Target 是美国最大的零售商之一,在品牌出海为大势所趋的背景下,它在北美电商中的地位节节攀升。Target 商店在众多垂直领域提供各种价格实惠的自有品牌,吸引越来越多的跨境商家入驻,如美妆、家居、鞋服、日用百货等,随…

【kubernetes】使用virtual-kubelet扩展k8s

1 何为virtual-kubelet? kubelet是k8s的agent,负责监听Pod的调度情况,并运行Pod。而virtual-kubelet不是真实跑在宿主机上的,而是一个可以跑在任何地方的进程,该进程向k8s伪装成一个真实的Node,但是实际的…

QT运行错误设置弹窗提示

在Qt中,您可以使用QMessageBox类来弹出警告信息框。QMessageBox类提供了多种类型的弹出框,包括警告框、信息框、询问框等。以下是一个简单的示例,演示如何弹出一个警告信息框: #include <QApplication> #include <QMessageBox>int main(int argc, char *argv[…

Goby 漏洞发布|Cockpit 平台 upload 文件上传漏洞(CVE-2023-1313)

漏洞名称&#xff1a;Cockpit 平台 upload 文件上传漏洞&#xff08;CVE-2023-1313&#xff09; English Name&#xff1a; Cockpit File Upload Vulnerability(CVE-2023-1313) CVSS core:7.2 影响资产数&#xff1a;3185 漏洞描述&#xff1a; Cockpit 是一个自托管、灵活…

MATLAB m文件格式化

记录一个网上查到的目前感觉挺好用的格式化方法。 原链接&#xff1a; https://cloud.tencent.com/developer/article/2058259 压缩包&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1ZpQ9qGLY7sjcvxzjMPAitw?pwd6666 提取码&#xff1a;6666 下载压缩包&#xf…

Abdroid - 开机动画修改

安卓都有开机动画 从安卓4.0或者更早截止到目前的安卓13版本。安卓开机顺序简单的来说就是开机第一屏---开机动画---进入系统桌面的步骤。相比开机第一屏来说。开机动画的修改就比较简单。因为所有的开机动画基本格式百分90都是相同的。区别就在于其中的图片分辨率和加载的脚本…

SpringBoot之Web原生组件注入

文章目录 前言一、原生注解方式注入二、Spring方式注入三、切换web服务器与定制化总结 前言 注入Web原生Servlet、Filter、Listeber以及切换Web服务器。 一、原生注解方式注入 官方文档 - Servlets, Filters, and listeners Servlet注入&#xff1a; WebServlet(urlPattern…

插入排序与希尔排序

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言&#xff1a; 这两个排序在思路上有些相似&#xff0c;所以有人觉得插入排序和希尔排序差别不大&#xff0c;事实上&#xff0c;他们之间的差别不小&#xff0c;插入排序只是希尔排序的最后一步。 目录 前言&#xff1a;…

DevSecOps 将会嵌入 DevOps

通常人们在一个项目行将结束时才会考虑到安全&#xff0c;这么做会导致很多问题&#xff1b;将安全融入到DevOps的工作流中已产生了积极结果。 DevSecOps&#xff1a;安全正当时 一直以来&#xff0c;开发人员在构建软件时认为功能需求优先于安全。虽然安全编码实践起着重要作…

套接字socket编程的基础知识点

目录 前言&#xff08;必读&#xff09; 网络字节序 网络中的大小端问题 为什么网络字节序采用的是大端而不是小端&#xff1f; 网络字节序与主机字节序之间的转换 字符串IP和整数IP 整数IP存在的意义 字符串IP和整数IP相互转换的方式 inet_addr函数&#xff08;会自…

LINUX|ubuntu常用指令

文章目录 查看IP显示当前路径下所有文件安装编译工具GCC、调试工具GDB、连接工具SSHmkdir 创建目录export命令显示当前系统定义的所有环境变量echo $PATH命令输出当前的PATH环境变量的值当前命令行添加环境变量&#xff0c;关闭失效&#xff0c;防止多版本库冲突时使用sudo su打…

【JAVA】飞机大战

代码和图片放在这个地址了&#xff1a; https://gitee.com/r77683962/fighting/tree/master 最新的代码运行&#xff0c;可以有两架飞机&#xff0c;分别通过WASD&#xff08;方向&#xff09;&#xff0c;F&#xff08;发子弹&#xff09;&#xff1b;上下左右&#xff08;控…

Xcode 15 运行<iOS 14, 启动崩溃问题

如题. Xcode 15 启动 < iOS 14(没具体验证过, 我的问题设备是iOS 13.7)真机设备 出现启动崩溃 解决方案: Build Settings -> Other Linker Flags -> Add -> -ld64

1043 输出PATest

description 给定一个长度不超过 10 ^4 的、仅由英文字母构成的字符串。请将字符重新调整顺序&#xff0c;按 PATestPATest… 这样的顺序输出&#xff0c;并忽略其它字符。当然&#xff0c;六种字符的个数不一定是一样多的&#xff0c;若某种字符已经输出完&#xff0c;则余下…

EGL函数翻译--eglGetDispaly

EGL函数翻译–eglGetDispaly 函数名 EGLDisplay eglGetDisplay(NativeDisplayType native_display); 参数描述 native_display:指定要连接的显示器&#xff0c;多个显示器有不同native_display。默认使用EGL_DEFAULT_DISPLAY 。 详细描述 eglGetDisplay输入一个本地显示器I…

如何查看自己电脑IP和端口

文章目录 一、查看IP的指令&#xff1a;二、查看端口的指令&#xff1a;三、如何机房电脑老师的控制四、vscode缩进快捷键 一、查看IP的指令&#xff1a; ipconfig 二、查看端口的指令&#xff1a; netstat 三、如何机房电脑老师的控制 先决条件&#xff1a;要能使用ctrlt…

标题:探寻电大搜题,广东开放大学的智慧之旅

随着信息技术的快速发展和互联网的普及&#xff0c;越来越多的人开始选择通过电大学习。作为知名的广东开放大学&#xff0c;一直致力于提供高质量的教育资源&#xff0c;让更多人实现自己的梦想。在这个过程中&#xff0c;电大搜题微信公众号成为了学生们的得力助手&#xff0…