被 com.juphoon.cloud.JCMediaDeviceImpl 继承.

class  JCMediaDeviceAudioParam
 
class  JCMediaDeviceCamera
 

Public 成员函数

abstract boolean isCameraOpen ()
 
abstract boolean isSpeakerOn ()
 
abstract JCMediaDeviceCamera getCamera ()
 
abstract List< JCMediaDeviceCameragetCameras ()
 
abstract JCMediaDeviceVideoCanvas startCameraVideo (@RenderType int renderType)
 
abstract JCMediaDeviceVideoCanvas startVideo (String videoSource, @RenderType int renderType)
 
abstract void stopVideo (@NonNull JCMediaDeviceVideoCanvas canvas)
 
abstract boolean isAudioStart ()
 
abstract boolean startAudio ()
 
abstract boolean stopAudio ()
 
abstract boolean startCamera ()
 
abstract boolean stopCamera ()
 
abstract boolean switchCamera ()
 
abstract boolean switchCamera (JCMediaDeviceCamera camera)
 
abstract void setCameraProperty (int width, int height, int frameRate)
 
abstract void setScreenCaptureProperty (int width, int height, int frameRate)
 
abstract int getCameraType (int cameraIndex)
 
abstract void enableSpeaker (boolean enable)
 
abstract boolean isVideoFileOpen ()
 
abstract String getVideoFileId ()
 
abstract boolean startVideoFile ()
 
abstract void setVideoFileFrame (byte[] data, @VideoPixelFormat int format, int width, int height, int angle, int mirror, boolean keyFrame)
 
abstract boolean stopVideoFile ()
 
abstract int getAudioRouteType ()
 
abstract void setVideoAngle (@VideoAngle int angle)
 
abstract int getVideoAngle ()
 

静态 Public 成员函数

static JCMediaDevice create (JCClient client, JCMediaDeviceCallback callback)
 
static void destroy ()
 

Public 属性

boolean defaultSpeakerOn = false
 
boolean useInternalAudioDeviceLogic = true
 
JCMediaDeviceCamera defaultCamera
 
JCMediaDeviceAudioParam audioParam
 

静态 Public 属性

static final int RENDER_FULL_SCREEN = 0
 
static final int RENDER_FULL_CONTENT = 1
 
static final int RENDER_FULL_AUTO = 2
 
static final int CAMERA_NONE = 0
 
static final int CAMERA_FRONT = 1
 
static final int CAMERA_BACK = 2
 
static final int CAMERA_UNKNOWN = 3
 
static final int I420 = 1
 
static final int IYUV = 2
 
static final int RGB24 = 3
 
static final int ABGR = 4
 
static final int ARGB = 5
 
static final int ARGB444 = 6
 
static final int RGB565 = 7
 
static final int ARGB1555 = 8
 
static final int YUY2 = 9
 
static final int YV12 = 10
 
static final int UYVY = 11
 
static final int MJPG = 12
 
static final int NV21 = 13
 
static final int NV12 = 14
 
static final int BGRA = 15
 
static final int H264 = 100
 
static final int AUDIO_ROUTE_RECEIVER = 0
 
static final int AUDIO_ROUTE_SPEAKER = 1
 
static final int AUDIO_ROUTE_HEADSET = 2
 
static final int AUDIO_ROUTE_BLUETOOTH = 3
 
static final int VIDEO_ANGLE_AUTO = -1
 
static final int VIDEO_ANGLE_0 = 0
 
static final int VIDEO_ANGLE_90 = 90
 
static final int VIDEO_ANGLE_180 = 180
 
static final int VIDEO_ANGLE_270 = 270
 

详细描述

用于管理设备

成员函数说明

◆ create()

static JCMediaDevice com.juphoon.cloud.JCMediaDevice.create ( JCClient  client,
JCMediaDeviceCallback  callback 
)
inlinestatic

创建 JCMediaDevice 对象

JCMediaDevice 的所有接口函数,如无特殊说明,都建议在主线程调用

