进阶功能

更新时间: 2025/07/16 09:56:20

本文介绍如何实现网易云信在线直播(直播房)的进阶功能,包括美颜、礼物、连线 PK 功能。有关重要管理类和字段介绍,请参考 名词解释

前提条件

根据本文操作前,请确保您已经实现了 基础功能

美颜功能

网易云信直播房使用了 相芯美颜,您可以在视频帧回调的地方添加相芯相关的接口。

JavapreviewRoomContext
    .getPreviewController()
    .setVideoFrameCallback(
        true,
        frame -> {
        // 通过这里的回调,将视频帧推送给三方美颜
        // 例如相芯美颜:beautyModule.onFrameAvailable(frame);
        if (LiveStreamUtils.skipFrame-- > 0) {
            return null;
        } else {
            return frame;
        }
        });

礼物功能

  1. 观众调用 sendBatchGift 接口发送礼物。

    JavaNELiveStreamKit.getInstance().sendBatchGift(
        giftId,            // 礼物 ID,需要与后端服务定义的礼物 ID 一致
        giftCount,         // 礼物数量
        targetUserUuids,   // 是接收礼物的用户 ID 列表
        new NECallback<Void>() {
            @Override
            public void onSuccess(Void unused) {
                // 礼物发送成功
            }
    
            @Override
            public void onError(int code, String msg) {
                // 礼物发送失败
            }
        }
    );
    
  2. 通过监听 onReceiveBatchGift 接收礼物通知。

    Java@Override
    public void onReceiveBatchGift(NEVoiceRoomBatchGiftModel giftModel) {
        // 收到礼物
        String senderUserUuid = giftModel.getSenderUserUuid();
        String senderNick = giftModel.getSenderNick();
        int giftId = giftModel.getGiftId();
        int giftCount = giftModel.getGiftCount();
        // 处理礼物展示逻辑
    }
    

直播连线 PK

主播连线 PK 相关的功能,都在 CoHostManager 中管理。

  1. 通过添加 addListener 主播连线 PK 事件监听。

    Javaprivate final NECoHostListener coHostListener =
      new NECoHostListener() {
        @Override
        public void onConnectionUserListChanged(
            @NonNull List<ConnectionUser> connectedList,
            @NonNull List<ConnectionUser> joinedList,
            @NonNull List<ConnectionUser> leavedList) {
            // 主播连麦列表变更事件
        }
    
        // 更多事件回调方法...
    }
    
    // 添加主播连线 PK 事件监听。
    NELiveStreamKit.getInstance().getCoHostManager().addListener(coHostListener);
    
  2. 主播发起 PK 请求。

    JavaNELiveStreamKit.getInstance().getCoHostManager().requestConnection(
        targetRoomUuid,       // 目标主播房间 ID
        timeoutSeconds,       // 连线 PK 请求的超时时间,单位为秒
        new NECallback<Void>() {
            @Override
            public void onSuccess(Void unused) {
                // 发起 PK 请求成功
            }
    
            @Override
            public void onError(int code, String msg) {
                // 发起 PK 请求失败
            }
        }
    );
    
  3. 目标主播接收主播连线 PK 请求通知。

    主播连线相关的通知都在 NECoHostListener 中管理。

    Java @Override
     public void onConnectionRequestReceived(
         @NonNull ConnectionUser inviter,
         @NonNull List<ConnectionUser> inviteeList,
         @Nullable String ext) {
         // 显示接受或拒绝 PK 的 UI
     }
    
  4. 目标主播接受或拒绝 PK 请求。

    Java// 接受 PK 请求
    NELiveStreamKit.getInstance().getCoHostManager().acceptConnection(
        roomUuid,         // 邀请者房间 ID
        new NECallback<Void>() {
            @Override
            public void onSuccess(Void unused) {
                // 接受 PK 请求成功
            }
    
            @Override
            public void onError(int code, String msg) {
                // 接受 PK 请求失败
            }
        }
    );
    
    // 或拒绝 PK 请求
    NELiveStreamKit.getInstance().getCoHostManager().rejectConnection(
        roomUuid,         // 邀请者房间 ID
        new NECallback<Void>() {
            @Override
            public void onSuccess(Void unused) {
                // 拒绝 PK 请求成功
            }
    
            @Override
            public void onError(int code, String msg) {
                // 拒绝 PK 请求失败
            }
        }
    );
    
  5. 主动结束 PK。

    JavaNELiveStreamKit.getInstance().getCoHostManager().disconnect();
    

通过以上功能,您可以实现一个功能完善的直播应用。

更多功能

更多高级功能和详细 API 用法,请参考《房间组件 NERoom》NERoom 文档,欢迎 提交工单 联系网易云信技术支持工程师。

此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 美颜功能
  • 礼物功能
  • 直播连线 PK
  • 更多功能