spectator3 2024-11-29 15:56 采纳率: 0%
浏览 54

RK3568音频无输出

使用rockchip的接口进行音频的输出,
代码架构:
RK_MPI_SYS_Init
RK_MPI_AO_SetPubAttr
RK_MPI_AO_Enable
RK_MPI_AO_SetChnParams
RK_MPI_AO_EnableChn
RK_MPI_AO_EnableReSmp
RK_MPI_SYS_CreateMB
RK_MPI_AO_SendFrame
在最后的RK_MPI_AO_SendFrame中做了读取一个读取pcm文件的数据进行send,打印也确实是正确的数据发送到AO输出,但是用dumpsys ao就是没有数据,发送数据的部分代码如下:

img

调试信息如下:

img

img

img

  • 写回答

1条回答 默认 最新

  • 趣享先生 优质创作者: 编程框架技术领域 2024-11-29 16:24
    关注

    该回答参考ChatGPT,由吾为汝整理提供如若有用,还请题主采纳!

    在使用 RK3568 进行音频输出时,如果你在调用 RK_MPI_AO_SendFrame 后没有听到音频输出,可能存在几个潜在的问题。以下是一些排查和解决建议:

    1. 确认音频输出设备

    确保你已经正确设置了音频输出设备。可以通过以下步骤确认:

    • 使用 dumpsys ao 检查音频输出设备是否已启用。
    • 确保音频输出设备(如 HDMI、耳机等)已连接并正常工作。

    2. 检查音频参数设置

    在调用 RK_MPI_AO_SetChnParams 时,确保设置的音频参数(如采样率、通道数、位深等)与 PCM 文件的格式一致。例如:

    AO_CHN_ATTR_S chnAttr;
    chnAttr.enBitWidth = RK_AUDIO_BIT_WIDTH_16; // 16位
    chnAttr.enSamplerate = RK_AUDIO_SAMPLE_RATE_48000; // 48kHz
    chnAttr.enSoundmode = RK_AUDIO_SOUND_MODE_MONO; // 单声道
    

    3. 确保 PCM 数据正确

    在发送 PCM 数据之前,确保读取的 PCM 文件数据是正确的。可以通过以下方式验证:

    • 打印 PCM 数据的长度和内容,确保数据不为空。
    • 确保 PCM 数据的格式与设置的参数一致。

    4. 检查发送数据的代码

    确保在调用 RK_MPI_AO_SendFrame 时,数据的结构体和参数设置正确。示例代码如下:

    AO_FRAME_S aoFrame;
    aoFrame.pVirAddr = pcmData; // PCM 数据指针
    aoFrame.u32Len = pcmDataLength; // PCM 数据长度
    aoFrame.u64Pts = pts; // 时间戳
    
    // 发送数据
    RK_MPI_AO_SendFrame(aoChn, &aoFrame, 0);
    

    5. 调试信息

    根据你提供的调试信息,检查以下内容:

    • 确保没有错误返回值。例如,检查 RK_MPI_AO_SendFrame 的返回值,确保其为成功状态。
    • 如果有错误信息,记录并分析这些信息,可能会提供线索。

    6. 其他可能的问题

    • 音量设置:检查音量设置是否为零或静音状态。
    • 多线程问题:如果在多线程环境中操作音频,确保线程安全。
    • 系统资源:检查系统资源是否足够,确保没有其他进程占用音频资源。

    7. 参考文档和示例

    查阅 Rockchip 的开发文档和示例代码,确保你的实现与官方示例一致。这可以帮助你发现潜在的遗漏或错误。

    如果经过以上步骤仍然无法解决问题,建议提供更详细的代码和调试信息,以便进一步分析。希望这些建议能帮助你找到问题所在!

    评论

报告相同问题?

问题事件

  • 创建了问题 11月29日