10分钟玩转一场直播

目标

  本文档将一步一步带领在10分钟内快速完成一场直播的完整业务流程,本文档适合快速搭建一个直播间,设置相关信息后,完成直播,查看直播详细观看数据优化直播流程的业务场景。

注意:每创建一个频道,会默认创建4个助教子频道,子频道用于协助主讲老师教学或者和用户互动,当然也可以创建自己的子频道,例如客服、班主任、嘉宾等,具体见下面带子频道直播教学场景和带子频道纯视频场景

直播教学场景

  此场景适合于通用的线上教学场景,相当于一个虚拟的教室,包括频道创建、频道初始化、暖场图片/视频、引导图片、讲师信息、直播文档上传等设置,相关代码可以参考下面代码,直接拷贝后修改成为适合自己的课程信息就可以。

注意:每一个频道会默认创建4个子频道,通过示例代码的返回对象可以获取到所有的子频道信息

效果展示

讲师端效果:

image-20210113150803936

助教端:

  • 助教可以查看直播状态;

  • 助教可以查看聊天室成员信息;

  • 助教可以对聊天室严禁词、禁言人员、踢人等进行管理;

  • 助教可以协助讲师对提问、问答和用户进行沟通;

  • 助教可以参与聊天,活跃课堂气氛;

image-20210113163748017

嘉宾端:

嘉宾默认以连麦的方式进入直播间,和讲师互动;

image-20210113161733987

观看端效果:

体验链接:https://live.polyv.cn/watch/2094038

image-20210113142649565
image-20210113143307598

流程

  以下示例代码会根据设置的参数,自动选择调用哪些接口,默认会调用创建频道、频道初始化设置等接口,如果不需要相关功能,去除相关代码即可,例如:不需要创建子频道功能,去除示例代码中的liveCreateSonChannelListRequest.setSonChannels(sonChannels);即可。注:如果同时设置了暖场视频和暖场图片,暖场视频会覆盖暖场图片;

graph LR
style A fill:#00ae9d,stroke:#323232,stroke-width:1px
style B fill:#f29952,stroke:#323232,stroke-width:1px
style C fill:#608913,stroke:#323232,stroke-width:1px
style D fill:#2ca9e0,stroke:#323232,stroke-width:1px
style E fill:#fbdd2d,stroke:#323232,stroke-width:1px
style F fill:#90d6ab,stroke:#323232,stroke-width:1px
style G fill:#2ca9e0,stroke:#323232,stroke-width:1px
style H fill:#e7372a,stroke:#323232,stroke-width:1px
style I fill:#40c1dd,stroke:#323232,stroke-width:1px
style J fill:#bf83ff,stroke:#323232,stroke-width:1px
A[创建频道] --> B[频道初始化设置]
B --> C[暖场图片设置]
B --> D[暖场视频设置]
B --> E[设置讲师信息]
B --> J[创建子频道]
B --> F[设置课件]
subgraph "频道设置(可多选)"
C
D
E
F
J
end
C --> G[封装频道返回]
D --> G
E --> G
J --> G
F --> G
G --> H[开始直播]
H --> I["结束直播,获取观看数据"]

代码示例

     /**
     * 快速创建带子频道的三分屏频道,适用于直播教学场景
     * @throws IOException IO异常
     * @throws NoSuchAlgorithmException 系统异常
     */
