Package io.antmedia.muxer
Class MuxAdaptor
java.lang.Object
io.antmedia.muxer.MuxAdaptor
- All Implemented Interfaces:
IEndpointStatusListener
,IStreamListener
,IRecordingListener
-
Nested Class Summary
-
Field Summary
Modifier and TypeFieldDescriptionprotected long
static final String
(package private) List<EncoderSettings>
protected boolean
private IAntMediaStreamHandler
protected AppSettings
protected org.bytedeco.ffmpeg.avcodec.AVCodecParameters
private byte[]
private org.bytedeco.javacpp.BytePointer
protected int
private org.bytedeco.ffmpeg.avutil.AVRational
private boolean
Mux adaptor is generally used in RTMP.private Broadcast
protected ClientBroadcastStream
private long
private AtomicBoolean
Accessed from multiple threads so make it volatileprivate long
The time when buffering has been finished.private int
private ConcurrentSkipListSet<IStreamPacket>
private long
protected org.bytedeco.ffmpeg.avutil.AVChannelLayout
private long
private static final int
protected String
protected Muxer
It's defined here because EncoderAdaptor should access it directly to add new streams.protected boolean
protected String
protected String
protected DataStore
protected boolean
protected boolean
private long
protected boolean
protected boolean
protected List<EncoderSettings>
private ConcurrentHashMap<String,
String> private AtomicLong
protected ConcurrentHashMap<String,
Integer> (package private) boolean
private boolean
By default first video key frame should be checked and below flag should be set to true If first video key frame should not be checked, then below should be flag in advanceprivate long
private int
(package private) boolean
private int
protected boolean
protected int
protected int
protected String
protected boolean
protected String
protected String
private AtomicBoolean
protected ConcurrentHashMap<String,
Boolean> protected AtomicBoolean
protected AtomicBoolean
protected static boolean
protected int
private long
private int
private long
protected long
private long
private long
private long
private long
private double
private static org.slf4j.Logger
private int
private boolean
protected boolean
protected boolean
private int
protected PacketFeeder
private long
private Deque<MuxAdaptor.PacketTime>
Packet times in ordered way to calculate streaming health Key is the packet ime Value is the system time at that momentprivate int
private int
protected boolean
private AtomicInteger
static final int
static final int
static final int
protected ConcurrentHashMap<String,
Integer> protected int
protected IScope
protected ServerSettings
protected long
static final int
protected ConcurrentHashMap<String,
String> private boolean
protected StorageClient
protected String
protected ConcurrentLinkedQueue<IStreamPacket>
protected org.bytedeco.ffmpeg.avformat.AVFormatContext
protected String
static final org.bytedeco.ffmpeg.avutil.AVRational
Helper field to get the timebase for milliseconds Pay attention: Use them in basic conversions(av_rescale), do not use them by giving directly to the Muxers, Encoders as Timebase because Muxers and Encoders can close the timebase and we'll get error For muxers, encoders, use the gettimebaseForMs() methodprivate long
protected int
protected long
protected io.vertx.core.Vertx
private int
private org.bytedeco.ffmpeg.avcodec.AVCodecParameters
private byte[]
private org.bytedeco.javacpp.BytePointer
private int
private org.bytedeco.ffmpeg.avutil.AVRational
protected static final long
protected boolean
protected boolean
private int
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addBufferQueue
(IStreamPacket packet) boolean
addID3Data
(String data) private Muxer
boolean
boolean
protected boolean
addMuxerInternal
(Muxer muxer) void
addPacketListener
(IPacketListener listener) boolean
addSEIData
(String data) void
addStream2Muxers
(org.bytedeco.ffmpeg.avcodec.AVCodecParameters codecParameters, org.bytedeco.ffmpeg.avutil.AVRational rat, int streamIndex) void
audioBufferReceived
(long dts, ByteBuffer byteBuffer) void
void
Check if max analyze time has been passed.void
clearCounterMapsAndCancelTimer
(String url, Long id) void
void
long
correctPacketDtsOverflow
(long packetDts) void
debugSetStopRequestExist
(boolean stopRequest) boolean
This method means that if the MuxAdaptor writes incoming packets to muxers(muxerList
) directly without any StreamAdaptor/Encoders It's true for RTMP, SRT ingest to MP4, HLS, RTMP Endpoint writing but it's not true WebRTC ingest.protected void
void
protected void
void
Periodically check the endpoint health status every 2 seconds If each check returned failed, try to republish to the endpointvoid
endpointStatusUpdated
(String url, String status) It's called when the endpoint status is updatedvoid
execute()
findDynamicRecordMuxer
(RecordType recordType) long
static byte[]
getAnnexbExtradata
(byte[] avcExtradata) org.bytedeco.ffmpeg.avcodec.AVCodecParameters
private void
getAudioDataConf
(IStreamCodecInfo codecInfo) int
org.bytedeco.ffmpeg.avutil.AVRational
long
int
Number of frames dropped in the encodingint
Number of packets dropped in the ingestionlong
int
Number of frames waiting to be encoded.static String
getExtendedSubfolder
(String mainTrackId, String streamId, String subFolder) int
int
long
int
double
org.json.simple.JSONObject
getMetaData
(Notify notifyEvent) int
int
int
getRtmpMuxer
(String rtmpUrl) long
static String
getStreamType
(int codecType) static String
getSubfolder
(Broadcast broadcast, AppSettings appSettings) static org.bytedeco.ffmpeg.avutil.AVRational
long
io.vertx.core.Vertx
getVertx()
int
org.bytedeco.ffmpeg.avcodec.AVCodecParameters
void
getVideoDataConf
(IStreamCodecInfo codecInfo) int
org.bytedeco.ffmpeg.avutil.AVRational
int
getWidth()
boolean
init
(IConnection conn, String name, boolean isAppend) Initialize the listener.boolean
Initialize the listener.static MuxAdaptor
initializeMuxAdaptor
(ClientBroadcastStream clientBroadcastStream, Broadcast broadcast, boolean isSource, IScope scope) protected void
void
private void
boolean
isAlreadyRecording
(RecordType recordType, int resolutionHeight) boolean
boolean
isAvc()
boolean
isBlacklistCodec
(int codecId) boolean
boolean
boolean
boolean
static boolean
isEncoderAdaptorShouldBeTried
(Broadcast broadcast, AppSettings appSettings) boolean
boolean
boolean
boolean
boolean
boolean
private void
measureIngestTime
(long pktTimeStamp, long receivedTime) org.json.simple.JSONObject
notifyMetaDataReceived
(IStreamPacket packet, long dts) void
packetReceived
(IBroadcastStream stream, IStreamPacket packet) A packet has been received from a stream.boolean
prepare()
Prepares the parameters.boolean
prepareFromInputFormatContext
(org.bytedeco.ffmpeg.avformat.AVFormatContext inputFormatContext) Prepares parameters and muxers.boolean
prepareMuxer
(Muxer muxer, int resolutionHeight) void
private void
void
boolean
removeMuxer
(Muxer muxer) boolean
removePacketListener
(IPacketListener listener) void
void
setAppSettings
(AppSettings appSettings) void
setAudioCodecParameter
(org.bytedeco.ffmpeg.avcodec.AVCodecParameters audioCodecParameters) void
setAudioDataConf
(byte[] audioDataConf) void
setAudioStreamIndex
(int audioStreamIndex) void
setAudioTimeBase
(org.bytedeco.ffmpeg.avutil.AVRational audioTimeBase) void
setAvc
(boolean avc) void
setBroadcast
(Broadcast broadcast) void
setBuffering
(boolean buffering) void
setBufferingFinishTimeMs
(long bufferingFinishTimeMs) void
setBufferTimeMs
(long bufferTimeMs) void
setDeleteDASHFilesOnExit
(boolean deleteDASHFilesOnExit) void
setDurationMs
(long durationMs) void
setEnableAudio
(boolean enableAudio) void
setEnableVideo
(boolean enableVideo) void
setEncoderSettingsList
(List<EncoderSettings> encoderSettingsList) void
setFileConsumer
(FileConsumer recordingConsumer) void
setFileName
(String fileName) void
setFirstKeyFrameReceivedChecked
(boolean firstKeyFrameReceivedChecked) Setter forfirstKeyFrameReceivedChecked
void
setGeneratePreview
(boolean generatePreview) void
setHeight
(int height) void
setHLSFilesDeleteOnExit
(boolean deleteHLSFilesOnExit) void
setInputQueueSize
(int size) void
setIsRecording
(boolean isRecording) void
setLastFrameTimestamp
(int lastFrameTimestamp) void
setObjectDetectionEnabled
(Boolean objectDetectionEnabled) void
setPacketFeeder
(PacketFeeder packetFeeder) void
setPreviewCreatePeriod
(int previewCreatePeriod) void
setPreviewHeight
(int previewHeight) void
setPreviewOverwrite
(boolean overwrite) void
setStartTime
(long startTime) void
setStorageClient
(StorageClient storageClient) void
setStreamId
(String streamId) void
setStreamSource
(boolean isStreamSource) void
setTotalByteReceived
(long totalByteReceived) static void
setUpEndPoints
(MuxAdaptor muxAdaptor, Broadcast broadcast, io.vertx.core.Vertx vertx) void
setVideoCodecParameter
(org.bytedeco.ffmpeg.avcodec.AVCodecParameters videoCodecParameters) void
setVideoDataConf
(byte[] videoDataConf) void
setVideoStreamIndex
(int videoStreamIndex) void
setVideoTimeBase
(org.bytedeco.ffmpeg.avutil.AVRational videoTimeBase) void
setWebRTCEnabled
(boolean webRTCEnabled) void
setWidth
(int width) void
start()
Start the recording.startRecording
(RecordType recordType, int resolutionHeight) Start recording is used to start recording on the fly(stream is broadcasting).startRtmpStreaming
(String rtmpUrl, int resolutionHeight) void
stop
(boolean shutdownCompletely) Stop the recording.stopRecording
(RecordType recordType, int resolutionHeight) Stop recording is called to stop recording when the stream is broadcasting(on the fly)stopRtmpStreaming
(String rtmpUrl, int resolutionHeight) private void
tryToRepublish
(String url, Long id) private void
void
updateQualityParameters
(long pts, org.bytedeco.ffmpeg.avutil.AVRational timebase, long packetSize, boolean isKeyFrame) void
updateStreamQualityParameters
(String streamId, double speed) void
videoBufferReceived
(long dts, boolean isKeyFrame, long pts, ByteBuffer byteBuffer) private void
void
This method is called when rtmpIngestBufferTime is bigger than zerovoid
writePacket
(org.bytedeco.ffmpeg.avformat.AVStream stream, org.bytedeco.ffmpeg.avcodec.AVPacket pkt) void
writeStreamPacket
(IStreamPacket packet) This is the entrance points for the packet coming from the RTMP stream.void
-
Field Details
-
STAT_UPDATE_PERIOD_MS
public static final int STAT_UPDATE_PERIOD_MS- See Also:
-
ADAPTIVE_SUFFIX
- See Also:
-
logger
private static org.slf4j.Logger logger -
streamPacketQueue
-
isPipeReaderJobRunning
-
isBufferedWriterRunning
-
muxerList
-
deleteHLSFilesOnExit
protected boolean deleteHLSFilesOnExit -
deleteDASHFilesOnExit
protected boolean deleteDASHFilesOnExit -
videoStreamIndex
private int videoStreamIndex -
audioStreamIndex
protected int audioStreamIndex -
previewOverwrite
protected boolean previewOverwrite -
enableVideo
protected volatile boolean enableVideo -
enableAudio
protected volatile boolean enableAudio -
firstAudioPacketSkipped
boolean firstAudioPacketSkipped -
firstVideoPacketSkipped
boolean firstVideoPacketSkipped -
packetPollerId
private long packetPollerId -
bufferQueue
-
stopRequestExist
private volatile boolean stopRequestExist -
RECORDING_ENABLED_FOR_STREAM
public static final int RECORDING_ENABLED_FOR_STREAM- See Also:
-
RECORDING_DISABLED_FOR_STREAM
public static final int RECORDING_DISABLED_FOR_STREAM- See Also:
-
RECORDING_NO_SET_FOR_STREAM
public static final int RECORDING_NO_SET_FOR_STREAM- See Also:
-
WAIT_TIME_MILLISECONDS
protected static final long WAIT_TIME_MILLISECONDS- See Also:
-
isRecording
-
broadcastStream
-
mp4MuxingEnabled
protected boolean mp4MuxingEnabled -
webMMuxingEnabled
protected boolean webMMuxingEnabled -
addDateTimeToMp4FileName
protected boolean addDateTimeToMp4FileName -
hlsMuxingEnabled
protected boolean hlsMuxingEnabled -
dashMuxingEnabled
protected boolean dashMuxingEnabled -
objectDetectionEnabled
protected boolean objectDetectionEnabled -
isHealthCheckStartedMap
-
errorCountMap
-
retryCounter
-
statusMap
-
rtmpEndpointRetryLimit
protected int rtmpEndpointRetryLimit -
healthCheckPeriodMS
protected int healthCheckPeriodMS -
webRTCEnabled
protected boolean webRTCEnabled -
storageClient
-
hlsTime
-
hlsListSize
-
hlsPlayListType
-
dashSegDuration
-
dashFragmentDuration
-
targetLatency
-
adaptiveResolutionList
List<EncoderSettings> adaptiveResolutionList -
dataStore
-
firstKeyFrameReceivedChecked
private boolean firstKeyFrameReceivedCheckedBy default first video key frame should be checked and below flag should be set to true If first video key frame should not be checked, then below should be flag in advance -
lastKeyFramePTS
private long lastKeyFramePTS -
streamId
-
startTime
protected long startTime -
scope
-
appAdapter
-
encoderSettingsList
-
isStreamSource
protected static boolean isStreamSource -
previewCreatePeriod
private int previewCreatePeriod -
latestSpeed
private double latestSpeed -
lastQualityUpdateTime
private long lastQualityUpdateTime -
broadcast
-
appSettings
-
previewHeight
private int previewHeight -
lastFrameTimestamp
private int lastFrameTimestamp -
maxAnalyzeDurationMS
private int maxAnalyzeDurationMS -
generatePreview
protected boolean generatePreview -
firstReceivedFrameTimestamp
private int firstReceivedFrameTimestamp -
totalIngestedVideoPacketCount
protected int totalIngestedVideoPacketCount -
bufferTimeMs
private long bufferTimeMs -
serverSettings
-
packetTimeList
Packet times in ordered way to calculate streaming health Key is the packet ime Value is the system time at that moment -
lastDTS
private long lastDTS -
overflowCount
private int overflowCount -
vertx
protected io.vertx.core.Vertx vertx -
buffering
Accessed from multiple threads so make it volatile -
bufferLogCounter
private int bufferLogCounter -
bufferingFinishTimeMs
private volatile long bufferingFinishTimeMsThe time when buffering has been finished. It's volatile because it's accessed from multiple threads -
avc
private boolean avcMux adaptor is generally used in RTMP. However it can be also used to stream RTSP Pull so that isAVC can be false -
bufferedPacketWriterId
private long bufferedPacketWriterId -
lastPacketTimeMsInQueue
private volatile long lastPacketTimeMsInQueue -
firstPacketReadyToSentTimeMs
private volatile long firstPacketReadyToSentTimeMs -
dataChannelWebHookURL
-
absoluteTotalIngestTime
protected long absoluteTotalIngestTime -
dashMuxer
It's defined here because EncoderAdaptor should access it directly to add new streams. Don't prefer to access to dashMuxer directly. Access it with getter -
checkStreamsStartTime
private long checkStreamsStartTime -
videoDataConf
private byte[] videoDataConf -
audioDataConf
private byte[] audioDataConf -
queueSize
-
totalIngestTime
protected long totalIngestTime -
fps
private int fps -
width
private int width -
height
protected int height -
keyFramePerMin
protected int keyFramePerMin -
lastKeyFrameStatsTimeMs
protected long lastKeyFrameStatsTimeMs -
totalByteReceived
private long totalByteReceived -
streamSourceInputFormatContext
protected org.bytedeco.ffmpeg.avformat.AVFormatContext streamSourceInputFormatContext -
videoCodecParameters
private org.bytedeco.ffmpeg.avcodec.AVCodecParameters videoCodecParameters -
audioCodecParameters
protected org.bytedeco.ffmpeg.avcodec.AVCodecParameters audioCodecParameters -
audioExtraDataPointer
private org.bytedeco.javacpp.BytePointer audioExtraDataPointer -
videoExtraDataPointer
private org.bytedeco.javacpp.BytePointer videoExtraDataPointer -
endpointStatusUpdaterTimer
-
endpointStatusUpdateMap
-
packetFeeder
-
COUNT_TO_LOG_BUFFER
private static final int COUNT_TO_LOG_BUFFER- See Also:
-
TIME_BASE_FOR_MS
public static final org.bytedeco.ffmpeg.avutil.AVRational TIME_BASE_FOR_MSHelper field to get the timebase for milliseconds Pay attention: Use them in basic conversions(av_rescale), do not use them by giving directly to the Muxers, Encoders as Timebase because Muxers and Encoders can close the timebase and we'll get error For muxers, encoders, use the gettimebaseForMs() method -
videoTimeBase
private org.bytedeco.ffmpeg.avutil.AVRational videoTimeBase -
audioTimeBase
private org.bytedeco.ffmpeg.avutil.AVRational audioTimeBase -
channelLayout
protected org.bytedeco.ffmpeg.avutil.AVChannelLayout channelLayout -
lastTotalByteReceived
private long lastTotalByteReceived -
durationMs
private long durationMs -
videoCodecId
private int videoCodecId -
metadataTimeout
private boolean metadataTimeout -
lastWebhookStreamStatusUpdateTime
private long lastWebhookStreamStatusUpdateTime
-
-
Constructor Details
-
MuxAdaptor
-
-
Method Details
-
addID3Data
-
addSEIData
-
getTimeBaseForMs
public static org.bytedeco.ffmpeg.avutil.AVRational getTimeBaseForMs() -
initializeMuxAdaptor
public static MuxAdaptor initializeMuxAdaptor(ClientBroadcastStream clientBroadcastStream, Broadcast broadcast, boolean isSource, IScope scope) -
isEncoderAdaptorShouldBeTried
-
addMuxer
-
addMuxer
-
removeMuxer
-
addMuxerInternal
-
init
Description copied from interface:IRecordingListener
Initialize the listener.- Specified by:
init
in interfaceIRecordingListener
- Parameters:
conn
- Stream source connectionname
- Stream nameisAppend
- Append mode- Returns:
- true if initialization completes and false otherwise
-
enableSettings
public void enableSettings() -
initStorageClient
public void initStorageClient() -
init
Description copied from interface:IRecordingListener
Initialize the listener.- Specified by:
init
in interfaceIRecordingListener
- Parameters:
scope
- Stream source scopestreamId
- Stream nameisAppend
- Append mode- Returns:
- true if initialization completes and false otherwise
-
addHLSMuxer
-
getDashMuxer
-
initVertx
private void initVertx() -
initServerSettings
protected void initServerSettings() -
enableMp4Setting
protected void enableMp4Setting() -
enableWebMSetting
protected void enableWebMSetting() -
setUpEndPoints
public static void setUpEndPoints(MuxAdaptor muxAdaptor, Broadcast broadcast, io.vertx.core.Vertx vertx) -
getAudioCodecParameters
public org.bytedeco.ffmpeg.avcodec.AVCodecParameters getAudioCodecParameters() -
getVideoCodecParameters
public org.bytedeco.ffmpeg.avcodec.AVCodecParameters getVideoCodecParameters() -
prepare
Prepares the parameters. This method is called in RTMP ingesting- Returns:
- Throws:
Exception
-
registerToMainTrackIfExists
public void registerToMainTrackIfExists() -
prepareFromInputFormatContext
public boolean prepareFromInputFormatContext(org.bytedeco.ffmpeg.avformat.AVFormatContext inputFormatContext) throws Exception Prepares parameters and muxers. This method is called when pulling stream source- Parameters:
inputFormatContext
-- Returns:
- Throws:
Exception
-
getAnnexbExtradata
public static byte[] getAnnexbExtradata(byte[] avcExtradata) -
getStreamType
-
addStream2Muxers
public void addStream2Muxers(org.bytedeco.ffmpeg.avcodec.AVCodecParameters codecParameters, org.bytedeco.ffmpeg.avutil.AVRational rat, int streamIndex) -
prepareMuxerIO
public void prepareMuxerIO() -
updateStreamQualityParameters
- Parameters:
streamId
- id of the streamquality
- , quality stringpacketTime
- , time of the packet in millisecondsduration
- , the total elapsed time in millisecondsinputQueueSize
- , input queue size of the packets that is waiting to be processed
-
getLatestSpeed
public double getLatestSpeed() -
getStreamHandler
-
getAppSettings
-
getDataStore
-
correctPacketDtsOverflow
public long correctPacketDtsOverflow(long packetDts) -
writeStreamPacket
This is the entrance points for the packet coming from the RTMP stream. It's directly used in EncoderAdaptor in Enterprise We override the videoBufferReceived, audioBufferReceived, and notifyDataReceived methods to handle the packets in EncoderAdaptor- Parameters:
packet
-
-
notifyMetaDataReceived
-
audioBufferReceived
-
videoBufferReceived
-
getMetaData
-
getInput
-
checkMaxAnalyzeTotalTime
public void checkMaxAnalyzeTotalTime()Check if max analyze time has been passed. If it initializes the prepare then isRecording is set to true in prepareParameters -
execute
public void execute() -
addBufferQueue
-
calculateBufferStatus
public void calculateBufferStatus() -
getVideoDataConf
-
getAudioDataConf
-
prepareParameters
private void prepareParameters() -
measureIngestTime
private void measureIngestTime(long pktTimeStamp, long receivedTime) -
getAbsoluteTimeMs
public long getAbsoluteTimeMs() -
updateQualityParameters
public void updateQualityParameters(long pts, org.bytedeco.ffmpeg.avutil.AVRational timebase, long packetSize, boolean isKeyFrame) -
closeRtmpConnection
public void closeRtmpConnection() -
writePacket
public void writePacket(org.bytedeco.ffmpeg.avformat.AVStream stream, org.bytedeco.ffmpeg.avcodec.AVPacket pkt) -
writeTrailer
public void writeTrailer() -
closeResources
public void closeResources() -
directMuxingSupported
public boolean directMuxingSupported()This method means that if the MuxAdaptor writes incoming packets to muxers(muxerList
) directly without any StreamAdaptor/Encoders It's true for RTMP, SRT ingest to MP4, HLS, RTMP Endpoint writing but it's not true WebRTC ingest. This method is being implemented in subclasses- Returns:
-
start
public void start()Description copied from interface:IRecordingListener
Start the recording.- Specified by:
start
in interfaceIRecordingListener
-
stop
public void stop(boolean shutdownCompletely) Description copied from interface:IRecordingListener
Stop the recording.- Specified by:
stop
in interfaceIRecordingListener
-
setInputQueueSize
public void setInputQueueSize(int size) -
getInputQueueSize
public int getInputQueueSize() -
getEncodingQueueSize
public int getEncodingQueueSize()Number of frames waiting to be encoded. It's zero here because MuxAdaptor does not transcode the stream- Returns:
-
getDroppedPacketCountInIngestion
public int getDroppedPacketCountInIngestion()Number of packets dropped in the ingestion- Returns:
-
getDroppedFrameCountInEncoding
public int getDroppedFrameCountInEncoding()Number of frames dropped in the encoding- Returns:
-
isStopRequestExist
public boolean isStopRequestExist() -
debugSetStopRequestExist
public void debugSetStopRequestExist(boolean stopRequest) -
writeBufferedPacket
public void writeBufferedPacket()This method is called when rtmpIngestBufferTime is bigger than zero -
writeAllBufferedPackets
private void writeAllBufferedPackets() -
packetReceived
Description copied from interface:IRecordingListener
A packet has been received from a stream.- Specified by:
packetReceived
in interfaceIRecordingListener
- Specified by:
packetReceived
in interfaceIStreamListener
- Parameters:
stream
- the stream the packet has been received forpacket
- the packet received
-
isRecording
public boolean isRecording()- Specified by:
isRecording
in interfaceIRecordingListener
- Returns:
- recording state, true if recording and false otherwise
-
isAppending
public boolean isAppending()- Specified by:
isAppending
in interfaceIRecordingListener
- Returns:
- appending state, true if appending and false otherwise
-
getFileConsumer
- Specified by:
getFileConsumer
in interfaceIRecordingListener
- Returns:
- the recordingConsumer
-
setFileConsumer
- Specified by:
setFileConsumer
in interfaceIRecordingListener
- Parameters:
recordingConsumer
- the recordingConsumer to set
-
getFileName
- Specified by:
getFileName
in interfaceIRecordingListener
- Returns:
- the fileName
-
setFileName
- Specified by:
setFileName
in interfaceIRecordingListener
- Parameters:
fileName
- the fileName to set
-
getMuxerList
-
setStorageClient
-
isWebRTCEnabled
public boolean isWebRTCEnabled() -
setWebRTCEnabled
public void setWebRTCEnabled(boolean webRTCEnabled) -
setHLSFilesDeleteOnExit
public void setHLSFilesDeleteOnExit(boolean deleteHLSFilesOnExit) -
setPreviewOverwrite
public void setPreviewOverwrite(boolean overwrite) -
isPreviewOverwrite
public boolean isPreviewOverwrite() -
getStartTime
public long getStartTime() -
setStartTime
public void setStartTime(long startTime) -
getEncoderSettingsList
-
setEncoderSettingsList
-
isStreamSource
public boolean isStreamSource() -
setStreamSource
public void setStreamSource(boolean isStreamSource) -
isObjectDetectionEnabled
public boolean isObjectDetectionEnabled() -
setObjectDetectionEnabled
-
getPreviewCreatePeriod
public int getPreviewCreatePeriod() -
setPreviewCreatePeriod
public void setPreviewCreatePeriod(int previewCreatePeriod) -
getStreamId
-
setStreamId
-
getStorageClient
-
setFirstKeyFrameReceivedChecked
public void setFirstKeyFrameReceivedChecked(boolean firstKeyFrameReceivedChecked) Setter forfirstKeyFrameReceivedChecked
- Parameters:
firstKeyFrameReceivedChecked
-
-
getBroadcast
-
setBroadcast
-
setGeneratePreview
public void setGeneratePreview(boolean generatePreview) -
getPreviewHeight
public int getPreviewHeight() -
setPreviewHeight
public void setPreviewHeight(int previewHeight) -
createMp4Muxer
-
addMp4Muxer
-
startRecording
Start recording is used to start recording on the fly(stream is broadcasting).- Parameters:
recordType
- MP4 or WEBMresolutionHeight
- resolution height for the recording- Returns:
-
prepareMuxer
-
isAlreadyRecording
-
findDynamicRecordMuxer
-
stopRecording
Stop recording is called to stop recording when the stream is broadcasting(on the fly)- Parameters:
recordType
- MP4 or WEBMresolutionHeight
- resolution height for the recording- Returns:
-
getBroadcastStream
-
startRtmpStreaming
-
sendEndpointErrorNotifyHook
-
endpointStatusHealthCheck
Periodically check the endpoint health status every 2 seconds If each check returned failed, try to republish to the endpoint- Parameters:
url
- is the URL of the endpoint
-
clearCounterMapsAndCancelTimer
-
tryToRepublish
-
endpointStatusUpdated
Description copied from interface:IEndpointStatusListener
It's called when the endpoint status is updated- Specified by:
endpointStatusUpdated
in interfaceIEndpointStatusListener
- Parameters:
url
- is the URL of the endpointstatus
- is the current status of the rtmp endpoint
-
updateBroadcastRecord
private void updateBroadcastRecord() -
getRtmpMuxer
-
stopRtmpStreaming
-
getExtendedSubfolder
-
getSubfolder
-
isEnableVideo
public boolean isEnableVideo() -
setEnableVideo
public void setEnableVideo(boolean enableVideo) -
isEnableAudio
public boolean isEnableAudio() -
setEnableAudio
public void setEnableAudio(boolean enableAudio) -
getLastFrameTimestamp
public int getLastFrameTimestamp() -
setLastFrameTimestamp
public void setLastFrameTimestamp(int lastFrameTimestamp) -
setAppSettings
-
getBufferTimeMs
public long getBufferTimeMs() -
isBuffering
public boolean isBuffering() -
setBuffering
public void setBuffering(boolean buffering) -
getDataChannelWebHookURL
-
isDeleteDASHFilesOnExit
public boolean isDeleteDASHFilesOnExit() -
setDeleteDASHFilesOnExit
public void setDeleteDASHFilesOnExit(boolean deleteDASHFilesOnExit) -
isAvc
public boolean isAvc() -
setAvc
public void setAvc(boolean avc) -
getBufferQueue
-
setBufferingFinishTimeMs
public void setBufferingFinishTimeMs(long bufferingFinishTimeMs) -
getPacketTimeList
-
getVideoStreamIndex
public int getVideoStreamIndex() -
setVideoStreamIndex
public void setVideoStreamIndex(int videoStreamIndex) -
getAudioStreamIndex
public int getAudioStreamIndex() -
setAudioStreamIndex
public void setAudioStreamIndex(int audioStreamIndex) -
addPacketListener
-
removePacketListener
-
setVideoCodecParameter
public void setVideoCodecParameter(org.bytedeco.ffmpeg.avcodec.AVCodecParameters videoCodecParameters) -
setAudioCodecParameter
public void setAudioCodecParameter(org.bytedeco.ffmpeg.avcodec.AVCodecParameters audioCodecParameters) -
getVideoTimeBase
public org.bytedeco.ffmpeg.avutil.AVRational getVideoTimeBase() -
getAudioTimeBase
public org.bytedeco.ffmpeg.avutil.AVRational getAudioTimeBase() -
setVideoTimeBase
public void setVideoTimeBase(org.bytedeco.ffmpeg.avutil.AVRational videoTimeBase) -
setAudioTimeBase
public void setAudioTimeBase(org.bytedeco.ffmpeg.avutil.AVRational audioTimeBase) -
getVertx
public io.vertx.core.Vertx getVertx() -
getEndpointStatusUpdateMap
-
getIsHealthCheckStartedMap
-
setHeight
public void setHeight(int height) -
getHeight
public int getHeight() -
setIsRecording
public void setIsRecording(boolean isRecording) -
setAudioDataConf
public void setAudioDataConf(byte[] audioDataConf) -
isBlacklistCodec
public boolean isBlacklistCodec(int codecId) -
setBufferTimeMs
public void setBufferTimeMs(long bufferTimeMs) -
getIsPipeReaderJobRunning
-
getTotalByteReceived
public long getTotalByteReceived() -
getWidth
public int getWidth() -
setWidth
public void setWidth(int width) -
getLastDTS
public long getLastDTS() -
getOverflowCount
public int getOverflowCount() -
getPacketFeeder
-
setTotalByteReceived
public void setTotalByteReceived(long totalByteReceived) -
getDurationMs
public long getDurationMs() -
setDurationMs
public void setDurationMs(long durationMs) -
getVideoCodecId
public int getVideoCodecId() -
setVideoDataConf
public void setVideoDataConf(byte[] videoDataConf) -
setPacketFeeder
-