输入关键词搜索,支持 AI 答疑

背景音乐

更新时间: 2024/11/26 15:44:05

您可以在语聊房中集成曲库 SDK 。曲库 SDK 提供数十万首正版歌曲资源,主播通过搜索或歌曲列表即可播放背景音乐,烘托房间气氛。

功能介绍

语聊房的背景音乐集成了曲库 SDK,您只需调用少量 API 即可快速集成海量正版曲库,解决歌曲版权问题,为您的业务增长保驾护航。

曲库 SDK 包含数十万首版权歌曲,并实时更新。覆盖 70、80 劲歌金曲、 Y 时代流行音乐、Z 时代热门原创,完美匹配不同用户圈层。

背景音乐.png

前提条件

步骤1 初始化曲库 SDK

  1. 调用 NECopyrightedMedia.getInstance() 接口创建版权音乐对象。 示例代码如下:

    NECopyrightedMedia copyRight = NECopyrightedMedia.getInstance();
    
  2. 调用 NECopyrightedMedia.initialize 接口初始化组件。在调用 SDK 初始化接口之前,需要先为应用下的每一位用户生成user账号(account),同时获取对应的 Token。Token 鉴权相关步骤,请参考 曲库动态 Token 鉴权 即可,下文不再赘述。

    示例代码如下:

    NECopyrightedMedia copyRight = NECopyrightedMedia.getInstance();
    HashMap<String, Object> extras = new HashMap<>();
    copyRight.initialize(
        context,
        appkey,
        token,
        user,     //请传入您的应用账号体系中的账号ID,用于数据统计
        extras,
        new NECopyrightedMedia.Callback<Unit>() {
            @Override
            public void success(@Nullable Unit info) {
            Toast.makeText(
                    context,
                    "init CopyrightedMedia success",
                    Toast.LENGTH_LONG)
                .show();
            }
    
            @Override
            public void error(int code, @Nullable String msg) {
            Toast.makeText(
                    context, "init CopyrightedMedia fail", Toast.LENGTH_LONG)
                .show();
            }
        }
    );
    
  3. 调用 NECopyrightedMedia.setSongScene 接口,指定音乐场景为听歌的场景。

    版权曲库支持听歌场景和 K 歌场景,您需要在初始化曲库 SDK 后指定对应的场景。

    // 设置听歌场景
    NECopyrightedMedia.getInstance().setSongScene(TYPE_LISTENING_TO_MUSIC)
    
  4. 调用 NECopyrightedMedia.setEventHandler 接口注册事件通知回调。

    当您的曲库 Token 过期时,会触发 onTokenExpired 回调。此时,您需要参见曲库动态 Token 鉴权生成新的 Token,并调用 renewToken 更新 Token 后才能继续调用 NECopyrightedMedia SDK 的API。

    示例代码如下:

    NECopyrightedMedia.getInstance().setEventHandler(new NECopyrightedEventHandler() {
        @Override
        public void onTokenExpired() {
            // token过期监听回调
        }
    });
    
  5. 调用 NECopyrightedMedia.renewToken 接口更新Token。

    示例代码如下:

    NECopyrightedMedia.getInstance().renewToken(token);
    

    初始化操作完毕,如果能正常调用以下接口,表示初始化成功。

步骤2 获取歌曲列表

房主可以通过搜索、请求歌曲列表、榜单三种方式获取歌曲。

  • 通过搜索获取歌曲

    调用 NECopyrightedMedia.searchSong 接口获取搜索的歌曲列表和歌曲的song ID。

    参数 类型 描述
    keyword String 搜索的关键字。
    channel Int 版权渠道,默认不传则包含所有签约渠道。
    • 1:网易云音乐
    • 2: 咪咕
    pageNum Int 页码。 默认值为 0。
    pageSize Int 每页显示的行数,默认值为 20。
    callback Callback 回调
  • 通过请求歌曲列表获得歌曲

    调用 NECopyrightedMedia.getSongList 接口获取歌曲列表和歌曲的song ID。

  • 通过榜单获取歌曲

    调用 getHotSongList 接口获取推荐歌单的歌曲 song ID。