//    @Test
    public void testQuickCreatePPTAndSonChannel() throws IOException, NoSuchAlgorithmException {
        //初始化系统,请配置自己的账号信息,正式使用时请全局统一设置
        String userId = "xxx";
        String appId = "xxx";
        String appSecret = "xxx";
        LiveGlobalConfig.init(appId, userId, appSecret);
        log.debug("--初始化完成--");
        
        QuickCreatePPTChannelRequest quickCreatePPTChannelRequest = new QuickCreatePPTChannelRequest();
        QuickCreateChannelResponse quickCreateChannelResponse;
        String path = LiveChannelQuickCreatorTest.class.getResource("/file/PPT.pptx").getPath();
        Calendar instance = Calendar.getInstance();
        instance.set(Calendar.DAY_OF_MONTH, instance.get(Calendar.DAY_OF_MONTH) + 1);
        //创建频道
        //频道相关基础设置-频道名
        quickCreatePPTChannelRequest.setName("带子频道的直播教学场景")
                //频道相关基础设置-频道密码
                .setChannelPasswd(getRandomString(6))
                //频道相关基础设置-连麦人数
                .setLinkMicLimit(5)
                //频道相关基础设置-主持人名称
                .setPublisher("thomas教授")
                //频道相关基础设置-是否无延迟
                .setPureRtcEnabled(LiveConstant.Flag.YES.getFlag())
                //频道相关基础设置-开播时间
                .setStartTime(instance.getTime().getTime())
                //==========================================
                //频道初始化设置-频道图标地址
                .setCoverImg("https://wwwimg.polyv.net/assets/dist/images/v2020/page-home/brand-advantage/row-2-3.svg")
                //频道初始化设置-引导图地址
                .setSplashImg(
                        "https://wwwimg.polyv.net/assets/dist/images/v2020/news-info-md/product-dynamic-bg_v3.jpg")
                //频道初始化设置-频道描述
                .setDesc("POLYV保利威是易方信息科技股份有限公司旗下拥有自主知识产权的视频云计算服务平台,其中包含 云点播 、云直播 " +
                        "和其它视频服务,提供API、SDK技术支持,并拥有国家专利级别的PlaySafe®视频版权保护技术及三套CDN加速,致力为用户提供稳定、安全、快速的企业级视频云服务。")
                //频道初始化设置-设置暖场图
                .setCoverImage("https://s1.videocc.net/live-watch/assets/img/default-splash-img.07657078.jpg")
                //频道初始化设置-点击暖场图跳转的地址
                .setCoverHref("http://www.baidu.com")
                //频道初始化设置-设置暖场视频
//              .setWarmUpFlv("http://www.w3school.com.cn/example/html5/mov_bbb.mp4")
                //==========================================
                //聊天室讲师信息-昵称
                .setNickname("thomas-gogo")
                //聊天室讲师信息-讲师头衔
                .setActor("刘老师")
                //聊天室讲师信息-讲师头像
                .setAvatar(
                        "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2069606413,3553249962&fm=26&gp=0" +
                                ".jpg")
                //==========================================
                // 讲课文档设置-讲课文档,当前支持DOC、PPT、PDF
                .setFile(new File(path))
                //讲课PPT设置-转换类型(‘common’:转普通图片, ‘animate’:转动画效果)
                .setType("common")
                //讲课PPT设置-文档名称
                .setDocName("直播教学课件");
//                //讲课PPT设置-文档转换完成后的回调地址,不需要不传
//                .setCallbackUrl("http://www.baidu.com/callback")
                
        
        LiveCreateSonChannelListRequest liveCreateSonChannelListRequest = new LiveCreateSonChannelListRequest();
        List<LiveCreateSonChannelListRequest.SonChannel> sonChannels = new ArrayList<LiveCreateSonChannelListRequest.SonChannel>();
        sonChannels.add(setSonChannelsInfo1());
        sonChannels.add(setSonChannelsInfo2());
        liveCreateSonChannelListRequest.setSonChannels(sonChannels);
        
        quickCreateChannelResponse = new LiveChannelQuickCreatorServiceImpl().quickCreatePPTSence(quickCreatePPTChannelRequest,
                liveCreateSonChannelListRequest);
        Assert.assertNotNull(quickCreateChannelResponse);
        log.debug("快速创建三分屏频道成功,{}", JSON.toJSONString(quickCreateChannelResponse));
        log.debug("网页开播地址:https://live.polyv.net/web-start/login?channelId={}  , 登录密码: {}",
                quickCreateChannelResponse.getLiveChannelBasicInfoResponse().getChannelId(),
                quickCreatePPTChannelRequest.getChannelPasswd());
        log.debug("网页观看地址:https://live.polyv.cn/watch/{} ",
                quickCreateChannelResponse.getLiveChannelBasicInfoResponse().getChannelId());
        log.debug("嘉宾进入直播间地址:http://live.polyv.net/web-start/guest?channelId={} ,登录密码: {} ",
                quickCreateChannelResponse.getSonChannelInfos().get(0).getAccount(),
                sonChannels.get(0).getPasswd());
        log.debug("助教进入直播间地址:https://live.polyv.net/teacher.html , 登录频道: {}, 登录密码: {}",
                quickCreateChannelResponse.getSonChannelInfos().get(1).getAccount(),
                sonChannels.get(1).getPasswd());
        /**
         * todo : B端客户的业务逻辑,将quickCreateChannelResponse的相关信息保持到自己的DB中组织业务逻辑
         */
    
        /**
         * todo : 采用网页开播或者客户端开播,直播结束后 ,可以拉取用户观看直播的观看数据,对观看效果做进一步的分析,改进直播流程和细节
         */
        //打印观看日志
        printViewLog(quickCreateChannelResponse.getLiveChannelBasicInfoResponse().getChannelId());
    }

 /**
     * 设置子频道信息-嘉宾
     * @return 子频道列表
     */
    private LiveCreateSonChannelListRequest.SonChannel setSonChannelsInfo1() {
        LiveCreateSonChannelListRequest.SonChannel sonChannel1 = new LiveCreateSonChannelListRequest.SonChannel();
        //设置子频道信息,子频道代表助教、嘉宾信息
        sonChannel1
                //子频道角色-默认不传为助教,传Guest为嘉宾
                .setRole("Guest")
                //子频道昵称
                .setNickname("嘉宾-陈先生")
                //子频道登录密码
                .setPasswd(getRandomString(10))
                //子频道头衔
                .setActor("教授")
                //子频道头像
                .setAvatar(
                        "https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2480846186,1530344&fm=15&gp=0.jpg");
        return sonChannel1;
    }
    
    /**
     * 设置子频道信息-助教
     * @return 子频道列表
     */
    private LiveCreateSonChannelListRequest.SonChannel setSonChannelsInfo2() {
        LiveCreateSonChannelListRequest.SonChannel sonChannel2 = new LiveCreateSonChannelListRequest.SonChannel();
        sonChannel2.setRole(null)
                .setNickname("助教-王小姐")
                .setPasswd(getRandomString(10))
                .setActor("王老师")
                .setAvatar("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=356414612,1103487565&fm=15&gp=0" +
                        ".jpg");
        return sonChannel2;
    }
    
    /**
     * 打印频道观看日志
     * @param channelId
     * @throws IOException
     * @throws NoSuchAlgorithmException
     */
    private void printViewLog(String channelId) throws IOException, NoSuchAlgorithmException {
        LiveListChannelViewlogRequest liveListChannelViewlogRequest = new LiveListChannelViewlogRequest();
        LiveListChannelViewlogResponse liveListChannelViewlogResponse;
        Calendar instance = Calendar.getInstance();
        instance.set(Calendar.DAY_OF_MONTH, instance.get(Calendar.DAY_OF_MONTH) + 2);
        //依据频道号和起止时间查询观看日志
        liveListChannelViewlogRequest.setChannelId(channelId)
                .setStartTime(new Date())
                .setEndTime(instance.getTime());
        liveListChannelViewlogResponse = new LiveChannelViewdataServiceImpl().listChannelViewlog(
                liveListChannelViewlogRequest);
        Assert.assertNotNull(liveListChannelViewlogResponse);
        if (liveListChannelViewlogResponse != null) {
            //to do something ......
            log.debug("测试分页查询频道观看日志成功,{}", JSON.toJSONString(liveListChannelViewlogResponse));
        }
    }

