安卓查看音频输出采样率,随着科技的不断进步,现代人对于音频的需求越来越高,因此音频输出采样率成为了一个广泛关注的问题。而在安卓10中,系统有一项限制,即只能支持最高48khz的采样率,这就使得一些专业的音乐制作软件无法正常运行。然而有人通过使用Magisk成功绕过了这种限制。下面我们来详细了解一下这一过程。
Magisk绕过安卓10的48khz采样率限制
安卓因为神必的音频链, 不通过专用app播放的话 音频被重采样几乎是没法避免的了, 但至少也可以让输出的最终采样率高一些, 也是能提高听感的.
查看当前支持的采样率: 用 SampleRateChecker, google play上有, 免费的, 很方便
我用的小尾巴是W2, 可以直接显示当前的bit和采样率, 挺方便. 比如说另一个没刷过机的原装安卓是这样的:
经典安卓最大44k/16bit然后下面是我找到的一些解决办法:
有线如果你正好用的是一加9R, 可以用这个我修改过的magisk模组: trojblue/hi-fi-audio-enabler-oneplus-9r
enabler-192产生的杂音比较小, 修改默认未知32bit设备(比如小尾巴)的输出采样率为192khz;9R用192khz产生的artifact比384少很多, 个人还是比较推荐192W2显示未知设备, 本来会用对未知设备默认的48k采样, 修改后变为192k如果不是一加9r(我估计大部分人看到这个都不是吧..), 可以根据具体配置文件位置, 针对自己的设备手动建一个magisk模组:
找到audio_policy_configuration.xml, 这个一般在system/vendor/etc/audio里, 但像小米或者一些别的牌子会放在其他目录, 具体在system文件夹里搜这个文件名就好可能搜到多个同名文件, 原因是做rom的人懒了, 产生了多个配置. 我不确定不同配置会不会互相覆盖, 具体还是要自己多尝试下提取上面提到的xml, 按照我改的模组一样差不多的结构, 把要覆盖的新xml放在其对应的文件夹路径里, 其他module.prop等文件可以复制后照样子改然后整个文件夹打包成一个.zip文件, 就可以去magisk刷了, magisk会把对应位置的xml替换成你写的版本, 刷错了也方便还原.有root也不要直接修改原版的xml ! 安卓11以后对vendor分区的新限制可能会导致vendor分区无法写入(但可以删除), 于是想恢复就只能重刷机. 用magisk模组省事很多.我主要是修改以下两行, 其他尾巴/手机还得自己多试试:
<mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_FAST|AUDIO_OUTPUT_FLAG_PRIMARY"> <profile name="" format="AUDIO_FORMAT_PCM_32_BIT" samplingRates="192000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> ... <mixPort name="deep_buffer" role="source" flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER"> <profile name="" format="AUDIO_FORMAT_PCM_32_BIT" samplingRates="192000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
打开youtube/roon播放音频, 确认W2解码上显示32bit/192khz. 这样也就达成目标了:
32bit/192khz, 因为9R用32/384k会有杂音关于音频policy挺乱的, 不同设备差很多, 主要还是自己多试验, 可以略微参考官方的文档:
配置音频政策 | Android 开源项目 | Android Open Source Project蓝牙一些真无线耳机比如说xb3p, 只支持APTX Adaptive和LHDC4.0, 然而这俩都是私有协议, 如果你想玩机装个第三方rom那就别指望适配了.
一些手机比如一加9R, 当初画饼的aptx adaptive到现在也没适配. 如果买了XB3p的话就解码只有SBC和AAC可以选, 属实惨
然后我就看到了这么个解决思路: SBC XQ , 大概意思就是用最通用的SBC编码器, 但是提高码率到aptx hd甚至更高的水平. 具体可以看(这篇paper)
安装:
去xda装这里的两个magisk模组: [MAGISK] [MODULE] SBC XQ Bluetooth Audio Codec and DRC Deactivator (Android 10) | XDA Forums
写的支持安卓10, 实测在接近原生的安卓12上也能用.如果蓝牙被搞崩了, 进入手机的安全模式可以禁用所有magisk模块, 具体手机方法不同然后就可以和不同手机ab测试了, xb3p原先显示最大支持48khz, 刷入有线部分提到的模组以及上面链接里的两个模组;
之后用Sample Rate Checker显示手机输出192khz, 实际听相比普通sbc(比如电脑蓝牙)的其他设备连上差别还是不小的, 可以确认不是玄学. 反过来说, 如果差别不大那就是没有生效, 也别使劲听强行听出啥区别来.
xb3p, sbc-xq, 192khz (多半还是耳机内转换成92khz, 但总比48好)补充(安卓12) 在开发者设置-蓝牙一栏可以看到设备实际接收的采样率, 如果耳机本身不支持更高采样率的话在xml里把码率调得很高也没意义.
对于pixel设备(以及一些类pixel rom):
pixel系列的aac解码截止频率很早, 影响音质. 在开发者模式里关掉a2dp hardware offload (勾选"停用蓝牙A2DP硬件卸载", 卸载我觉得翻得不准确), 可以改善使用aac时的音质.
非pixel的不用做这步, 大部分手机把这个关了蓝牙会没声音
关于以上提到的几个模组不一定所有手机/rom能用, 还是列下我用到的设备:
一加9R(安卓12L, 类AOSP, DerpFest Rom)乐彼W2, 小米真无线降噪耳机3(aka. xb3p)以上写到的都是在输出端绕过限制的方法; 音频在设备内部往往都要经过不止一次的重采样, 从比如24/96重采样到24bit/48khz, 然后再变成你指定的最终输出采样率.
重采样本身最大采样率率可能就是写死的, 比如AAudio最大采样就是写死的48khz, 而openCL可能最大就可以192khz, 不那么影响音质. 这点看厂商的选择, 就不是非专攻音频处理的我这种人能调的了.
想要完全无损还是需要跳过安卓的内部重采样, 最好的办法大概是直接给手机刷个win11...甚至能用roon.这就留着下部分写吧, 溜了
通过Magisk绕过安卓10的48khz采样率限制,可以让用户更加灵活地设置音频输出采样率,获得更好的听音体验。同时,也为安卓用户提供了更多自定义的可能性,满足不同用户的需求。
电脑教程推荐
win10系统推荐
Copyright © 2012-2024 win10系统家园 版权声明