前几天我免费获得了 AIPI 的开发板,搭载了博流的 MCU ,整体功能类似 ESP32 。
正好在理发的时候,理发店的天猫精灵在播放音乐时插播广告,
于是我突发奇想,想着能否利用这个开发板来进行串流播放。
整体的思路如下所示:
尽管视频转码是由 Jellyfin 完成的, 但博流的这个 MCU 芯片能够播放出来仍然让我感到非常惊讶。
不过,国产芯片也存在一些不足之处,主要表现在生态和文档方面。
特别是芯片文档中隐藏了大量的硬件信息,
如果出现底层问题,查找会比较头疼。
可以参考以下 B 站链接查看播放效果。
请注意:这只是一个大约两天时间制作的演示项目,代码质量不高,音频会出现杂音。
具体原因和其他问题可以参考 GitHub 页面。
这个项目仅用于测试,目前没有计划进行后续维护。
1
dangyuluo 2023-10-03 11:25:43 +08:00
赞,我更想做到 ESP32 上 I2S 麦克风接受音频,再串流到家里的音响上,有点难。
|
2
lloovve 2023-10-03 12:14:11 +08:00 via iPhone
博流的垃圾代码还是算了吧,直接 esp32 省心舒服
|
3
vsyf 2023-10-03 16:12:37 +08:00
看你要直接传 pcm ,这款 MCU 的没有 mp3 解码的 demo 吗?
另外提到 jellyfin 的 pr 是认真的吗?感觉都是 hardcode 呀。。。 |
4
yolee599 2023-10-03 16:58:46 +08:00 via Android
@lloovve #2 博流的 sdk 和数据手册都不完整,上次想找一找 BL818 camera 相关代码,没找到,估计是要签 NDA 协议。国产 MCU 大多数就各种遮遮掩掩的
|
5
feilong OP |
6
vsyf 2023-10-03 17:19:41 +08:00
@yolee599 #4
https://github.com/Ai-Thinker-Open/AiPi-Open-Kits/tree/master/AiPi-Eyes/demos/music 我刚去翻了半天,都是 lvgl 界面处理,就是没找到怎么播出数据的 code 。 看那个 readme ,似乎先是将 mp3 的信息解码到.h 文件里面,然后编码烧录到 mcu 里面做动画播放什么的。 |
7
feilong OP |
8
vsyf 2023-10-03 18:01:52 +08:00
|
9
feilong OP @vsyf
1. 因为不是 hls ,所以我把 TranscodingProtocol 改成了 PCM ,如果是 hls 的话 TranscodingProtocol=hls 在使用的时候,我基本是当作下载一个文件来使用的。 完整请求请参考下面示例 2. 关于 AudioCodec ,我不是太熟悉 jellyfin 的开发进展,但是根据 API 文档的 UniversalAudio 的 audioCodec 说明 > Optional. The audio codec to transcode to. 应该是目标格式的样子,所以我填写了具体的 PCM 格式 如果有不对的地方欢迎指出 --- 示例请求: wget -O wget.pcm http://192.168.10.109:8096/Audio/84f7cdda408d432361c29d6bda9cbc27/universal?Container=pcm&TranscodingContainer=pcm&AudioCodec=pcm_s16le&audioBitRate=16000&api_key=d1e79804ea3b4215aecfc7d9a2043e23 |
10
lloovve 2023-10-04 01:07:50 +08:00 via iPhone
其实用 xr872 非常简单,eps32 也是,不过需要外挂 codec ,872 成本最低,最经济
|
11
feilong OP @lloovve
这次的开发版是免费拿到的😁 没用过 xr872 ,简单看了下 spec ,和博流的这个比了下 博流的这个多了 ble5.3 ,支持 WiFi6 ,872 没有,其他的带 wifi6 的产品貌似只有 esp32c6 但是 872 的 384m 的 m4f cpu 应该比 320m 的 riscv 更快 顺便我这个应该也算是外挂 codec 了,整个音频解码都是 jellyfin 里的 ffmpeg 干的 |
12
lloovve 2023-10-04 07:43:26 +08:00 via iPhone
@feilong xr872at 做语音想当好,我测试过网络电台,直接把网上网络电台 mp3 地址放进去可以播放几个小时都没问题
|
13
feilong OP @lloovve
好奇去看了下 https://github.com/XradioTech/xradio-skylark-sdk 这代码质量确实比博流要好,封装逻辑和 linux 比较相似,而且例子很全的样子 翻看了下 audio 的示例,这个芯片貌似有一个叫做 cedarx 的闭源解码器可以解码 mp3 而且只需要 player->play(player, "file://music/1.mp3");就可以直接播放,这个生态做的确实不错。 印象里 espressif 也有类似的闭源解码器 > 我发现上面你说的 codec 指的是处理 i2s 的芯片 我拿到的这块开发板是 AIPI-EYES-S1 上面的 es8388 是这个功能 安信可他们还做了一个叫 AIPI-EYES-S2 的板子内置 codec , 但是只能接一个喇叭的样子,不适合放歌 |