请求描述

参数名
必选
类型
说明

name

true

String

自定义频道名称,一般是课程主题、会议主题、培训主题等,例如 财务制度培训、乌镇峰会

channelPasswd

true

String

自定义频道密码,B端讲师通过该密码进入直播间开播,长度不能超过16位,必须同时包含字母和数字

linkMicLimit

false

Integer

连麦人数,-1=<取值范围<=账号级的连麦人数,-1:表示使用账号默认的连麦人数,最大16人(注:账号级连麦人数需通知平台管理员设置才生效)

publisher

false

String

主持人名称

pureRtcEnabled

false

String

是否为无延时直播,Y 表示开启,默认为N

coverImg

false

String

频道图标地址

splashImg

false

String

引导图地址

startTime

false

Long

直播开始时间,13位时间戳,设置为0 表示关闭直播开始时间显示

desc

false

String

直播介绍

nickname

false

String

讲师昵称

actor

false

String

讲师头衔,讲师昵称不为空时该参数必填

avatar

false

String

头像图片地址

coverImage

false

String

暖场图片地址,图片大小建议:800x450,支持PNG、JPEG、GIF格式

coverHref

false

String

点击暖场图片后浏览器跳转地址

warmUpFlv

false

String

暖场视频地址(http地址),移动端不支持FLV视频文件,建议使用MP4视频文件

