MultiRtpCamera2

Created by pedro on 21/5/21. Experiment class. Support multiple streams in rtmp and rtsp at same time. You must set the same number of ConnectChecker that you want use. For example. 2 RTMP and 1 RTSP: stream1, stream2, stream3 (stream1 and stream2 are ConnectCheckerRtmp. stream3 is ConnectCheckerRtsp) MultiRtpCamera2 multiRtpCamera2 = new MultiRtpCamera2(surfaceView, new ConnectCheckerRtmp[]{ stream1, stream2 }, new ConnectCheckerRtsp[]{ stream3 }); You can set an empty array or null if you don't want use a protocol new MultiRtpCamera2(surfaceView, new ConnectCheckerRtmp[]{ stream1, stream2 }, null); //RTSP protocol is not used In order to use start, stop and other calls you must send type of stream and index to execute it. Example (using previous example interfaces): multiRtpCamera2.startStream(RtpType.RTMP, 1, myendpoint); //stream2 is started multiRtpCamera2.stopStream(RtpType.RTSP, 0); //stream3 is stopped multiRtpCamera2.retry(RtpType.RTMP, 0, delay, reason, backupUrl) //retry stream1 NOTE: If you call this methods nothing is executed: multiRtpCamera2.startStream(endpoint); multiRtpCamera2.stopStream(); multiRtpCamera2.retry(delay, reason, backUpUrl); The rest of methods without RtpType and index means that you will execute that command in all streams. Read class code if you need info about any method.

Constructors

Link copied to clipboard
constructor(surfaceView: SurfaceView, connectCheckerRtmpList: Array<ConnectChecker>, connectCheckerRtspList: Array<ConnectChecker>)
constructor(textureView: TextureView, connectCheckerRtmpList: Array<ConnectChecker>, connectCheckerRtspList: Array<ConnectChecker>)
constructor(openGlView: OpenGlView, connectCheckerRtmpList: Array<ConnectChecker>, connectCheckerRtspList: Array<ConnectChecker>)
constructor(context: Context, useOpengl: Boolean, connectCheckerRtmpList: Array<ConnectChecker>, connectCheckerRtspList: Array<ConnectChecker>)

Properties

Link copied to clipboard

Functions

Link copied to clipboard
open fun addImageListener(format: Int, maxImages: Int, listener: Camera2ApiManager.ImageCallback)
open fun addImageListener(width: Int, height: Int, format: Int, maxImages: Int, listener: Camera2ApiManager.ImageCallback)
open fun addImageListener(width: Int, height: Int, format: Int, maxImages: Int, autoClose: Boolean, listener: Camera2ApiManager.ImageCallback)
Link copied to clipboard
open fun disableAudio()
Mute microphone, can be called before, while and after stream.
Link copied to clipboard
open fun disableAutoFocus()
Link copied to clipboard
Link copied to clipboard
open fun disableLantern()
Link copied to clipboard
Link copied to clipboard
open fun enableAudio()
Enable a muted microphone, can be called before, while and after stream.
Link copied to clipboard
open fun enableAutoFocus()
Link copied to clipboard
open fun enableFaceDetection(faceDetectorCallback: FaceDetectorCallback): Boolean
Link copied to clipboard
open fun enableLantern()
Link copied to clipboard
Enable OIS video stabilization Warning: Turning both OIS and EIS modes on may produce undesirable interaction, so it is recommended not to enable both at the same time.
Link copied to clipboard
Enable EIS video stabilization Warning: Turning both OIS and EIS modes on may produce undesirable interaction, so it is recommended not to enable both at the same time.
Link copied to clipboard
open fun forceCodecType(codecTypeVideo: CodecUtil.CodecType, codecTypeAudio: CodecUtil.CodecType)
Link copied to clipboard
open fun forceFpsLimit(enabled: Boolean)
Force stream to work with fps selected in prepareVideo method.
Link copied to clipboard
open fun forceIncrementalTs(enabled: Boolean)
Some Livestream hosts use Akamai auth that requires RTMP packets to be sent with increasing timestamp order regardless of packet type.
Link copied to clipboard
open fun getBitrate(): Int
Link copied to clipboard
open fun getCacheSize(multiType: RtpType, index: Int): Int
Link copied to clipboard
Get supported properties of the camera
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getExposure(): Int
Link copied to clipboard
open fun getMaxExposure(): Int
Link copied to clipboard
open fun getMinExposure(): Int
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getResolutions(cameraId: String): List<Size>
Get supported resolutions of cameraId in px.
Link copied to clipboard
Get supported resolutions of back camera in px.
Link copied to clipboard
Get supported resolutions of front camera in px.
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getStreamHeight(): Int
Link copied to clipboard
open fun getStreamWidth(): Int
Link copied to clipboard
Link copied to clipboard
open fun getZoom(): Float
Return current zoom level
Link copied to clipboard
open fun getZoomRange(): Range<Float>
Return zoom level range
Link copied to clipboard
open fun hasCongestion(multiType: RtpType, index: Int): Boolean
Link copied to clipboard
open fun isAudioMuted(): Boolean
Get mute state of microphone.
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Use getCameraFacing instead
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun isOnPreview(): Boolean
Get preview state.
Link copied to clipboard
open fun isRecording(): Boolean
Get record state.
Link copied to clipboard
open fun isStreaming(): Boolean
Get stream state.
open fun isStreaming(multiType: RtpType, index: Int): Boolean
Link copied to clipboard
Link copied to clipboard
open fun pauseRecord()
Link copied to clipboard
open fun prepareAudio(): Boolean
Same to call: prepareAudio(64 * 1024, 32000, true, false, false);
open fun prepareAudio(bitrate: Int, sampleRate: Int, isStereo: Boolean): Boolean
open fun prepareAudio(bitrate: Int, sampleRate: Int, isStereo: Boolean, echoCanceler: Boolean, noiseSuppressor: Boolean): Boolean

