\hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder}{}\doxysection{io.\+agora.\+rtc2.\+Agora\+Media\+Recorder Class Reference}
\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder}\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_1_1_media_recorder_configuration}{Media\+Recorder\+Configuration}}
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_abe8ad8beb7bf716425ad2e5756e3089b}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_abe8ad8beb7bf716425ad2e5756e3089b}} 
{\bfseries Agora\+Media\+Recorder} (Rtc\+Engine\+Impl engine, @Non\+Null \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_recorder_stream_info}{Recorder\+Stream\+Info}} info)
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a795afd7a60325db7529d57f6f576d335}{set\+Media\+Recorder\+Observer}} (\mbox{\hyperlink{interfaceio_1_1agora_1_1rtc2_1_1_i_media_recorder_callback}{I\+Media\+Recorder\+Callback}} callback)
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a6221b193ca349b3aff86edc74d3d95fb}{start\+Recording}} (\mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_1_1_media_recorder_configuration}{Media\+Recorder\+Configuration}} config)
\item 
int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a38cde6f8194e3f11fdd712fdafd135be}{stop\+Recording}} ()
\item 
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_ad7b71b7649160495862b1beae411849c}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_ad7b71b7649160495862b1beae411849c}} 
void {\bfseries release} ()
\end{DoxyCompactItemize}
\doxysubsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a524b8cce6a2bac13c7809453ddc617a3}{R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+S\+T\+A\+T\+E\+\_\+\+E\+R\+R\+OR}} = -\/1
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a61096e0fc90ea7e6a0d4d143aace4bf7}{R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+T\+A\+RT}} = 2
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a98f1706d1ea6b60f7c03dd65ea9aa00b}{R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+T\+OP}} = 3
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a2dc02a01e9354f0ddba0060f9992857d}{R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+R\+E\+A\+S\+O\+N\+\_\+\+N\+O\+NE}} = 0
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a7d1e7ebafe354564c9e20d5889ced244}{R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+R\+E\+A\+S\+O\+N\+\_\+\+W\+R\+I\+T\+E\+\_\+\+F\+A\+I\+L\+ED}} = 1
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_adbae8c37f71b76359e8b476834cceb01}{R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+R\+E\+A\+S\+O\+N\+\_\+\+N\+O\+\_\+\+S\+T\+R\+E\+AM}} = 2
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a1859b16ef17fec5815eb982e3fd57b04}{R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+R\+E\+A\+S\+O\+N\+\_\+\+O\+V\+E\+R\+\_\+\+M\+A\+X\+\_\+\+D\+U\+R\+A\+T\+I\+ON}} = 3
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a67f8644df0d507ddb287e3878cecc73e}{R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+R\+E\+A\+S\+O\+N\+\_\+\+C\+O\+N\+F\+I\+G\+\_\+\+C\+H\+A\+N\+G\+ED}} = 4
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a6e110d62525ac8b01f9a01fe2eebb752}{S\+T\+R\+E\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+A\+U\+D\+IO}} = 0x1
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a1a30361aec61fc3070d1df58238dbd7f}{S\+T\+R\+E\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+V\+I\+D\+EO}} = 0x2
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_af0a185b86df6eb4d3111b87604ccc1f1}{S\+T\+R\+E\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+B\+O\+TH}} = \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a6e110d62525ac8b01f9a01fe2eebb752}{S\+T\+R\+E\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+A\+U\+D\+IO}} $\vert$ \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a1a30361aec61fc3070d1df58238dbd7f}{S\+T\+R\+E\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+V\+I\+D\+EO}}
\item 
static final int \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_aac18d6e91cc7be6acc3ddd8d4eb026f9}{C\+O\+N\+T\+A\+I\+N\+E\+R\+\_\+\+M\+P4}} = 1
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
The {\ttfamily \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder}{Agora\+Media\+Recorder}}} class, for recording the audio and video on the client. {\ttfamily \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder}{Agora\+Media\+Recorder}}} can record the following content\+:
\begin{DoxyItemize}
\item The audio captured by the local microphone and encoded in A\+AC format by the S\+DK.
\item The video captured by the local camera and encoded by the S\+DK.
\end{DoxyItemize}

\begin{DoxySince}{Since}
v3.\+5.\+2
\end{DoxySince}
\begin{DoxyNote}{Note}
In the {\ttfamily C\+O\+M\+M\+U\+N\+I\+C\+A\+T\+I\+ON} channel profile, this function is unavailable when there are users using versions of the S\+DK earlier than v3.\+0.\+0 in the channel. 
\end{DoxyNote}