file

false

File

上传的文件不超过50M,格式限制为(ppt, pdf,pptx,doc,docx,wps, xls,xlsx)

type

false

String

转换类型(‘common’:转普通图片, ‘animate’:转动画效果)默认不传转普通,因为只有ppt,pptx可以转动画,其他类型文件会自动转成普通;文件转动画转失败会直接把类型转为普通

docName

false

String

文档名称(不传默认使用ppt上传的文件获取到的文件名作为文档名称,文档名称不得超过100个字符)

callbackUrl

false

String

文档上传转换成功回调地址

返回描述

参数名
类型
说明

liveChannelBasicInfoResponse

LiveChannelBasicInfoResponse

sonChannelInfos

Array

子频道信息【详见LiveSonChannelInfoResponse参数描述

LiveChannelBasicInfoResponse参数描述

参数名
类型
说明

channelId

String

频道号

name

String

频道名称

channelPasswd

String

频道密码

publisher

String

主持人名称

startTime

Date

直播开始时间,关闭时为null

pageView

Integer

页面累计观看数

likes

Integer

观看页点赞数

coverImg

String

频道图标url

splashImg

String

频道引导图url

splashEnabled

String

引导页开关(取值为Y/N)

desc

String

直播介绍

consultingMenuEnabled

String

咨询提问开关(取值为Y/N)

maxViewerRestrict

String

限制最大在线观看人数开关(取值为Y/N)

maxViewer

Integer

最大在线观看人数

watchStatus

String

频道的观看页状态,取值为:live(直播中)、end(直播结束)、playback(回放中)、waiting(等待直播)

watchStatusText

String

观看页状态描述,直播中,回放中,已结束,未开始

userCategory

UserCategory

频道所属分类的信息【详见UserCategory参数描述

authSettings

Array

直播观看条件列表【详见AuthSetting参数描述

LiveSonChannelInfoResponse参数描述

参数名
类型
说明

account

String

子频道号

userId

String

POLYV用户ID,和保利威官网一致,获取路径:官网->登录->直播(开发设置)

channelId

String

频道号

passwd

String

子频道密码

nickname

String

子频道名称

stream

String

子频道流名(单独使用无效)

status

String

子频道状态

createdTime

Date

创建子频道时间

lastModified

Date

子频道最后修改时间

sort

Integer

频道中所有子频道序号

avatar

String

子频道头像

pageTurnEnabled

String

子频道翻页权限(只能一个子频道有)

notifyEnabled

String

发布公告权限(Y/N)

checkinEnabled

String

开启签到权限(Y/N)

voteEnabled

String

发起投票(Y/N)

role

String

子频道角色

pushUrl

String

子频道推流地址(子频道推流请参考后台导播台使用)

UserCategory参数描述

参数名
类型
说明

categoryId

Integer

分类ID

categoryName

String

分类名称

userId

String

POLYV用户ID,和保利威官网一致,获取路径:官网->登录->直播(开发设置)

rank

Integer

分类的排序值

AuthSetting参数描述

参数名
类型
说明

channelId

String

频道号

userId

String

POLYV用户ID,和保利威官网一致,获取路径:官网->登录->直播(开发设置)

rank

Integer

用于实现一个频道设置两个观看条件,为1或2(1为主要条件,2为次要条件)

globalSettingEnabled

String

是否开启全局设置(Y/N)

enabled

String

是否开启观看条件(Y/N)

authType

String

观看条件类型(1. 无限制 none 2. 验证码观看 code 3. 付费观看 pay 4. 白名单观看 phone 5. 登记观看 info 6. 分享观看 wxshare 7. 自定义授权观看 custom 8. 外部授权观看 external)

