当前位置: 首页 > article >正文

海思Hi3516DV300上播放G711U音频文件

在海思Hi3516DV300芯片运行Linux系统下,可通过如下函数来实现G711U音频文件的播放:

int ADecPlayVoiceFile(const char* filename)
{
    FILE* pfd;
    AUDIO_STREAM_S stStream;
    HI_S32 s32Ret,length,decLength,allLength = 0,aChn = 0;
    HI_U8 buf[SAMPLE_AUDIO_PTNUMPERFRM+4] = {0,1,0,0};

    pfd = fopen(filename, "rb");
    if (NULL == pfd)
    {
        printf("%s: open file %s failed\n", __FUNCTION__, filename);
        return -1;
    }

    memset(&stStream,0,sizeof(AUDIO_STREAM_S));
    fseek(pfd, 0, SEEK_END);
    length= ftell(pfd);
    fseek(pfd, 0, SEEK_SET);
    while(allLength < length)
    {
        decLength = (length - allLength)> SAMPLE_AUDIO_PTNUMPERFRM ? SAMPLE_AUDIO_PTNUMPERFRM:(length-allLength);
        decLength = fread(buf+4, 1, decLength, pfd);
        allLength += decLength;

        buf[2] = decLength/2;
        stStream.pStream = (HI_U8 *)buf;
        stStream.u32Len = decLength + 4;
        s32Ret = HI_MPI_ADEC_SendStream(aChn, &stStream, HI_TRUE);
        if (s32Ret)
        {
            printf("%s %d chn:%d  s32ret:%#x\n",__FUNCTION__, __LINE__, aChn, s32Ret);
            break;
        }
    }

    s32Ret = HI_MPI_ADEC_SendEndOfStream(aChn, HI_FALSE);
    if (HI_SUCCESS != s32Ret)
    {
        printf("%s: HI_MPI_ADEC_SendEndOfStream failed!\n", __FUNCTION__);
    }

    fclose(pfd);
    return s32Ret;
}

播放时,只需调用ADecPlayVoiceFile函数,传入G711U音频文件的路径即可。


http://www.kler.cn/a/392785.html

相关文章:

  • C++ 的协程
  • 【go从零单排】JSON序列化和反序列化
  • uniapp使用scroll-view下拉刷新与上滑加载
  • 论文解析:边缘计算网络中资源共享的分布式协议(2区)
  • 封装el-menu
  • python: postgreSQL using psycopg2 or psycopg
  • 【Hadoop】【hdfs】【大数据技术基础】实验三 HDFS 基础编程实验
  • 【监控】如何调出电脑的中摄像头,从摄像头获取视频流
  • STM32完全学习——点亮LED灯
  • C#发票识别、发票查验接口集成、电子发票(航空运输电子行程单)
  • 【再谈设计模式】抽象工厂模式~对象创建的统筹者
  • Python酷库之旅-第三方库Pandas(214)
  • 利用编程语言和脚本编写技术,实现自动化渗透测试和安全工具的开发
  • Llama微调测试记录
  • Go 加密算法工具方法
  • 嵌入式linux系统中RTC硬件的控制与实现
  • Go语言入门教案
  • 【vue】toRefs 和 toRef——如何在解构响应式对象时保持响应性
  • 免费,WPS Office教育考试专用版
  • 【初阶数据结构篇】插入、希尔、选择、堆排序
  • 约束(MYSQL)
  • github高分项目 WGCLOUD - 运维实时管理工具
  • A032-基于Spring Boot的健康医院门诊在线挂号系统
  • PCB+SMT线上报价系统+PCB生产ERP系统自动化拼板模块升级
  • 【网络安全】X-Forwarded-For漏洞成因及防范
  • 中断上下文及抢占标志位的检查——基于调度及锁举例