\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a795afd7a60325db7529d57f6f576d335}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a795afd7a60325db7529d57f6f576d335}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!setMediaRecorderObserver@{setMediaRecorderObserver}}
\index{setMediaRecorderObserver@{setMediaRecorderObserver}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{setMediaRecorderObserver()}{setMediaRecorderObserver()}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+set\+Media\+Recorder\+Observer (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{interfaceio_1_1agora_1_1rtc2_1_1_i_media_recorder_callback}{I\+Media\+Recorder\+Callback}}}]{callback }\end{DoxyParamCaption})}

Registers the \mbox{\hyperlink{interfaceio_1_1agora_1_1rtc2_1_1_i_media_recorder_callback}{I\+Media\+Recorder\+Callback}} object.

\begin{DoxySince}{Since}
v4.\+0.\+0
\end{DoxySince}
\begin{DoxyNote}{Note}
Call this method before the start\+Recording method.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em callback} & The callbacks for recording audio and video streams. See \{\mbox{\hyperlink{interfaceio_1_1agora_1_1rtc2_1_1_i_media_recorder_callback}{I\+Media\+Recorder\+Callback\}.  I\+Media\+Recorder }}\\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a6221b193ca349b3aff86edc74d3d95fb}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a6221b193ca349b3aff86edc74d3d95fb}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!startRecording@{startRecording}}
\index{startRecording@{startRecording}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{startRecording()}{startRecording()}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+start\+Recording (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_1_1_media_recorder_configuration}{Media\+Recorder\+Configuration}}}]{config }\end{DoxyParamCaption})}

Starts recording the local or remote audio and video.

After successfully calling \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_rtc_engine_a5a82eaaee21b41e0ca6bc5c0b1c43043}{create\+Media\+Recorder}} to get the media recorder object, you can call this method to enable the recording of the local audio and video.

This method can record the following content\+:
\begin{DoxyItemize}
\item The audio captured by the local microphone and encoded in A\+AC format.
\item The video captured by the local camera and encoded by the S\+DK.
\end{DoxyItemize}

This method can record the following content\+:
\begin{DoxyItemize}
\item The audio received from remote users and encoded in A\+AC format.
\item The video received from remote users.
\end{DoxyItemize}

The S\+DK can generate a recording file only when it detects the recordable audio and video streams; when there are no audio and video streams to be recorded or the audio and video streams are interrupted for more than five seconds, the S\+DK stops recording and triggers the \mbox{\hyperlink{}{on\+Recorder\+State\+Changed(\+R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+S\+T\+A\+T\+E\+\_\+\+E\+R\+R\+O\+R, R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+E\+R\+R\+O\+R\+\_\+\+N\+O\+\_\+\+S\+T\+R\+E\+A\+M)}} callback.

\begin{DoxyNote}{Note}
Call this method after joining the channel.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em config} & The recording configurations. See \{\mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_1_1_media_recorder_configuration}{Media\+Recorder\+Configuration\}. 0\+: Success.$<$ 0\+: Failure\+:{\ttfamily -\/1(E\+R\+R\+\_\+\+F\+A\+I\+L\+ED)}\+: I\+Rtc\+Engine does not support the request due to one of the following reasons\+:During remote recording, There is no subscription to the target channel or user。-\/2({\ttfamily E\+R\+R\+\_\+\+I\+N\+V\+A\+L\+I\+D\+\_\+\+A\+R\+G\+U\+M\+E\+NT})\+: The parameter is invalid. Ensure the following\+:The specified path of the recording file exists and is writable.The specified format of the recording file is supported.The maximum recording duration is correctly set.During remote recording, ensure the user whose media streams you want record did join the channel.-\/4({\ttfamily E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED})\+: {\ttfamily Rtc\+Engine} does not support the request due to one of the following reasons\+:The recording is ongoing.The recording stops because an error occurs.No  io.\+agora.\+rtc2.\+I\+Media\+Recorder\+Callback I\+Media\+Recorder\+Callback\} object is registered. }}\\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a38cde6f8194e3f11fdd712fdafd135be}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a38cde6f8194e3f11fdd712fdafd135be}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!stopRecording@{stopRecording}}
\index{stopRecording@{stopRecording}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{stopRecording()}{stopRecording()}}
{\footnotesize\ttfamily int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+stop\+Recording (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Stops recording the audio and video.

\begin{DoxyNote}{Note}
After calling \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a6221b193ca349b3aff86edc74d3d95fb}{start\+Recording}}, if you want to stop the recording, you must call {\ttfamily stop\+Recording}; otherwise, the generated recording files might not be playable.
\end{DoxyNote}
\begin{DoxyReturn}{Returns}