示例代码如下:

            // 搜索歌曲
            NECopyrightedMedia.getInstance().searchSong("keyword", null, 1, 20, new NECopyrightedMedia.Callback<List<NECopyrightedSong>>() {
              @Override
              public void success(@Nullable List<NECopyrightedSong> info) {

              }

              @Override
              public void error(int code, @Nullable String msg) {

              }
            });

            // 获取歌曲列表
            NECopyrightedMedia.getInstance().getSongList(null, null, 1, 20, new NECopyrightedMedia.Callback<List<NECopyrightedSong>>() {
              @Override
              public void success(@Nullable List<NECopyrightedSong> info) {

              }

              @Override
              public void error(int code, @Nullable String msg) {

              }
            });

            // 获取热门歌曲列表
            NECopyrightedMedia.getInstance().getHotSongList(NECopyrightedHotType.HOTTYPE_DEFAULT, NECopyrightedHotDimension.HOTDIMENSION_APPLICATION, null, 1, 20, new NECopyrightedMedia.Callback<List<NECopyrightedHotSong>>() {
              @Override
              public void success(@Nullable List<NECopyrightedHotSong> info) {

              }

              @Override
              public void error(int code, @Nullable String msg) {

              }
            });

步骤3 点歌并下载歌曲

调用 NECopyrightedMedia.preloadSong 接口预加载歌曲,包括原唱、歌词和MIDI。

示例代码如下:

 NECopyrightedMedia.getInstance().preloadSong(songId, channel, new NESongPreloadCallback() {
      @Override
      public void onPreloadStart(String songId, int channel) {
        
      }

      @Override
      public void onPreloadProgress(String songId, int channel, float progress) {

      }

      @Override
      public void onPreloadComplete(String songId, int channel, int errorCode, String msg) {

      }
    });

步骤4 房主播放歌曲

房主调用 playEffect 接口播放歌曲。

NERtcCreateAudioEffectOption neRtcCreateAudioEffectOption = new NERtcCreateAudioEffectOption();
neRtcCreateAudioEffectOption.path="";// 音乐文件路径
neRtcCreateAudioEffectOption.loopCount=1;
neRtcCreateAudioEffectOption.sendEnabled=true;
neRtcCreateAudioEffectOption.sendVolume=100;
neRtcCreateAudioEffectOption.playbackEnabled=true;
neRtcCreateAudioEffectOption.playbackVolume=100;
neRtcCreateAudioEffectOption.startTimestamp=30;//主播播放进度
neRtcCreateAudioEffectOption.progressInterval=100;
neRtcCreateAudioEffectOption.sendWithAudioType= NERtcAudioStreamType.kNERtcAudioStreamTypeMain;
NERtcEx.getInstance().playEffect(effectId,neRtcCreateAudioEffectOption);

进阶功能

暂停或恢复歌曲播放

// 暂停歌曲播放
  NERtcEx.getInstance().pauseEffect(effectId);
// 恢复歌曲播放
  NERtcEx.getInstance().resumeEffect(effectId);

切歌

// 停止播放上一首歌
NERtcEx.getInstance().stopEffect(effectId);
// 播放下一首歌
NERtcCreateAudioEffectOption neRtcCreateAudioEffectOption = new NERtcCreateAudioEffectOption();
neRtcCreateAudioEffectOption.path="";// 音乐文件路径
neRtcCreateAudioEffectOption.loopCount=1;
neRtcCreateAudioEffectOption.sendEnabled=true;
neRtcCreateAudioEffectOption.sendVolume=100;
neRtcCreateAudioEffectOption.playbackEnabled=true;
neRtcCreateAudioEffectOption.playbackVolume=100;
neRtcCreateAudioEffectOption.startTimestamp=0;
neRtcCreateAudioEffectOption.progressInterval=100;
neRtcCreateAudioEffectOption.sendWithAudioType= NERtcAudioStreamType.kNERtcAudioStreamTypeSub;
NERtcEx.getInstance().playEffect(effectId,neRtcCreateAudioEffectOption);
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 前提条件
  • 步骤1 初始化曲库 SDK
  • 步骤2 获取歌曲列表
  • 步骤3 点歌并下载歌曲
  • 步骤4 房主播放歌曲
  • 进阶功能
  • 暂停或恢复歌曲播放
  • 切歌