码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 语音助手开发小记(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);
    1. swr_ctx = swr_alloc_set_opts(nullptr,
    2. dst_wave_fmt.ch_layout, //输出通道
    3. dst_wave_fmt.sample_fmt, //输出样本格式
    4. dst_wave_fmt.rate, //输出采样率
    5. AV_CH_LAYOUT_STEREO_DOWNMIX, //输入通道
    6. src_wave_fmt.sample_fmt, //输入样本格式
    7. src_wave_fmt.rate, //输入采样率
    8. 0, nullptr);

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

    1. static const struct {
    2. const char *name;
    3. int nb_channels;
    4. uint64_t layout;
    5. } channel_layout_map[] = {
    6. { "mono", 1, AV_CH_LAYOUT_MONO },
    7. { "stereo", 2, AV_CH_LAYOUT_STEREO },
    8. { "2.1", 3, AV_CH_LAYOUT_2POINT1 },
    9. { "3.0", 3, AV_CH_LAYOUT_SURROUND },
    10. { "3.0(back)", 3, AV_CH_LAYOUT_2_1 },
    11. { "4.0", 4, AV_CH_LAYOUT_4POINT0 },
    12. { "quad", 4, AV_CH_LAYOUT_QUAD },
    13. { "quad(side)", 4, AV_CH_LAYOUT_2_2 },
    14. { "3.1", 4, AV_CH_LAYOUT_3POINT1 },
    15. { "5.0", 5, AV_CH_LAYOUT_5POINT0_BACK },
    16. { "5.0(side)", 5, AV_CH_LAYOUT_5POINT0 },
    17. { "4.1", 5, AV_CH_LAYOUT_4POINT1 },
    18. { "5.1", 6, AV_CH_LAYOUT_5POINT1_BACK },
    19. { "5.1(side)", 6, AV_CH_LAYOUT_5POINT1 },
    20. { "6.0", 6, AV_CH_LAYOUT_6POINT0 },
    21. { "6.0(front)", 6, AV_CH_LAYOUT_6POINT0_FRONT },
    22. { "hexagonal", 6, AV_CH_LAYOUT_HEXAGONAL },
    23. { "6.1", 7, AV_CH_LAYOUT_6POINT1 },
    24. { "6.1(back)", 7, AV_CH_LAYOUT_6POINT1_BACK },
    25. { "6.1(front)", 7, AV_CH_LAYOUT_6POINT1_FRONT },
    26. { "7.0", 7, AV_CH_LAYOUT_7POINT0 },
    27. { "7.0(front)", 7, AV_CH_LAYOUT_7POINT0_FRONT },
    28. { "7.1", 8, AV_CH_LAYOUT_7POINT1 },
    29. { "7.1(wide)", 8, AV_CH_LAYOUT_7POINT1_WIDE_BACK },
    30. { "7.1(wide-side)", 8, AV_CH_LAYOUT_7POINT1_WIDE },
    31. { "octagonal", 8, AV_CH_LAYOUT_OCTAGONAL },
    32. { "hexadecagonal", 16, AV_CH_LAYOUT_HEXADECAGONAL },
    33. { "downmix", 2, AV_CH_LAYOUT_STEREO_DOWNMIX, },
    34. { "22.2", 24, AV_CH_LAYOUT_22POINT2, },
    35. };

    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

  • 相关阅读:
    基于SpringBoot+Vue企业会议室预定管理系统设计和实现
    技术管理进阶——如何从传话筒升级高阶人才?
    Gitea+Jenkins+webhooks-前端自动化部署
    macOS文本编辑器 BBEdit 最新 for mac
    【解析】基于 卷积神经网络CNN 的 cat、dog、panda 分类 || 补充概念:滤波器、局部连接、权值共享、子采样 (汇聚层 || 池化层)
    ROS 物体跟踪
    【MySQL系列】Java的JDBC编程
    Nginx参数配置详细说明【全局、http块、server块、events块】【已亲测】
    Spring核心与设计思想
    博客系统项目
  • 原文地址:https://blog.csdn.net/yunxiaobaobei/article/details/133279070
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号