注解
参数
clientJCClient 对象
callbackJCMediaDeviceCallback 对象,用于回调相关通知
返回
JCMediaDevice 对象
异常
JCClient、JCMediaDeviceCallback 任意一个参数传空就会出现调用异常

◆ destroy()

static void com.juphoon.cloud.JCMediaDevice.destroy ( )
inlinestatic

销毁 JCMediaDevice 对象

该方法为同步调用,需要等待 JCMediaDevice 实例资源释放后才能执行其他操作,调用此方法后,你将无法再使用 JCMediaDevice 的其它方法和回调。
我们 不建议 在 JCSDK 的回调中调用此方法销毁 JCMediaDevice 对象,有可能会出现崩溃。
如需在销毁后再次创建 JCMediaDevice 实例,需要等待 destroy 方法执行结束后再创建实例。

◆ isCameraOpen()

abstract boolean com.juphoon.cloud.JCMediaDevice.isCameraOpen ( )
abstract

摄像头是否已打开

返回
摄像头是否已打开
  • true: 已打开
  • false: 未打开

◆ isSpeakerOn()

abstract boolean com.juphoon.cloud.JCMediaDevice.isSpeakerOn ( )
abstract

扬声器是否已打开

返回
扬声器是否已打开
  • true: 已打开
  • false: 未打开

◆ getCamera()

abstract JCMediaDeviceCamera com.juphoon.cloud.JCMediaDevice.getCamera ( )
abstract

获取当前的摄像头

返回
JCMediaDeviceCamera 对象,当前摄像头

◆ getCameras()

abstract List<JCMediaDeviceCamera> com.juphoon.cloud.JCMediaDevice.getCameras ( )
abstract

获取摄像头列表

返回
摄像头列表

◆ startCameraVideo()

abstract JCMediaDeviceVideoCanvas com.juphoon.cloud.JCMediaDevice.startCameraVideo ( @RenderType int  renderType)
abstract

开始自身视频渲染

获取本端视频预览对象 JCMediaDeviceVideoCanvas ,通过此对象能获得视图用于UI显示
一对一通话建议使用 startSelfVideo 方法代替,频道建议使用 startVideo 方法代替

参数
renderType渲染模式:
返回

◆ startVideo()

abstract JCMediaDeviceVideoCanvas com.juphoon.cloud.JCMediaDevice.startVideo ( String  videoSource,
@RenderType int  renderType 
)
abstract

开始其他端的视频渲染

获取其他端的视频预览对象 JCMediaDeviceVideoCanvas ,通过此对象能获得视图用于UI显示
一对一通话建议使用 startOtherVideo 方法代替,频道建议使用 startVideo 方法代替

参数
videoSource渲染标识串,通过 JCMediaChannelParticipantgetRenderId 方法和 JCCallItemgetRenderId 方法可以得到
renderType渲染模式:
返回
JCMediaDeviceVideoCanvas 对象

◆ stopVideo()

abstract void com.juphoon.cloud.JCMediaDevice.stopVideo ( @NonNull JCMediaDeviceVideoCanvas  canvas)
abstract

停止视频渲染

一对一通话建议使用 stopSelfVideostopOtherVideo 方法代替,频道建议使用 stopVideo 方法代替

参数
canvasJCMediaDeviceVideoCanvas 对象,由 startVideostartCameraVideo 返回

◆ isAudioStart()

abstract boolean com.juphoon.cloud.JCMediaDevice.isAudioStart ( )
abstract

音频是否已打开

返回
音频是否已打开
  • true: 已打开
  • false: 未打开

◆ startAudio()

abstract boolean com.juphoon.cloud.JCMediaDevice.startAudio ( )
abstract

启动音频

在通话连接中或者加入频道成功时,内部会自动调用此方法来启动音频

返回
调用是否成功
  • true:正常执行调用流程
  • false:调用失败

◆ stopAudio()

abstract boolean com.juphoon.cloud.JCMediaDevice.stopAudio ( )
abstract

停止音频

在通话挂断时或者离开频道时,内部会自动调用此方法来停止音频

返回
调用是否成功
  • true:正常执行调用流程
  • false:调用失败

