这么多音频编码,蜂窝的 AMR, BT 的 SBC,除此之外还有 mp3, aac 这些比较通用的,它们都是由什么硬件实现的?

2022-01-22 00:53:58 +08:00
 haoyh1

尤其是 amr ,难道是用基带解码的? 我看微信也是用的 amr ,但微信很难调用到这么底层吧 如果用 cpu 那岂不是就软解了

2333 次点击
所在节点    程序员
9 条回复
ferock
2022-01-22 01:23:31 +08:00
码率不高软解也没太大问题…毕竟 64k 就可以听个响了,128k 属于可用音质了,比起视频动不动 800kps 或者 2000kps ,这个比特率太低了
kkocdko
2022-01-22 01:42:45 +08:00
大多数是软解,比如 mp3 的 lame 软解就足够快了,编码也很快的,在现代 cpu 上不算个事
yyfearth
2022-01-22 04:06:15 +08:00
这些编码软件当时 CPU 都没问题 现在的 CPU 更是轻松
不过现在很多 CPU 或者硬件会有带硬件加速可以 硬解 SBC AAC AC3 这些了
硬解也只要调用系统的 API 就可以实现 只要做好系统兼容性就好 具体软件不需要操心
Borden
2022-01-22 04:21:32 +08:00
虽然没研究过,但是我想有 api 可以调的吧,coreAudio 啥的,然后系统库提交给硬件 codec 。
deanguqiang
2022-01-22 08:14:03 +08:00
这些 codec 最简单的 arm cm4 来软解都毫无压力
mxalbert1996
2022-01-22 11:10:21 +08:00
音频编码的复杂度根本不需要硬解
cev2
2022-01-22 13:27:31 +08:00
首先,第一个问题,威信用的可不是 amr 格式,amr 扩展名可能是为了历史兼容保留的,实际是 silk 格式,所以你如果用标准 amr 的音频播放软件是打不开威信的 amr 文件的。
其次,安卓呢给你提供了两个大宝贝 API ,一个叫 MediaCodec ,一个叫 AudioTrack ,这俩呢先一边等会儿。
然后,你手机如果是联发哥的呢,发哥会给你在系统中预装很多编解码器,比如 omx.mtk.xxx 。要是糕通的呢,通哥也会给你预装一堆 omx.qcom.xxx 。然后安卓是谷哥的嘛,谷哥也会给你预装一堆 omx.google.xxx 。再就是你的手机是 vivi 牌的,爱爱也会给你预装一堆 omx.vivi.xxx 。反正嘛,硬件厂商给你预装的编解码器呢大概率就是它芯片能支持的硬解码器,像谷歌这样的软件厂商呢给你预装的大概率就是软解码实现,当然也不绝对,看它们喜好。
最后轮到威信,威信播放语音信息时就有很多种选择了,威信可以选择:
①威信直接把 silk 格式的文件丢给 MediaCodec ,MediaCodec 呢就顺着上面系统注册了的解码器挨个找,诶,找到一个 omx.mtk.opus.decoder 的解码器,这个解码器是发哥提供的,然后解码工作就丢给了发哥的芯片去硬解。如果找到了一个 omx.google.opus.decoder 的解码器,这是谷哥提供的,然后解码工作就交给了软件实现的解码器去软解。
②威信把文件丢给 MediaCodec 后,MediaCodec 找了一圈“这解码,多是一件美事儿啊”,没有找到任何支持此格式的解码器。那就是系统解码不了呗,威信通过内置的 silk 库把 silk 格式的 amr 文件自己解码为 PCM ,然后把 PCM 流丢给 AudioTrack 剩下的安卓就给你完成了,这也是软解。
这些呢,都是我瞎说的。
icyalala
2022-01-22 13:31:20 +08:00
一个是这种程度的编解码计算量都太小,没必要
二个是如果没有性能压力,为了保证跨平台一致性,微信喜欢用 C/C++ 自己写基础库
xsen
2022-01-22 17:31:37 +08:00
音频一般都是软编软解,因为数据量小,对 cpu 的消耗差不多可以忽略不计

对于音频来说,编解码一致都不会是难点;更难的是音频的前后处理,最复杂、最难的应该是回音

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/829838

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX