嵌入式端音频开发(Unisound篇)之 7.5 蜂鸟M音频控制

简介: 嵌入式端音频开发(Unisound篇)之 7.5 蜂鸟M音频控制

1.音频控制说明

控制说明:


  1. 可播放tools/scripts路径下的音频,文件名以序号区分
  2. 调用播放接口是异步不堵塞的
  3. AUDIO_PLAY_TYPE目前只支持AUDIO_PLAY_REPLY


2.音频控制接口

int  user_player_play (AUDIO_PLAY_TYPE type, const char *file) 
  播放文件 更多...
int  user_player_reply_list_num (const char *file_list, int num) 
  播放列表序号音频 更多...
int  user_player_reply_list_random (const char *file_list) 
  随机播放列表音频 更多...
int  user_player_reply_list_in_order (const char *file_list) 
  顺序播放列表中所有音频 更多...
int  user_player_stop (AUDIO_PLAY_TYPE type) 
  停止播放 更多...
 int  user_player_set_volume_min (void) 
  设置最小音量 
 int  user_player_set_volume_max (void) 
  设置最大音量 
 int  user_player_set_volume_mid (void) 
  设置中等音量 
 int  user_player_set_volume_up (void) 
  增加音量 
 int  user_player_set_volume_down (void) 
  减小音量 
 int  user_player_speaker_mute (void) 
  设置喇叭静音 
 int  user_player_speaker_unmute (void) 
  取消设置喇叭静音 
 int  user_player_shutup_mode (void) 
  系统进入无回复播报模式 
 int  user_player_shutup_exit (void) 
  系统退出无回复播报模式  
函数说明
◆ user_player_play()
int user_player_play  ( AUDIO_PLAY_TYPE  type,  
  const char *  file  
 )   
参数
type 播放类型  
file 播放文件名  
返回值
0 操作成功  
-1 操作失败  
◆ user_player_reply_list_in_order()
int user_player_reply_list_in_order  ( const char *  file_list )  
参数
file_list 文件列表 [1, 2, 3]  
返回值
0 操作成功  
-1 操作失败  
◆ user_player_reply_list_num()
int user_player_reply_list_num  ( const char *  file_list,  
  int  num  
 )   
参数
file_list 文件列表 [1, 2, 3]  
num 列表序号  
返回值
0 操作成功  
-1 操作失败  
◆ user_player_reply_list_random()
int user_player_reply_list_random  ( const char *  file_list )  
参数
file_list 文件列表 [1, 2, 3]  
返回值
0 操作成功  
-1 操作失败  
◆ user_player_stop()
int user_player_stop  ( AUDIO_PLAY_TYPE  type )  
参数
type 播放类型  
返回值
0 操作成功  
-1 操作失败  
3.音频控制demo
#include "user_player.h"
#define TAG "player_demo"
static void _player_test_process(void *args) {
  while (1) {
    uni_sleep(10);
    user_player_set_volume_min();
    LOGT(TAG, "set min vol");
    /*播放9.mp3文件*/
    user_player_play(AUDIO_PLAY_REPLY, "9"); //9.mp3
    uni_sleep(10);
    user_player_set_volume_mid();
    LOGT(TAG, "set mid vol");
    /*播放列表中的101.MP3文件*/
    user_player_reply_list_num("[9,101,102]", 1);
    uni_sleep(10);
    user_player_set_volume_max();
    LOGT(TAG, "set max vol");
    /*随机播放列表中的某个文件*/
    user_player_reply_list_random("[9,101,102]");
    uni_sleep(10);
    /*顺序播放列表中的所有文件*/
    user_player_reply_list_in_order("[9,101,102]");
    uni_sleep(10);
  }
}
static Result _create_player_test_thread(void) {
  thread_param param;
  uni_pthread_t pid;
  uni_memset(&param, 0, sizeof(param));
  param.stack_size = STACK_SMALL_SIZE;
  param.priority = OS_PRIORITY_LOW;
  uni_strncpy(param.task_name, "player_test", sizeof(param.task_name) - 1);
  if (0 != uni_pthread_create(&pid, &param,
                              _player_test_process, NULL)) {
    LOGE(TAG, "create thread failed");
    return E_FAILED;
  }
  uni_pthread_detach(pid);
  return E_OK;
}
int hb_player(void) {
  _create_player_test_thread();
  return 0;
}


目录
相关文章
|
机器学习/深度学习 存储 自然语言处理
简单聊一聊大模型微调技术-LoRA
LoRA(Low-Rank Adaptation)是一种用于减少大模型微调中参数数量和计算资源的技术。通过引入低秩分解,LoRA 仅更新少量参数,从而显著降低显存消耗和计算需求。适用于大规模预训练模型的微调、跨领域迁移学习、低资源设备部署和多任务学习等场景。例如,在微调 BERT 模型时,LoRA 可以仅调整约 0.1% 的参数,保持与全量微调相近的性能。
1942 0
|
前端开发 数据安全/隐私保护
crypto-js中AES的加解密封装
文章介绍了如何在前端使用crypto-js库进行AES加密和解密,提供了加解密的函数封装示例,并演示了如何加密和解密字符串或对象。
893 1
crypto-js中AES的加解密封装
|
开发框架 供应链 监控
并行开发模型详解:类型、步骤及其应用解析
在现代研发环境中,企业需要在有限时间内推出高质量的产品,以满足客户不断变化的需求。传统的线性开发模式往往拖慢进度,导致资源浪费和延迟交付。并行开发模型通过允许多个开发阶段同时进行,极大提高了产品开发的效率和响应能力。本文将深入解析并行开发模型,涵盖其类型、步骤及如何通过辅助工具优化团队协作和管理工作流。
356 3
|
Web App开发 JSON 自然语言处理
fastchat与autogen使用要点澄清
fastchat与autogen使用要点澄清
|
人工智能 自然语言处理 PyTorch
从千问Agent看AI Agent——我们很强,但还有很长的路要走
本项目主要通过通义千问作为基础大模型,通义Agent浏览器助手实现网页和PDF材料,以帮助您快速了解多个页面的内容,总结您浏览过的内容,并减少繁琐的文字工作。实现数据分析与可视化、处理文件等的代码解释器功能。
从千问Agent看AI Agent——我们很强,但还有很长的路要走
|
SQL 数据库
SQL查询中排除空值列的技巧与方法
在数据库查询中,经常需要处理包含空值(NULL)的数据列
1770 3
IDEA设置Tabs多行显示的方法
这篇文章介绍了在IntelliJ IDEA中设置多行显示Tabs的方法,包括如何取消单行展示Tabs并设置可展示的Tabs数量。
IDEA设置Tabs多行显示的方法
|
监控 Ubuntu 安全
|
消息中间件 Java RocketMQ
微服务架构师的福音:深度解析Spring Cloud RocketMQ,打造高可靠消息驱动系统的不二之选!
【8月更文挑战第29天】Spring Cloud RocketMQ结合了Spring Cloud生态与RocketMQ消息中间件的优势,简化了RocketMQ在微服务中的集成,使开发者能更专注业务逻辑。通过配置依赖和连接信息,可轻松搭建消息生产和消费流程,支持消息过滤、转换及分布式事务等功能,确保微服务间解耦的同时,提升了系统的稳定性和效率。掌握其应用,有助于构建复杂分布式系统。
312 0
|
云安全 弹性计算 安全
AK泄露了,怎么办?
AccessKey(包含AccessKey ID和Secret)是程序访问的凭证,无异于打开云上资源的大门钥匙,保管好AK是保障云上安全最重要的事情,甚至没有之一。
107465 8