鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

启动视频流云手机实例

可根据需求配置cfct_config文件中的参数启动不同帧率的视频流云手机实例,配置default.prop文件中的参数启动不同网络连接方式、抓图和初始编码、使用WebRTC进行数据传输的视频流云手机实例。

  1. (可选)若需要启动不同帧率的视频流云手机实例,则需要修改cfct_config配置文件中的帧率属性值。默认值帧率为30fps:
    BUILD_FPS=30
  2. (可选)若需要启动不同网络连接方式、抓图和初始编码参数的视频流云手机实例,则需要进行以下配置。
    1. 从DemoVideoEngine.tar.gz中解压获取“vendor”文件夹,并将其中的“default.prop”文件拷贝至当前目录。
      1
      2
      3
      cd /home/kbox_video/
      tar -xvf DemoVideoEngine.tar.gz vendor
      cp vendor/default.prop .
      
    2. 配置抓图和编码参数。通过修改default.prop中对应属性值,或者在启动后在容器内通过setprop命令更改对应属性,属性如表1所示。
      表1 视频流引擎配置属性字段描述表

      字段名称

      字段描述

      取值范围

      默认值

      vmi.video.encodertype

      编码器类型配置项,当该项配置为CPU,即使用软编时,若云手机需要运行较大负载应用,为防止默认绑核方式(2容器2核)的CPU资源不足,建议更改绑核方式为绑NUMA,修改方法如下:

      将cfct_config配置文件中“CPU_BIND_MODE”字段修改为“1”

      • 0:CPUCPU软编码器编码)
      • 1VPU外置硬件编码器编码
      • 2:GPU(暂不支持)

      1默认VPU外置硬件编码器编码

      vmi.video.videoframetype

      帧数据输出格式。

      • 0:H264
      • 1YUV只有当encodertype取值为0时支持)
      • 2:RGB暂不支持
      • 3:H265(vmi.video.encodertype取值为0时不可用)

      0:H264

      vmi.video.frame.width

      自适应分辨率宽度(必须是8的倍数)。

      360~1440

      720

      vmi.video.frame.height

      自适应分辨率高度(必须是8的倍数)。

      360~3200

      1280

      vmi.video.frame.density

      自适应分辨率屏幕像素密度。

      240~640

      320

      vmi.video.encode.gopsize

      编码GOP大小配置项。

      30~3000

      30:默认编码GOP大小为30

      vmi.video.encode.profile

      编码profile配置项(H.265编码仅支持配置main)。

      • 0:baseline仅H264支持
      • 1main
      • 2:high仅H264支持

      0:baseline

      vmi.video.encode.bitrate

      编码码率。

      500000~50000000

      单位bps

      3000000

      vmi.video.encode.forcekeyframe

      编码强制I帧配置项。

      • 0不触发编码强制I
      • 1:在下一帧强制生成I帧

      0默认不触发编码强制I

      vmi.video.encode.rcmode

      编码格式参数项。

      • 0:ABR平均码率模式(暂不支持)
      • 1:CRF画质优先模式(暂不支持)
      • 2:CBR恒定码率模式
      • 3:CAPPED_CRF画质优先并限制最大码率模式

      2:CBR恒定码率模式

      vmi.video.encode.crf

      crf码控级别。

      0-51

      34

      vmi.video.encode.maxcrfrate

      crf码率峰值。

      500000~100000000

      10000000

      vmi.video.encode.vbvbuffersize

      crf码率缓冲区大小。

      • -1:自动模式
      • 0:禁用峰值比特率限制
      • [min_vbv_size ~ 3000 ]:在30fps帧率时min_vbv_size为34。

        在60fps帧率时min_vbv_size为17。

      1000

      vmi.video.encode.interpolation

      补帧参数项。

      • 0:关闭补帧
      • 1开启补帧

      1:开启补帧

      vmi.audio.audiotype

      音频输出格式。

      • 0:OPUS
      • 1:PCM

      0:OPUS

      vmi.audio.encode.sampleinterval

      音频输出采样间隔。

      • 5:5ms(暂不支持)
      • 10:10ms
      • 20:20ms(暂不支持)

      10:10ms

      vmi.audio.encode.bitrate

      音频OPUS编码码率(bps)。

      13200~512000

      192000

      vmi.mic.audiotype

      麦克风输入格式。

      • 0:OPUS
      • 1:PCM

      0:OPUS

    3. 如果要改变自适应分辨率的宽高,建议同步修改屏幕像素密度以达到最佳显示效果,推荐的配置说明如表2所示。
      表2 不同分辨率配置说明

      屏幕宽度

      屏幕密度(BUILD_DENSITY)

      720

      320

      1080

      480

      改变视频输出分辨率(与上次启动时配置不同)时,会改变AOSP系统和应用的渲染分辨率,可能会导致部分应用出现兼容性问题或渲染问题。一般此类问题可以通过重新启动应用解决,因此建议在修改分辨率前返回桌面,同时清空后台应用,以提升用户使用体验。

    4. 若需要启动使用WebRTC进行数据传输的视频流云手机实例,则需要修改default.prop中对应属性值配置视频和音频的输出格式, 需要配置的属性字段描述如表3所示。
      表3 WebRTC特性使用需要配置的属性字段描述表

      字段名称

      字段描述

      取值范围

      vmi.video.encodertype

      编码器类型配置项。

      • 0:CPUCPU软编码器编码)
      • 1VPU外置硬件编码器编码
      • 2:GPU(暂不支持)

      vmi.video.videoframetype

      帧数据输出格式。

      • 0:H264
      • 1YUV只有当encodertype取值为0时支持)

      vmi.audio.audiotype

      音频输出格式。

      1(目前WebRTC只支持音频PCM的输出格式)

      vmi.webrtc.connection.serverip

      云手机服务端的IP地址。

      具体IP地址

      vmi.webrtc.connection.udpbeginport

      云手机服务器UDP可用起始端口,默认使用2个端口,则在确定了起始端口后,云手机使用的udp端口为:起始端口+${index}*2-1,起始端口+${index}*2。

      可用的起始端

  3. 启动视频流云手机。
    1
    2
    cd /home/kbox_video/
    ./cfct_video start ${index1} ${index2}
    

    上述命令中${index1}${index2}为设备号,其中${index2}可缺省。

    例:./cfct_video start 2(创建第二号设备)

    ./cfct_video start 2 5(创建第二到第五号设备)

  4. 查看视频流云手机。
    1
    docker ps -a
    

    回显示例如下。

    确认所启动的容器存在,且状态正常。

  5. 确认视频流云手机是否启动成功,其中${index}为启动实例的编号,参见4中命令回显所示的最后一列,如android_35,${index}即为35
    1
    2
    docker exec -it android_${index} sh 
    getprop sys.boot_completed
    

    如果回显信息中sys.boot_completed显示为“1”,则表示启动成功。