\begin{DoxyItemize}
\item 0\+: Success.
\item $<$ 0\+: Failure\+:
\begin{DoxyItemize}
\item -\/7({\ttfamily E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+I\+N\+I\+T\+I\+A\+L\+I\+Z\+ED})\+: This method is called before the initialization of {\ttfamily \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_rtc_engine}{Rtc\+Engine}}}. Ensure that you have called \mbox{\hyperlink{}{get\+Media\+Recorder}} before calling {\ttfamily start\+Recording}. 
\end{DoxyItemize}
\end{DoxyItemize}
\end{DoxyReturn}


\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a524b8cce6a2bac13c7809453ddc617a3}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a524b8cce6a2bac13c7809453ddc617a3}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!RECORDER\_STATE\_ERROR@{RECORDER\_STATE\_ERROR}}
\index{RECORDER\_STATE\_ERROR@{RECORDER\_STATE\_ERROR}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{RECORDER\_STATE\_ERROR}{RECORDER\_STATE\_ERROR}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+S\+T\+A\+T\+E\+\_\+\+E\+R\+R\+OR = -\/1\hspace{0.3cm}{\ttfamily [static]}}

-\/1\+: An error occurs during the recording. See {\ttfamily error} message for the reason. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a61096e0fc90ea7e6a0d4d143aace4bf7}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a61096e0fc90ea7e6a0d4d143aace4bf7}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!RECORDER\_STATE\_START@{RECORDER\_STATE\_START}}
\index{RECORDER\_STATE\_START@{RECORDER\_STATE\_START}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{RECORDER\_STATE\_START}{RECORDER\_STATE\_START}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+T\+A\+RT = 2\hspace{0.3cm}{\ttfamily [static]}}

2\+: The audio and video recording is started. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a98f1706d1ea6b60f7c03dd65ea9aa00b}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a98f1706d1ea6b60f7c03dd65ea9aa00b}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!RECORDER\_STATE\_STOP@{RECORDER\_STATE\_STOP}}
\index{RECORDER\_STATE\_STOP@{RECORDER\_STATE\_STOP}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{RECORDER\_STATE\_STOP}{RECORDER\_STATE\_STOP}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+T\+OP = 3\hspace{0.3cm}{\ttfamily [static]}}

3\+: The audio and video recording is stopped. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a2dc02a01e9354f0ddba0060f9992857d}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a2dc02a01e9354f0ddba0060f9992857d}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!RECORDER\_REASON\_NONE@{RECORDER\_REASON\_NONE}}
\index{RECORDER\_REASON\_NONE@{RECORDER\_REASON\_NONE}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{RECORDER\_REASON\_NONE}{RECORDER\_REASON\_NONE}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+R\+E\+A\+S\+O\+N\+\_\+\+N\+O\+NE = 0\hspace{0.3cm}{\ttfamily [static]}}

0\+: No error occurs. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a7d1e7ebafe354564c9e20d5889ced244}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a7d1e7ebafe354564c9e20d5889ced244}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!RECORDER\_REASON\_WRITE\_FAILED@{RECORDER\_REASON\_WRITE\_FAILED}}
\index{RECORDER\_REASON\_WRITE\_FAILED@{RECORDER\_REASON\_WRITE\_FAILED}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{RECORDER\_REASON\_WRITE\_FAILED}{RECORDER\_REASON\_WRITE\_FAILED}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+R\+E\+A\+S\+O\+N\+\_\+\+W\+R\+I\+T\+E\+\_\+\+F\+A\+I\+L\+ED = 1\hspace{0.3cm}{\ttfamily [static]}}

1\+: The S\+DK fails to write the recorded data to a file. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_adbae8c37f71b76359e8b476834cceb01}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_adbae8c37f71b76359e8b476834cceb01}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!RECORDER\_REASON\_NO\_STREAM@{RECORDER\_REASON\_NO\_STREAM}}
\index{RECORDER\_REASON\_NO\_STREAM@{RECORDER\_REASON\_NO\_STREAM}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{RECORDER\_REASON\_NO\_STREAM}{RECORDER\_REASON\_NO\_STREAM}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+R\+E\+A\+S\+O\+N\+\_\+\+N\+O\+\_\+\+S\+T\+R\+E\+AM = 2\hspace{0.3cm}{\ttfamily [static]}}