authTips

String

白名单观看提示信息

payAuthTips

String

付费观看提示信息

authCode

String

验证码观看方式的验证码

qcodeTips

String

验证码观看方式的二维码提示

qcodeImg

String

验证码观看方式的二维码图片

price

Float

付费观看的价格

watchEndTime

Date

付费观看,截止时间,为null表示:一次付费,永久有效

validTimePeriod

Integer

付费观看的截止时长(天)

customKey

String

自定义授权观看的key

customUri

String

自定义授权观看的接口地址

externalKey

String

外部授权观看的key

externalUri

String

外部授权观看的接口地址

externalRedirectUri

String

外部授权观看,用户直接访问观看页时的跳转地址

普通视频场景

  此场景适合非教学情况下的其他场景,比如直播带货、会议直播、年会直播的场景,和直播教学场景的区别是主播端和观看端的页面排版不同,直播教学场景以三分屏的方式将讲师头像、课件、白板、聊天室集成到一个页面呈现给终端用户,而普通视频场景同时只能呈现讲师摄像头、文档、电脑屏幕的一种,一般情况直接展现讲师摄像头采集的画面。

注意:每一个频道会默认创建4个子频道,通过示例代码的返回对象可以获取到所有的子频道信息

效果展示

讲师端效果(呈现文档给终端用户):

image-20210113173428388

讲师端效果(呈现讲师摄像头采集信息给终端用户):

image-20210113174258015

观看端效果:

image-20210114142711067
image-20210113173537125

助教端:

  • 助教可以查看直播状态;

  • 助教可以查看聊天室成员信息;

  • 助教可以对聊天室严禁词、禁言人员、踢人等进行管理;

  • 助教可以协助讲师对提问、问答和用户进行沟通;

  • 助教可以参与聊天,活跃课堂气氛;

    image-20210114143638606

流程

  如下流程除了 频道创建 和 频道初始化 必须执行,其他都是可选,暖场图片/视频 、讲师信息 、 直播PPT上传,不设相关参数,这些接口将不会被调用,暖场视频和暖场图片只有一个有效,如果同时设置了暖场视频和暖场图片,暖场视频会覆盖暖场图片;

graph LR
style A fill:#00ae9d,stroke:#323232,stroke-width:1px
style B fill:#f29952,stroke:#323232,stroke-width:1px
style C fill:#608913,stroke:#323232,stroke-width:1px
style D fill:#2ca9e0,stroke:#323232,stroke-width:1px
style E fill:#fbdd2d,stroke:#323232,stroke-width:1px
style F fill:#90d6ab,stroke:#323232,stroke-width:1px
style G fill:#2ca9e0,stroke:#323232,stroke-width:1px
style H fill:#e7372a,stroke:#323232,stroke-width:1px
style I fill:#40c1dd,stroke:#323232,stroke-width:1px
style J fill:#bf83ff,stroke:#323232,stroke-width:1px
A[创建频道] --> B[频道初始化设置]
B --> C[暖场图片设置]
B --> D[暖场视频设置]
B --> E[设置讲师信息]
B --> J[创建子频道]
B --> F[设置课件]
subgraph "频道设置(可多选)"
C
D
E
F
J
end
C --> G[封装频道返回]
D --> G
E --> G
J --> G
F --> G
G --> H[开始直播]
H --> I["结束直播,获取观看数据"]

代码示例

/**
 * 快速创建纯视频频道,适合直播带货、会议、年会、活动拍摄、大会直播等直播业务场景
 * 约束:2、同时设置暖场图片和暖场视频只生效暖场视频。
 * @throws IOException IO异常
 * @throws NoSuchAlgorithmException 系统异常
 */
