讨论广场 问答详情
OHOS 5.0.2 基于alsa 适配audio,音乐播放器耳机有声音,但capture始终播放有问题
zuozhong2007 2025-05-27 18:35:28
30 评论 分享

哪位大佬帮忙解答下疑惑,我正在ohos5.0.2上移植audio,使用如下的设备树的es8388的描述,通过系统默认的音乐播放器有声音,但是arecord去录制音频,播放时无声音:

	es8388_sound: es8388-sound {
		status = "okay";
        compatible = "rockchip,multicodecs-card";
        rockchip,card-name = "rockchip,es8388";
		hp-det-gpio = <&gpio1 RK_PC4 GPIO_ACTIVE_LOW>;
		io-channels = <&saradc 3>;
		io-channel-names = "adc-detect";
		spk-con-gpio = <&gpio3 RK_PB2 GPIO_ACTIVE_HIGH>;
		hp-con-gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
		linein-type = <0>;
		rockchip,format = "i2s";
		rockchip,mclk-fs = <384>;
		rockchip,cpu = <&i2s0_8ch>;
		rockchip,codec = <&es8388>;
		rockchip,audio-routing =
			"Headphone", "LOUT1",
			"Headphone", "ROUT1",
			"Speaker", "LOUT2",
			"Speaker", "ROUT2",
			"Headphone", "Headphone Power",
			"Headphone", "Headphone Power",
			"Speaker", "Speaker Power",
			"Speaker", "Speaker Power",
            "LINPUT1", "Main Mic",
            "LINPUT2", "Main Mic",
            "RINPUT1", "Headset Mic",
            "RINPUT2", "Headset Mic";

		pinctrl-names = "default";
		pinctrl-0 = <&hp_det>;
	};

但是修改audio-routepath之后,如下:
 

	es8388_sound: es8388-sound {
		status = "disabled";
        compatible = "rockchip,multicodecs-card";
        rockchip,card-name = "rockchip,es8388";
		hp-det-gpio = <&gpio1 RK_PC4 GPIO_ACTIVE_LOW>;
		io-channels = <&saradc 3>;
		io-channel-names = "adc-detect";
		spk-con-gpio = <&gpio3 RK_PB2 GPIO_ACTIVE_HIGH>;
		hp-con-gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
		linein-type = <0>;
		rockchip,format = "i2s";
		rockchip,mclk-fs = <384>;
		rockchip,cpu = <&i2s0_8ch>;
		rockchip,codec = <&es8388>;
		rockchip,audio-routing =
			"Headphone", "LOUT1",
			"Headphone", "ROUT1",
			"Speaker", "LOUT2",
			"Speaker", "ROUT2",
			"Headphone", "Headphone Power",
			"Headphone", "Headphone Power",
			"Speaker", "Speaker Power",
			"Speaker", "Speaker Power",
			"LINPUT2", "Main Mic",
			"RINPUT2", "Main Mic",
			"LINPUT1", "Headset Mic",
			"RINPUT1", "Headset Mic";
		pinctrl-names = "default";
		pinctrl-0 = <&hp_det>;
	};

表现的结果却是,通过系统默认音乐播放器耳机无声音,但是arecord录制的音频是可以播放的,所以我有几个疑问:

1. 我调整的是audio-routing的MIC部分,为什么会影响到播放呢?

2. 我如果使用第一种方案,让arecord能够正常播放音频的话,应该调整那些地方呢?

 

请各位大佬帮忙看看,非常感谢。

30 评论 分享
写回答
全部评论(2)

抓一下无声的日志,看哪里报错,或者dump出音频看一下

2025-05-28 10:19:38

调整麦克风部分的路由可能改变了音频流的默认输出路径,导致原本用于音乐播放的耳机线路被分配给了其他用途(比如主麦克风)。当系统默认的音乐播放器尝试通过这个修改后的路径发送音频时,没有声音可能是由于线路配置不正确或者设备支持的问题。

2025-05-28 10:16:12