电台组件
更新时间:2024-09-24
用户可以自由开关电台,切换心仪的电台种类,选择元宇宙世界探索的伴随音乐。运营方也可进行细粒度的云端控制,提升用户体验的同时,也能作为消息发布、商业广告的有效载体,进一步扩大传播度和影响力。
1.整体介绍
电台组件包括三块功能:电台媒体(氛围之音), 栏目列表(未来语境), 电台Banner,支持用户在运营平台配置电台媒体,电台栏目专辑(栏目介绍),电台的banner图片。



2. 主要功能对应数资及脚本
| 脚本 | Prefab | 功能 |
|---|---|---|
| RadioManager.cs | / | 电台管理类 |
| RadioDataStructures.cs | / | 电台数据管理 |
| RadioBroadcastEntryPanel.cs | RadioBroadcastPanel | 面板主类 |
| RadioPanel.cs | / | 频道列表页 |
| BroadcastPanel.cs | / | 栏目页 |
| BroadcastColumnIntroductionPage.cs | / | 栏目列表页 |
| BroadcastAlbumIntroductionPage.cs | / | 栏目选集页 |
| BroadcastAudioPlayerBar.cs | / | 栏目播放器 |
| MediaPlayerCtrlX.cs | / | 播放器类 |
| RadioUtils.cs | / | 电台工具类 |
3. 客户端接口
| 接口 | 类名 | 功能 |
|---|---|---|
| RadioDataStructures | RadioDataStructures.ReqRadioBannerList(); | 拉取Banner列表 |
| RadioDataStructures | RadioDataStructures.ReqRadioAlbumList(); | 拉取栏目列表,选集列表 |
| RadioManager | RecoverRadio(); | 进入空间时恢复播放状态 |
| RadioManager | ChangeRadioIndex(int channelId, bool isPlay); | 切换播放电台媒体 |
| RadioManager | ChangeBroadcastEpisod(RadioEpisode radioEpisode, bool isPlay); | 播放栏目单集 |
| RadioManager | SaveRadioPlayHistory(); | 保存电台进度 |
| RadioManager | SaveBroadcastEpisodeHistory | 保存选集进度 |
| RadioManager | GetCurrentPlayingPosition(); | 获取当前播放进度 |
| RadioManager | SeekTo(int position); | 定位播放器进度 |
| RadioManager | Play(); | 播放 |
| RadioManager | Stop(); | 停止 |
| RadioManager | AutoPlayNextEpisode(); | 播放栏目下一个单集 |
| RadioManager | public MediaState GetCurrentState(); | 获取播放器状态 |
4. 开发者后台运营配置
1.配置电台栏目:进入希壤运营后台---电台管理---栏目列表

2.配置选集列表: 点击 【进入选集列表页】

3.配置banner列表: 进入希壤运营后台---电台管理---banner列表