//    @Test
public void testQuickCreateVideoAndSonChannel() throws IOException, NoSuchAlgorithmException {
        //初始化系统,请配置自己的账号信息,正式使用时请全局统一设置
        String userId = "xxx";
        String appId = "xxx";
        String appSecret = "xxx";
        LiveGlobalConfig.init(appId, userId, appSecret);
        log.debug("--初始化完成--");
        
        QuickCreateVideoChannelRequest quickCreateVideoChannelRequest = new QuickCreateVideoChannelRequest();
        QuickCreateChannelResponse quickCreateChannelResponse;
        Calendar instance = Calendar.getInstance();
        instance.set(Calendar.DAY_OF_MONTH, instance.get(Calendar.DAY_OF_MONTH) + 1);
        //创建频道

        //频道相关基础设置-频道名
        quickCreateVideoChannelRequest.setName("带子频道的纯视频直播场景")
        //频道相关基础设置-频道密码
        .setChannelPasswd(getRandomString(6))
        //频道相关基础设置-连麦人数
        .setLinkMicLimit(5)
        //频道相关基础设置-观看页显示的主讲人描述
        .setPublisher("thomas教授")
        //频道相关基础设置-是否无延迟
        .setPureRtcEnabled(LiveConstant.Flag.YES.getFlag())
        //频道相关基础设置-开播时间
        .setStartTime(instance.getTime().getTime())
        //==========================================
        //频道初始化设置-频道图标地址
        .setCoverImg("https://wwwimg.polyv.net/assets/dist/images/v2020/page-home/brand-advantage/row-2-3.svg")
        //频道初始化设置-引导图地址
        .setSplashImg(
        "https://wwwimg.polyv.net/assets/dist/images/v2020/news-info-md/product-dynamic-bg_v3.jpg")
        //频道初始化设置-频道描述
        .setDesc("POLYV保利威是易方信息科技股份有限公司旗下拥有自主知识产权的视频云计算服务平台,其中包含 云点播 、云直播 " +
        "和其它视频服务,提供API、SDK技术支持,并拥有国家专利级别的PlaySafe®视频版权保护技术及三套CDN加速,致力为用户提供稳定、安全、快速的企业级视频云服务。")
        //频道初始化设置-设置暖场图
        .setCoverImage("https://s1.videocc.net/live-watch/assets/img/default-splash-img.07657078.jpg")
        //频道初始化设置-点击暖场图跳转的地址
        .setCoverHref("http://www.baidu.com")
        //频道初始化设置-设置暖场视频
//              .setWarmUpFlv("http://www.w3school.com.cn/example/html5/mov_bbb.mp4")
        //==========================================
        //聊天室讲师信息-昵称
        .setNickname("thomas-gogo")
        //聊天室讲师信息-讲师头衔
        .setActor("刘老师")
        //聊天室讲师信息-讲师头像
        .setAvatar(
        "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2069606413,3553249962&fm=26&gp=0" +
        ".jpg");

        LiveCreateSonChannelListRequest liveCreateSonChannelListRequest = new LiveCreateSonChannelListRequest();
        List<LiveCreateSonChannelListRequest.SonChannel> sonChannels = new ArrayList<>();
        //纯视频场景只能创建助教,不允许创建嘉宾
        sonChannels.add(setSonChannelsInfo2());
        liveCreateSonChannelListRequest.setSonChannels(sonChannels);

        //请求服务器,创建带子频道的纯视频频道
        quickCreateChannelResponse = new LiveChannelQuickCreatorServiceImpl().quickCreateVideoSence(quickCreateVideoChannelRequest,
        liveCreateSonChannelListRequest);

        Assert.assertNotNull(quickCreateChannelResponse);
        log.debug("快速创建纯视频直播频道成功,{}", JSON.toJSONString(quickCreateChannelResponse));
        //无延迟纯视频模式只支持客户端开播
        if (LiveConstant.Flag.YES.getFlag().equals(quickCreateVideoChannelRequest.getPureRtcEnabled())) {
        log.debug("客户端开播地址:https://live.polyv.net/start-client.html?channelId={}  , 登录密码: {}",
        quickCreateChannelResponse.getLiveChannelBasicInfoResponse().getChannelId(),
        quickCreateVideoChannelRequest.getChannelPasswd());
        } else {
        log.debug("网页开播地址:https://live.polyv.net/web-start/login?channelId={}  , 登录密码: {}",
        quickCreateChannelResponse.getLiveChannelBasicInfoResponse().getChannelId(),
        quickCreateVideoChannelRequest.getChannelPasswd());
        }
        log.debug("网页观看地址:https://live.polyv.cn/watch/{} ",
        quickCreateChannelResponse.getLiveChannelBasicInfoResponse().getChannelId());

        //无延迟纯视频模式只支持客户端助教视频连麦
        if (LiveConstant.Flag.YES.getFlag().equals(quickCreateVideoChannelRequest.getPureRtcEnabled())) {
        log.debug("助教客户端进入直播间地址:https://live.polyv.net/teacher.html , 登录频道: {}, 登录密码: {}",
        quickCreateChannelResponse.getSonChannelInfos().get(0).getAccount(),
        sonChannels.get(0).getPasswd());
        } else {
        log.debug("助教进入直播间地址:https://live.polyv.net/teacher.html , 登录频道: {}, 登录密码: {}",
        quickCreateChannelResponse.getSonChannelInfos().get(0).getAccount(),
        sonChannels.get(0).getPasswd());
        }

        /**
         * todo : B端客户的业务逻辑,将quickCreateChannelResponse的相关信息保持到自己的DB中组织业务逻辑
         */

        /**
         * todo : 采用网页开播或者客户端开播,直播结束后 ,可以拉取用户观看直播的观看数据,对观看效果做进一步的分析,改进直播流程和细节
         */
        //打印观看日志
        printViewLog(quickCreateChannelResponse.getLiveChannelBasicInfoResponse().getChannelId());
        }