2\+: The S\+DK does not detect audio and video streams to be recorded, or audio and video streams are interrupted for more than five seconds during recording. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a1859b16ef17fec5815eb982e3fd57b04}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a1859b16ef17fec5815eb982e3fd57b04}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!RECORDER\_REASON\_OVER\_MAX\_DURATION@{RECORDER\_REASON\_OVER\_MAX\_DURATION}}
\index{RECORDER\_REASON\_OVER\_MAX\_DURATION@{RECORDER\_REASON\_OVER\_MAX\_DURATION}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{RECORDER\_REASON\_OVER\_MAX\_DURATION}{RECORDER\_REASON\_OVER\_MAX\_DURATION}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+R\+E\+A\+S\+O\+N\+\_\+\+O\+V\+E\+R\+\_\+\+M\+A\+X\+\_\+\+D\+U\+R\+A\+T\+I\+ON = 3\hspace{0.3cm}{\ttfamily [static]}}

3\+: The recording duration exceeds the upper limit. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a67f8644df0d507ddb287e3878cecc73e}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a67f8644df0d507ddb287e3878cecc73e}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!RECORDER\_REASON\_CONFIG\_CHANGED@{RECORDER\_REASON\_CONFIG\_CHANGED}}
\index{RECORDER\_REASON\_CONFIG\_CHANGED@{RECORDER\_REASON\_CONFIG\_CHANGED}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{RECORDER\_REASON\_CONFIG\_CHANGED}{RECORDER\_REASON\_CONFIG\_CHANGED}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+R\+E\+C\+O\+R\+D\+E\+R\+\_\+\+R\+E\+A\+S\+O\+N\+\_\+\+C\+O\+N\+F\+I\+G\+\_\+\+C\+H\+A\+N\+G\+ED = 4\hspace{0.3cm}{\ttfamily [static]}}

4\+: The recording configuration changes. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a6e110d62525ac8b01f9a01fe2eebb752}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a6e110d62525ac8b01f9a01fe2eebb752}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!STREAM\_TYPE\_AUDIO@{STREAM\_TYPE\_AUDIO}}
\index{STREAM\_TYPE\_AUDIO@{STREAM\_TYPE\_AUDIO}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{STREAM\_TYPE\_AUDIO}{STREAM\_TYPE\_AUDIO}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+S\+T\+R\+E\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+A\+U\+D\+IO = 0x1\hspace{0.3cm}{\ttfamily [static]}}

1\+: Record audio only. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a1a30361aec61fc3070d1df58238dbd7f}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a1a30361aec61fc3070d1df58238dbd7f}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!STREAM\_TYPE\_VIDEO@{STREAM\_TYPE\_VIDEO}}
\index{STREAM\_TYPE\_VIDEO@{STREAM\_TYPE\_VIDEO}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{STREAM\_TYPE\_VIDEO}{STREAM\_TYPE\_VIDEO}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+S\+T\+R\+E\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+V\+I\+D\+EO = 0x2\hspace{0.3cm}{\ttfamily [static]}}

2\+: Record video only. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_af0a185b86df6eb4d3111b87604ccc1f1}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_af0a185b86df6eb4d3111b87604ccc1f1}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!STREAM\_TYPE\_BOTH@{STREAM\_TYPE\_BOTH}}
\index{STREAM\_TYPE\_BOTH@{STREAM\_TYPE\_BOTH}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{STREAM\_TYPE\_BOTH}{STREAM\_TYPE\_BOTH}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+S\+T\+R\+E\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+B\+O\+TH = \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a6e110d62525ac8b01f9a01fe2eebb752}{S\+T\+R\+E\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+A\+U\+D\+IO}} $\vert$ \mbox{\hyperlink{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_a1a30361aec61fc3070d1df58238dbd7f}{S\+T\+R\+E\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+V\+I\+D\+EO}}\hspace{0.3cm}{\ttfamily [static]}}

3\+: Record both audio and video. \mbox{\Hypertarget{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_aac18d6e91cc7be6acc3ddd8d4eb026f9}\label{classio_1_1agora_1_1rtc2_1_1_agora_media_recorder_aac18d6e91cc7be6acc3ddd8d4eb026f9}} 
\index{io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}!CONTAINER\_MP4@{CONTAINER\_MP4}}
\index{CONTAINER\_MP4@{CONTAINER\_MP4}!io.agora.rtc2.AgoraMediaRecorder@{io.agora.rtc2.AgoraMediaRecorder}}
\doxysubsubsection{\texorpdfstring{CONTAINER\_MP4}{CONTAINER\_MP4}}
{\footnotesize\ttfamily final int io.\+agora.\+rtc2.\+Agora\+Media\+Recorder.\+C\+O\+N\+T\+A\+I\+N\+E\+R\+\_\+\+M\+P4 = 1\hspace{0.3cm}{\ttfamily [static]}}

1\+: M\+P4 format. 