◆ startCamera()

abstract boolean com.juphoon.cloud.JCMediaDevice.startCamera ( )
abstract

开启摄像头

返回
调用是否成功
  • true:正常执行调用流程,存在以下两种场景:
    • 若调用此方法前摄像头已打开,不会收到通知
    • 若调用此方法前摄像头未打开,会收到 onCameraUpdate 通知
  • false:调用失败,不会收到通知

◆ stopCamera()

abstract boolean com.juphoon.cloud.JCMediaDevice.stopCamera ( )
abstract

关闭摄像头

返回
调用是否成功
  • true:正常执行调用流程,存在以下两种场景:
    • 若调用此方法前摄像头已打开,会收到 onCameraUpdate 通知
    • 若调用此方法前摄像头未打开,不会收到通知
  • false:调用失败

◆ switchCamera() [1/2]

abstract boolean com.juphoon.cloud.JCMediaDevice.switchCamera ( )
abstract

切换摄像头

内部会根据当前摄像头类型来进行切换

  • 调用此方法时要保证摄像头已打开,否则将直接返回 false
  • 设备拥有两个以上摄像头,否则将直接返回 true
  • 满足以上两个条件后,内部会调用 switchCamera(JCMediaDeviceCamera) 方法并提供返回值
返回
调用是否成功
  • true:正常执行调用流程
  • false:调用失败

◆ switchCamera() [2/2]

abstract boolean com.juphoon.cloud.JCMediaDevice.switchCamera ( JCMediaDeviceCamera  camera)
abstract

切换摄像头

调用此方法时需要保证摄像头已打开并且摄像头数大于0,否则将直接返回 false

参数
camera摄像头
返回
调用是否成功
  • true:正常执行调用流程
    • 摄像头个数为1,不会收到回调
    • 摄像头个数大于1,会收到 onCameraUpdate 通知
  • false:调用失败,不会收到回调

◆ setCameraProperty()

abstract void com.juphoon.cloud.JCMediaDevice.setCameraProperty ( int  width,
int  height,
int  frameRate 
)
abstract

设置摄像头采集属性

在调用 startSelfVideo 方法或 startVideo 方法开启自身视频渲染前设置即可生效

参数
width采集宽度,默认640
height采集高度,默认360
frameRate采集帧速率,默认24

◆ setScreenCaptureProperty()

abstract void com.juphoon.cloud.JCMediaDevice.setScreenCaptureProperty ( int  width,
int  height,
int  frameRate 
)
abstract

设置屏幕共享采集属性

在调用 enableScreenShare 方法开启屏幕共享前设置即可生效

参数
width采集宽度,默认1280
height采集高度,默认720
frameRate采集帧速率,默认10

◆ getCameraType()

abstract int com.juphoon.cloud.JCMediaDevice.getCameraType ( int  cameraIndex)
abstract

获得摄像头类型

参数
cameraIndex摄像头队列索引
返回
摄像头类型:

◆ enableSpeaker()

abstract void com.juphoon.cloud.JCMediaDevice.enableSpeaker ( boolean  enable)
abstract

开启/关闭扬声器

只有在音频已经启动的情况下调用才会生效

参数
enable开启或者关闭扬声器
  • true: 开启
  • false: 关闭

◆ isVideoFileOpen()

abstract boolean com.juphoon.cloud.JCMediaDevice.isVideoFileOpen ( )
abstract

文件视频源是否已开启

返回
文件视频源是否已开启
  • true: 已开启
  • false: 未开启

◆ getVideoFileId()

abstract String com.juphoon.cloud.JCMediaDevice.getVideoFileId ( )
abstract

获取文件视频源渲染id

返回
文件视频源渲染id

◆ startVideoFile()

abstract boolean com.juphoon.cloud.JCMediaDevice.startVideoFile ( )
abstract

开启视频文件作为视频输入源