/**
 * 设置子频道信息-助教
 * @return 子频道列表
 */
private LiveCreateSonChannelListRequest.SonChannel setSonChannelsInfo2() {
        LiveCreateSonChannelListRequest.SonChannel sonChannel2 = new LiveCreateSonChannelListRequest.SonChannel();
        sonChannel2.setRole(null)
        .setNickname("助教-王小姐")
        .setPasswd(getRandomString(10))
        .setActor("王老师")
        .setAvatar("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=356414612,1103487565&fm=15&gp=0" +
        ".jpg");
        return sonChannel2;
        }



/**
 * 打印频道观看日志
 * @param channelId
 * @throws IOException
 * @throws NoSuchAlgorithmException
 */
private void printViewLog(String channelId) throws IOException, NoSuchAlgorithmException {
        LiveListChannelViewlogRequest liveListChannelViewlogRequest = new LiveListChannelViewlogRequest();
        LiveListChannelViewlogResponse liveListChannelViewlogResponse;
        Calendar instance = Calendar.getInstance();
        instance.set(Calendar.DAY_OF_MONTH, instance.get(Calendar.DAY_OF_MONTH) + 2);
        //依据频道号和起止时间查询观看日志
        liveListChannelViewlogRequest.setChannelId(channelId)
        .setStartTime(new Date())
        .setEndTime(instance.getTime());
        liveListChannelViewlogResponse = new LiveChannelViewdataServiceImpl().listChannelViewlog(
        liveListChannelViewlogRequest);
        Assert.assertNotNull(liveListChannelViewlogResponse);
        if (liveListChannelViewlogResponse != null) {
        //to do something ......
        log.debug("测试分页查询频道观看日志成功,{}", JSON.toJSONString(liveListChannelViewlogResponse));
        }
        } 

请求描述

参数名
必选
类型
说明

name

true

String

自定义频道名称,一般是课程主题、会议主题、培训主题等,例如 财务制度培训、乌镇峰会

channelPasswd

true

String

自定义频道密码,B端讲师通过该密码进入直播间开播,长度不能超过16位,必须同时包含字母和数字

linkMicLimit

false

Integer

连麦人数,-1=<取值范围<=账号级的连麦人数,-1:表示使用账号默认的连麦人数,最大16人(注:账号级连麦人数需通知平台管理员设置才生效)

publisher

false

String

观看页显示的主讲人描述

pureRtcEnabled

false

String

是否为无延时直播,Y 表示开启,默认为N

coverImg

false

String

频道图标地址

splashImg

false

String

引导图地址

desc

false

String

直播介绍

startTime

false

Long

直播开始时间,13位时间戳,设置为0 表示关闭直播开始时间显示

coverImage

false

String

暖场图片地址,图片大小建议:800x450,支持PNG、JPEG、GIF格式