open fun prepareAudio(audioSource: Int, bitrate: Int, sampleRate: Int, isStereo: Boolean, echoCanceler: Boolean, noiseSuppressor: Boolean): Boolean
Call this method before use @startStream.
Link copied to clipboard
open fun prepareVideo(): Boolean
Same to call: isHardwareRotation = true; if (openGlVIew) isHardwareRotation = false; prepareVideo(640, 480, 30, 1200 * 1024, isHardwareRotation, 90);
open fun prepareVideo(width: Int, height: Int, bitrate: Int): Boolean
open fun prepareVideo(width: Int, height: Int, fps: Int, bitrate: Int, iFrameInterval: Int, rotation: Int): Boolean

open fun prepareVideo(width: Int, height: Int, fps: Int, bitrate: Int, rotation: Int): Boolean
backward compatibility reason
open fun prepareVideo(width: Int, height: Int, fps: Int, bitrate: Int, iFrameInterval: Int, rotation: Int, profile: Int, level: Int): Boolean
Call this method before use @startStream.
Link copied to clipboard
Link copied to clipboard
open fun replaceView(context: Context)
open fun replaceView(openGlView: OpenGlView)
Link copied to clipboard
open fun requestKeyFrame()
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun resizeCache(newSize: Int)
open fun resizeCache(multiType: RtpType, index: Int, newSize: Int)
Link copied to clipboard
open fun resumeRecord()
Link copied to clipboard
open fun reTry(multiType: RtpType, index: Int, delay: Long, reason: String, @Nullable backupUrl: String): Boolean
Link copied to clipboard
open fun setAudioCodec(codec: AudioCodec)
Link copied to clipboard
open fun setAudioMaxInputSize(size: Int)
Set a custom size of audio buffer input.
Link copied to clipboard
open fun setAuthorization(user: String, password: String)
open fun setAuthorization(multiType: RtpType, index: Int, user: String, password: String)
Link copied to clipboard
open fun setCameraCallbacks(callbacks: CameraCallbacks)
Link copied to clipboard
open fun setCheckServerAlive(enable: Boolean)
Link copied to clipboard
open fun setCustomAudioEffect(customAudioEffect: CustomAudioEffect)
Set an audio effect modifying microphone's PCM buffer.
Link copied to clipboard
open fun setEncoderErrorCallback(encoderErrorCallback: EncoderErrorCallback)
Set a callback to know errors related with Video/Audio encoders
Link copied to clipboard
open fun setExposure(value: Int)
Link copied to clipboard
open fun setFocusDistance(distance: Float)
Link copied to clipboard
Link copied to clipboard
open fun setLogs(enable: Boolean)
Link copied to clipboard
open fun setMicrophoneMode(microphoneMode: MicrophoneMode)
Must be called before prepareAudio.
Link copied to clipboard
open fun setOpticalZoom(level: Float)
Link copied to clipboard
open fun setRecordController(recordController: BaseRecordController)
Link copied to clipboard
open fun setReTries(reTries: Int)
Link copied to clipboard
open fun setVideoBitrateOnFly(bitrate: Int)
Set video bitrate of H264 in bits per second while stream.
Link copied to clipboard
open fun setVideoCodec(codec: VideoCodec)
Link copied to clipboard
open fun setZoom(event: MotionEvent)
open fun setZoom(level: Float)
Set zoomIn or zoomOut to camera.
Link copied to clipboard
open fun startPreview()
open fun startPreview(cameraFacing: CameraHelper.Facing)
open fun startPreview(cameraId: String)
open fun startPreview(cameraFacing: CameraHelper.Facing, rotation: Int)
open fun startPreview(width: Int, height: Int)
open fun startPreview(cameraId: String, rotation: Int)
open fun startPreview(cameraFacing: CameraHelper.Facing, width: Int, height: Int)
open fun startPreview(cameraId: String, width: Int, height: Int)
open fun startPreview(cameraFacing: CameraHelper.Facing, width: Int, height: Int, rotation: Int)
open fun startPreview(cameraId: String, width: Int, height: Int, rotation: Int)
open fun startPreview(cameraId: String, width: Int, height: Int, fps: Int, rotation: Int)

open fun startPreview(cameraFacing: CameraHelper.Facing, width: Int, height: Int, fps: Int, rotation: Int)
Start camera preview.
Link copied to clipboard
Link copied to clipboard
open fun startStream(url: String)
Need be called after @prepareVideo or/and @prepareAudio.
open fun startStream(multiType: RtpType, index: Int, url: String)
Link copied to clipboard
open fun startStreamAndRecord(url: String, path: String)
Link copied to clipboard
open fun stopPreview()
Stop camera preview.
Link copied to clipboard
open fun stopRecord()
Stop record MP4 video started with @startRecord.
Link copied to clipboard
open fun stopStream()
Stop stream started with @startStream.
open fun stopStream(multiType: RtpType, index: Int)
Link copied to clipboard
open fun switchCamera()
Switch camera used.
open fun switchCamera(cameraId: String)
Choose a specific camera to use.
Link copied to clipboard
open fun tapToFocus(event: MotionEvent)