注解
文件和摄像头作为视频输入源只能存在一种,如果当前摄像头已开启的话会关闭摄像头
返回
调用是否成功
  • true:正常执行调用流程,存在以下两种场景:
    • 若调用此方法时文件视频源已开启,则不会收到回调
    • 若调用此方法时文件视频源还未开启,则会收到 onCameraUpdate 回调
  • false:调用失败,不会收到回调

◆ setVideoFileFrame()

abstract void com.juphoon.cloud.JCMediaDevice.setVideoFileFrame ( byte[]  data,
@VideoPixelFormat int  format,
int  width,
int  height,
int  angle,
int  mirror,
boolean  keyFrame 
)
abstract

逐帧采集视频画面

  • 调用此方法时要保证文件视频源已开启
  • 当 format 为 H264 格式并且是关键帧,则需要将 0x67 0x68 0x41 的数据作为一帧传入,并且关键帧要以固定间隔传入,例如5秒,否则一开始可能有几秒对端无法显示视频
参数
data画面二进制数据
format视频像素格式
width
height
angle90 的倍数
mirror0 不镜像,1进行左右镜像
keyFrame是否为关键帧,针对 format 为 H264
  • true: 关键帧
  • false: 不是关键帧

◆ stopVideoFile()

abstract boolean com.juphoon.cloud.JCMediaDevice.stopVideoFile ( )
abstract

关闭逐帧采集画面

返回
调用是否成功
  • true:正常执行调用流程,存在以下两种场景:
    • 若调用此方法时文件视频源已关闭,不会收到回调
    • 若调用此方法时文件视频源未关闭,则会收到 onCameraUpdate 回调
  • false:调用失败,不会收到回调

◆ getAudioRouteType()

abstract int com.juphoon.cloud.JCMediaDevice.getAudioRouteType ( )
abstract

音频路由类型

返回
音频路由类型:

◆ setVideoAngle()

abstract void com.juphoon.cloud.JCMediaDevice.setVideoAngle ( @VideoAngle int  angle)
abstract

设置视频窗体角度

参数
angle视频旋转角度:

◆ getVideoAngle()

abstract int com.juphoon.cloud.JCMediaDevice.getVideoAngle ( )
abstract

获取视频窗体角度

返回
视频渲染窗体角度

类成员变量说明

◆ RENDER_FULL_SCREEN

final int com.juphoon.cloud.JCMediaDevice.RENDER_FULL_SCREEN = 0
static

铺满窗口

◆ RENDER_FULL_CONTENT

final int com.juphoon.cloud.JCMediaDevice.RENDER_FULL_CONTENT = 1
static

全图像显示,会有黑边

◆ RENDER_FULL_AUTO

final int com.juphoon.cloud.JCMediaDevice.RENDER_FULL_AUTO = 2
static

自适应

◆ CAMERA_NONE

final int com.juphoon.cloud.JCMediaDevice.CAMERA_NONE = 0
static

未获取到摄像头

◆ CAMERA_FRONT

final int com.juphoon.cloud.JCMediaDevice.CAMERA_FRONT = 1
static

前置摄像头

◆ CAMERA_BACK

final int com.juphoon.cloud.JCMediaDevice.CAMERA_BACK = 2
static

后置摄像头

◆ CAMERA_UNKNOWN

final int com.juphoon.cloud.JCMediaDevice.CAMERA_UNKNOWN = 3
static

未知摄像头

◆ I420

final int com.juphoon.cloud.JCMediaDevice.I420 = 1
static

I420

◆ IYUV

final int com.juphoon.cloud.JCMediaDevice.IYUV = 2
static

IYUV

◆ RGB24

final int com.juphoon.cloud.JCMediaDevice.RGB24 = 3
static

RGB24

◆ ABGR

final int com.juphoon.cloud.JCMediaDevice.ABGR = 4
static

ABGR

◆ ARGB

final int com.juphoon.cloud.JCMediaDevice.ARGB = 5
static

ARGB

◆ ARGB444

final int com.juphoon.cloud.JCMediaDevice.ARGB444 = 6
static

ARGB444

◆ RGB565

final int com.juphoon.cloud.JCMediaDevice.RGB565 = 7
static

RGB565

◆ ARGB1555