coverHref

false

String

点击暖场图片后浏览器跳转地址

warmUpFlv

false

String

暖场视频地址(http地址),移动端不支持FLV视频文件,建议使用MP4视频文件

nickname

false

String

讲师昵称

actor

false

String

讲师头衔,讲师昵称不为空时该参数必填

avatar

false

String

头像图片地址

返回描述

参数名
类型
说明

liveChannelBasicInfoResponse

LiveChannelBasicInfoResponse

sonChannelInfos

Array

子频道信息【详见LiveSonChannelInfoResponse参数描述

LiveChannelBasicInfoResponse参数描述

参数名
类型
说明

channelId

String

频道号

name

String

频道名称

channelPasswd

String

频道密码

publisher

String

主持人名称

startTime

Date

直播开始时间,关闭时为null

pageView

Integer

页面累计观看数

likes

Integer

观看页点赞数

coverImg

String

频道图标url

splashImg

String

频道引导图url

splashEnabled

String

引导页开关(取值为Y/N)

desc

String

直播介绍

consultingMenuEnabled

String

咨询提问开关(取值为Y/N)

maxViewerRestrict

String

限制最大在线观看人数开关(取值为Y/N)

maxViewer

Integer

最大在线观看人数

watchStatus

String

频道的观看页状态,取值为:live(直播中)、end(直播结束)、playback(回放中)、waiting(等待直播)

watchStatusText

String

观看页状态描述,直播中,回放中,已结束,未开始

userCategory

UserCategory

频道所属分类的信息【详见UserCategory参数描述

authSettings

Array

直播观看条件列表【详见AuthSetting参数描述

LiveSonChannelInfoResponse参数描述

参数名
类型
说明

account

String

子频道号

userId

String

POLYV用户ID,和保利威官网一致,获取路径:官网->登录->直播(开发设置)

channelId

String

频道号

passwd

String

子频道密码

nickname

String

子频道名称

stream

String

子频道流名(单独使用无效)

status

String

子频道状态

createdTime

Date

创建子频道时间

lastModified

Date

子频道最后修改时间

sort

Integer

频道中所有子频道序号

avatar

String

子频道头像

pageTurnEnabled

String

子频道翻页权限(只能一个子频道有)

notifyEnabled

String

发布公告权限(Y/N)

checkinEnabled

String

开启签到权限(Y/N)

voteEnabled

String

发起投票(Y/N)

role

String

子频道角色

pushUrl

String

子频道推流地址(子频道推流请参考后台导播台使用)

UserCategory参数描述

参数名
类型
说明

categoryId

Integer

分类ID

categoryName

String

分类名称

userId

String

POLYV用户ID,和保利威官网一致,获取路径:官网->登录->直播(开发设置)

rank

Integer

分类的排序值

AuthSetting参数描述

参数名
类型
说明

channelId

String

频道号

userId

String

POLYV用户ID,和保利威官网一致,获取路径:官网->登录->直播(开发设置)

rank

Integer

用于实现一个频道设置两个观看条件,为1或2(1为主要条件,2为次要条件)

globalSettingEnabled

String

是否开启全局设置(Y/N)

enabled

String

是否开启观看条件(Y/N)

authType

String

观看条件类型(1. 无限制 none 2. 验证码观看 code 3. 付费观看 pay 4. 白名单观看 phone 5. 登记观看 info 6. 分享观看 wxshare 7. 自定义授权观看 custom 8. 外部授权观看 external)

authTips

String

白名单观看提示信息

payAuthTips

String

付费观看提示信息

authCode

String

验证码观看方式的验证码

qcodeTips

String

验证码观看方式的二维码提示

qcodeImg

String

验证码观看方式的二维码图片

price

Float

付费观看的价格

watchEndTime

Date

付费观看,截止时间,为null表示:一次付费,永久有效

validTimePeriod

Integer

付费观看的截止时长(天)

customKey

String

自定义授权观看的key

customUri

String

自定义授权观看的接口地址

externalKey

String

外部授权观看的key

externalUri

String

外部授权观看的接口地址

externalRedirectUri

String

外部授权观看,用户直接访问观看页时的跳转地址

Last updated

Was this helpful?