5. 模块数据,事件订阅
相关数据结构:
- 电台媒体列表(歌单) 云控配置:radio_config_v2 通过云控来拉取更新媒体列表
云控配置
var cloudControllerManager = Baidu.APPFramework.ServiceManager.Get<ICloudControllerManager>();
cloudControllerManager.Subscribe("radio_config_v2", SubscribeBroadcastCallback);channels 媒体列表
{
"channels": [{
"id": 12,
"url": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1684731016247/channel-1.mp3",
"desc": "mp3格式",
"icon": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1703661135575/栏目头像160.JPG",
"name": "电台mp3-1"
}, {
"id": 2,
"url": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1684735055770/channel-2.mp3",
"desc": "mp3格式",
"icon": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1703661135575/栏目头像160.JPG",
"name": "电台mp3-2"
}, {
"id": 3,
"url": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1684735388366/channel-3.mp3",
"desc": "mp3格式",
"icon": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1703661135575/栏目头像160.JPG",
"name": "电台mp3-3"
}, {
"id": 4,
"url": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1684735530390/channel-4.mp3",
"desc": "mp3格式",
"icon": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1703661135575/栏目头像160.JPG",
"name": "电台mp3-4"
}, {
"id": 6,
"url": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1675668575837/《海阔天空》录音室版重制伴奏.mp3",
"desc": "4.7mp3格式",
"icon": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1703661135575/栏目头像160.JPG",
"name": "《海阔天空》录音室版重制伴奏"
}, {
"id": 8,
"url": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1679468452287/希壤语音节目001.mp3",
"desc": "一二三四五六七八九十一二三四五六",
"icon": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1703661135575/栏目头像160.JPG",
"name": "一二三四五六七八九十"
}]
}- 电台栏目列表(专辑)
RadioAlbumList专辑列表
{
"code": 0,
"error_code": "suc0000",
"message": "succeed!",
"error_msg": "",
"data": {
"list": [{
"name": "3.6.0全量测试",
"introduction": "3.6.0全量测试",
"auto_id": 42,
"author_name": "3.6.0全量测试",
"author_introduction": "3.6.0全量测试",
"icon_url": "https://s3.bj.bcebos.com/baidu-vr-zion-server/stuff/upload/1710484713596/913609aa1cfccf149deba62cf3528f1c.jpeg?x-bce-process=image/resize,m_lfit,w_140,h_140/format,f_jpg/quality,Q_90"
}, {
"name": "流弊流弊流弊流弊流弊流弊流弊流弊流弊流弊流弊流弊流",
"introduction": "一百二十个字一百二十个字一百二十个字一百二十个字一百二十个字一百二十个字一百二一百二十个字一百二十个字一百二十个字一百二十个字一百二十个字一百二十个字一百二一百二十个字一百二十个字一百二十个字一百二十个字一百二十个字一百二十个字一百二\n",
"auto_id": 22,
"author_name": "流弊流弊流弊流弊流弊流弊流弊流弊流弊流弊",
"author_introduction": "一百二十个字一百二十个字一百二十个字一百二十个字一百二十个字一百二十个字一百二\n一百二十个字一百二十个字一百二十个字一百二十个字一百二十个字一百二十个字一百二一百二十个字一百二十个字一百二十个字一百二十个字一百二十个字一百二十个字一百二\n",
"icon_url": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1679471655794/%E6%A0%8F%E7%9B%AE%E5%A4%B4%E5%83%8F.jpeg?x-bce-process=image/resize,m_lfit,w_140,h_140/format,f_jpg/quality,Q_90"
}, {
"name": "四维瞭望",
"introduction": "纵览新科技发展动态,畅想元宇宙对未来人类生活的影响",
"auto_id": 23,
"author_name": "杨樾",
"author_introduction": "著名电台主持人,资深媒体人",
"icon_url": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1679278824786/%E6%A0%8F%E7%9B%AE%E5%A4%B4%E5%83%8F.jpeg?x-bce-process=image/resize,m_lfit,w_140,h_140/format,f_jpg/quality,Q_90"
}, {
"name": "WANOS全景声沉浸式音乐",
"introduction": "未来,在你心中是什么样的?是像星星一般点缀在宇宙中的空间站,还是像鲸鱼一样自由遨游海底的交通工具,还是充满各种科技感的新新世界……\n戴上耳机,发挥想象,在元宇宙的世界中,沉浸式感受科技与未来。\n",
"auto_id": 24,
"author_name": "WANOS全景声",
"author_introduction": "[关于WANOS全景声]\n国内自主研发全景声技术公司,技术萌新一枚,音频、视频、院线多领域开花;\n欢迎大家订阅,我们将不断呈现更多值得听的美好,为大家推荐更多沉浸式的内容,打造更高品质的三维空间音频体验。\n官网:wanos.cc 一键触达",
"icon_url": "https://s3.bj.bcebos.com/baidu-vr-zion-server/stuff/upload/1703659545758/栏目头像160.jpg?x-bce-process=image/resize,m_lfit,w_140,h_140/format,f_jpg/quality,Q_90"
}, {
"name": "WANOS全景声丨打破现实与未来",
"introduction": "未来,在你心中是什么样的?是像星星一般点缀在宇宙中的空间站,还是像鲸鱼一样自由遨游海底的交通工具,还是充满各种科技感的新新世界……\n戴上耳机,发挥想象,在元宇宙的世界中,沉浸式感受科技与未来。\n",
"auto_id": 25,
"author_name": "WANOS全景声",
"author_introduction": "国内自主研发全景声技术公司,技术萌新一枚,音频、视频、院线多领域开花;\n欢迎大家订阅,我们将不断呈现更多值得听的美好,为大家推荐更多沉浸式的内容,打造更高品质的三维空间音频体验。\n官网:wanos.cc 一键触达,发现更多惊喜",
"icon_url": "https://s3.bj.bcebos.com/baidu-vr-zion-server/stuff/upload/1703659545758/栏目头像160.jpg?x-bce-process=image/resize,m_lfit,w_140,h_140/format,f_jpg/quality,Q_90"
}, {
"name": "windows-音频",
"introduction": "windows-音频",
"auto_id": 26,
"author_name": "windows-音频",
"author_introduction": "windows-音频",
"icon_url": "https://s3.bj.bcebos.com/baidu-vr-zion-server/stuff/upload/1703659545758/栏目头像160.jpg?x-bce-process=image/resize,m_lfit,w_140,h_140/format,f_jpg/quality,Q_90"
}]
}
}- 电台Banner列表(banner图片)
BannerList
{
"code": 0,
"error_code": "suc0000",
"message": "succeed!",
"error_msg": "",
"data": [{
"auto_id": 27,
"image_url": "https://s3.bj.bcebos.com/baidu-vr-zion-server/stuff/upload/1710484713596/913609aa1cfccf149deba62cf3528f1c.jpeg?x-bce-process=image/resize,m_lfit,w_750,h_256/format,f_jpg/quality,Q_90"
}, {
"auto_id": 24,
"image_url": "https://s3.bj.bcebos.com/baidu-vr-zion-server/stuff/upload/1703661478593/栏目头像160.JPG?x-bce-process=image/resize,m_lfit,w_750,h_256/format,f_jpg/quality,Q_90"
}, {
"auto_id": 8,
"image_url": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1679278913413/%E6%A0%8F%E7%9B%AEbanner.jpeg?x-bce-process=image/resize,m_lfit,w_750,h_256/format,f_jpg/quality,Q_90"
}, {
"auto_id": 9,
"image_url": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1679279943458/750%2B274.jpg?x-bce-process=image/resize,m_lfit,w_750,h_256/format,f_jpg/quality,Q_90"
}, {
"auto_id": 10,
"image_url": "https://baidu-vr-zion-server.cdn.bcebos.com/stuff/upload/1679279974352/750%2B274.png?x-bce-process=image/resize,m_lfit,w_750,h_256/format,f_jpg/quality,Q_90"
}]
}播放记录存储&更新 账号级别存储:添加账号+key字段来缓存,记录当前播放状态,如:播放电台媒体,栏目选集
| 项目 | 缓存字段 | SO_KEY |
|---|---|---|
| 类型 | 播放类型 | UID+HistoryAudioType |
| 电台 | 电台音频id | UID + RadioChannel |
| 电台 | 电台音频播放进度 | UID + RadioHistoryPosition |
| 栏目 | 栏目ID | UID+BroadcastAlbum |
| 栏目 | 栏目中单集ID | UID+BroadcastEpisode |
| 栏目 | 栏目单集播放进度 | UID+BroadcastEpisodeHistoryPosition |
订阅电台云控事件
//订阅电台云控数据
var cloudControllerManager = ServiceManager.Get<ICloudControllerManager>();
cloudControllerManager.Subscribe("radio_config_v2", SubscribeRadioChannelCallback); //数据拉取完成事件
MessageDispatcher.SendMessage(RadioBroadcastMsg.RADIO_BANNERLIST_COMPLETE); //获取电台Banner列表数据完成通知
MessageDispatcher.SendMessage(RadioBroadcastMsg.RADIO_ALBUMLIST_COMPLETE); //获取电台栏目列表(专辑)完成通知
MessageDispatcher.SendMessage(RadioBroadcastMsg.RADIO_ALBUMEPISODELIST_COMPLETE); //电台某一栏目(专辑)下所有媒体列表
MessageDispatcher.SendMessage(RadioBroadcastMsg.RADIO_ALL_EPISODELIST_COMPLETE); //电台所有栏目(专辑)下所有媒体列表