MultiDisplay
Created by pedro, HirogaKatageri on 2021-05-24.
Experimental Class.
It supports multiple streams of 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 ConnectChecker for RTMP. stream3 is ConnectChecker for RTSP)
MultiDisplay multiDisplay = new MultiDisplay(context, true, new ConnectChecker[]{ stream1, stream2 }, new ConnectChecker[]{ stream3 });
You can set an empty array or null if you don't want to use a specific protocol. new MultiDisplay(context, true, new ConnectChecker[]{ 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):
multiDisplay.startStream(MultiType.RTMP, 1, endpoint); //stream2 is started multiDisplay.stopStream(MultiType.RTSP, 0); //stream3 is stopped multiDisplay.getStreamClient(MultiType.RTMP, 0).retry(delay, reason, backupUrl) //retry stream1
NOTE: If you call these methods nothing is executed:
multiDisplay.startStream(endpoint); multiDisplay.stopStream();
The rest of methods without MultiType and index means that you will execute that command in all streams. Read class code if you need info about any method.
Constructors
Functions
Mute microphone, can be called before, while and after stream.
Enable a muted microphone, can be called before, while and after stream.
Force stream to work with fps selected in prepareVideo method. Must be called before prepareVideo. This is not recommend because could produce fps problems.
Get mute state of microphone.
Get record state.
Same to call: prepareAudio(64 * 1024, 32000, true, false, false);
Call this method before use @startStream. If not you will do a stream without audio.
Call this method before use @startStream for streaming internal audio only.
Same to call: rotation = 0; if (Portrait) rotation = 90; prepareVideo(640, 480, 30, 1200 * 1024, true, 0);
Call this method before use @startStream. If not you will do a stream without video.
Create Intent used to init screen capture with startActivityForResult.
Set an audio effect modifying microphone's PCM buffer.
Set a callback to know errors related with Video/Audio encoders
Set the mode to calculate timestamp. By default CLOCK. Must be called before startRecord/startStream or it will be ignored.
Set video bitrate of H264 in bits per second while stream.
Starts recording a MP4 video.
Need be called after @prepareVideo or/and @prepareAudio.
Stop record MP4 video started with @startRecord. If you don't call it file will be unreadable.
Stop stream started with @startStream.