final int com.juphoon.cloud.JCMediaDevice.ARGB1555 = 8
static

ARGB1555

◆ YUY2

final int com.juphoon.cloud.JCMediaDevice.YUY2 = 9
static

YUY2

◆ YV12

final int com.juphoon.cloud.JCMediaDevice.YV12 = 10
static

YV12

◆ UYVY

final int com.juphoon.cloud.JCMediaDevice.UYVY = 11
static

UYVY

◆ MJPG

final int com.juphoon.cloud.JCMediaDevice.MJPG = 12
static

MJPG

◆ NV21

final int com.juphoon.cloud.JCMediaDevice.NV21 = 13
static

NV21

◆ NV12

final int com.juphoon.cloud.JCMediaDevice.NV12 = 14
static

NV12

◆ BGRA

final int com.juphoon.cloud.JCMediaDevice.BGRA = 15
static

BGRA

◆ H264

final int com.juphoon.cloud.JCMediaDevice.H264 = 100
static

H264

◆ AUDIO_ROUTE_RECEIVER

final int com.juphoon.cloud.JCMediaDevice.AUDIO_ROUTE_RECEIVER = 0
static

听筒

◆ AUDIO_ROUTE_SPEAKER

final int com.juphoon.cloud.JCMediaDevice.AUDIO_ROUTE_SPEAKER = 1
static

扬声器

◆ AUDIO_ROUTE_HEADSET

final int com.juphoon.cloud.JCMediaDevice.AUDIO_ROUTE_HEADSET = 2
static

有线耳机

◆ AUDIO_ROUTE_BLUETOOTH

final int com.juphoon.cloud.JCMediaDevice.AUDIO_ROUTE_BLUETOOTH = 3
static

蓝牙耳机

◆ VIDEO_ANGLE_AUTO

final int com.juphoon.cloud.JCMediaDevice.VIDEO_ANGLE_AUTO = -1
static

自动

◆ VIDEO_ANGLE_0

final int com.juphoon.cloud.JCMediaDevice.VIDEO_ANGLE_0 = 0
static

0度

◆ VIDEO_ANGLE_90

final int com.juphoon.cloud.JCMediaDevice.VIDEO_ANGLE_90 = 90
static

90度

◆ VIDEO_ANGLE_180

final int com.juphoon.cloud.JCMediaDevice.VIDEO_ANGLE_180 = 180
static

180度

◆ VIDEO_ANGLE_270

final int com.juphoon.cloud.JCMediaDevice.VIDEO_ANGLE_270 = 270
static

270度

◆ defaultSpeakerOn

boolean com.juphoon.cloud.JCMediaDevice.defaultSpeakerOn = false

没有插入耳机或外接蓝牙时是否默认开启扬声器,默认关闭

  • true: 默认开启
  • false: 默认关闭

◆ useInternalAudioDeviceLogic

boolean com.juphoon.cloud.JCMediaDevice.useInternalAudioDeviceLogic = true

是否使用内部音频设备逻辑,默认使用

内部音频设备逻辑如下:
1.打开扬声器 - 使用扬声器输出声音 2.连上蓝牙耳机 - 使用蓝牙耳机输出声音,如果扬声器开着则关闭扬声器 3.插入耳机 - 使用耳机输出声音,如果扬声器开着则关闭扬声器 4.蓝牙耳机和有线耳机以最后连上的作为输出 5.关闭扬声器 - (蓝牙耳机或有线耳机) 优于听筒

  • true: 使用内部音频设备逻辑
  • false: 不使用内部音频设备逻辑

◆ defaultCamera

JCMediaDeviceCamera com.juphoon.cloud.JCMediaDevice.defaultCamera

默认摄像头

◆ audioParam

JCMediaDeviceAudioParam com.juphoon.cloud.JCMediaDevice.audioParam

音频参数

需要在调用 startAudio 方法前设置,即连接通话或加入频道前设置此参数。若不设置此参数,将使用默认值。


该类的文档由以下文件生成:
  • cloud/src/main/common/com/juphoon/cloud/JCMediaDevice.java