1- // Last time updated at Jan 29 , 2015, 08:32:23
1+ // Last time updated at Jan 30 , 2015, 08:32:23
22
33// links:
44// Open-Sourced: https://github.com/muaz-khan/RecordRTC
@@ -191,10 +191,6 @@ function RecordRTC(mediaStream, config) {
191191 // not all libs yet having this method
192192 if ( mediaRecorder . pause ) {
193193 mediaRecorder . pause ( ) ;
194-
195- if ( ! config . disableLogs ) {
196- console . debug ( 'Paused recording.' ) ;
197- }
198194 } else if ( ! config . disableLogs ) {
199195 console . warn ( 'This recording library is having no "pause" method.' ) ;
200196 }
@@ -208,10 +204,6 @@ function RecordRTC(mediaStream, config) {
208204 // not all libs yet having this method
209205 if ( mediaRecorder . resume ) {
210206 mediaRecorder . resume ( ) ;
211-
212- if ( ! config . disableLogs ) {
213- console . debug ( 'Resumed recording.' ) ;
214- }
215207 } else if ( ! config . disableLogs ) {
216208 console . warn ( 'This recording library is having no "resume" method.' ) ;
217209 }
@@ -1137,6 +1129,12 @@ function MediaStreamRecorder(mediaStream) {
11371129 if ( ! self . disableLogs ) {
11381130 console . warn ( error ) ;
11391131 }
1132+
1133+ // When the stream is "ended" set recording to 'inactive'
1134+ // and stop gathering data. Callers should not rely on
1135+ // exactness of the timeSlice value, especially
1136+ // if the timeSlice value is small. Callers should
1137+ // consider timeSlice as a minimum value
11401138
11411139 mediaRecorder . stop ( ) ;
11421140 self . record ( 0 ) ;
@@ -1169,6 +1167,10 @@ function MediaStreamRecorder(mediaStream) {
11691167 * });
11701168 */
11711169 this . stop = function ( callback ) {
1170+ if ( ! mediaRecorder ) {
1171+ return ;
1172+ }
1173+
11721174 this . callback = callback ;
11731175 // mediaRecorder.state === 'recording' means that media recorder is associated with "session"
11741176 // mediaRecorder.state === 'stopped' means that media recorder is detached from the "session" ... in this case; "session" will also be deleted.
@@ -1180,6 +1182,48 @@ function MediaStreamRecorder(mediaStream) {
11801182 }
11811183 } ;
11821184
1185+ /**
1186+ * This method pauses the recording process.
1187+ * @method
1188+ * @memberof MediaStreamRecorder
1189+ * @example
1190+ * recorder.pause();
1191+ */
1192+ this . pause = function ( ) {
1193+ if ( ! mediaRecorder ) {
1194+ return ;
1195+ }
1196+
1197+ if ( mediaRecorder . state === 'recording' ) {
1198+ mediaRecorder . pause ( ) ;
1199+
1200+ if ( ! this . disableLogs ) {
1201+ console . debug ( 'Paused recording.' ) ;
1202+ }
1203+ }
1204+ } ;
1205+
1206+ /**
1207+ * This method resumes the recording process.
1208+ * @method
1209+ * @memberof MediaStreamRecorder
1210+ * @example
1211+ * recorder.resume();
1212+ */
1213+ this . resume = function ( ) {
1214+ if ( ! mediaRecorder ) {
1215+ return ;
1216+ }
1217+
1218+ if ( mediaRecorder . state === 'paused' ) {
1219+ mediaRecorder . resume ( ) ;
1220+
1221+ if ( ! this . disableLogs ) {
1222+ console . debug ( 'Resumed recording.' ) ;
1223+ }
1224+ }
1225+ } ;
1226+
11831227 // Reference to "MediaRecorder" object
11841228 var mediaRecorder ;
11851229}
@@ -1246,6 +1290,13 @@ function StereoRecorder(mediaStream) {
12461290 } ) ;
12471291 } ;
12481292
1293+ /**
1294+ * This method pauses the recording process.
1295+ * @method
1296+ * @memberof StereoRecorder
1297+ * @example
1298+ * recorder.pause();
1299+ */
12491300 this . pause = function ( ) {
12501301 if ( ! mediaRecorder ) {
12511302 return ;
@@ -1254,6 +1305,13 @@ function StereoRecorder(mediaStream) {
12541305 mediaRecorder . pause ( ) ;
12551306 } ;
12561307
1308+ /**
1309+ * This method resumes the recording process.
1310+ * @method
1311+ * @memberof StereoRecorder
1312+ * @example
1313+ * recorder.resume();
1314+ */
12571315 this . resume = function ( ) {
12581316 if ( ! mediaRecorder ) {
12591317 return ;
@@ -1619,6 +1677,10 @@ function StereoAudioRecorder(mediaStream, config) {
16191677 */
16201678 this . pause = function ( ) {
16211679 isPaused = true ;
1680+
1681+ if ( ! config . disableLogs ) {
1682+ console . debug ( 'Paused recording.' ) ;
1683+ }
16221684 } ;
16231685
16241686 /**
@@ -1630,6 +1692,10 @@ function StereoAudioRecorder(mediaStream, config) {
16301692 */
16311693 this . resume = function ( ) {
16321694 isPaused = false ;
1695+
1696+ if ( ! config . disableLogs ) {
1697+ console . debug ( 'Resumed recording.' ) ;
1698+ }
16331699 } ;
16341700
16351701 var isAudioProcessStarted = false ;
@@ -1742,7 +1808,44 @@ function CanvasRecorder(htmlElement) {
17421808 }
17431809 } ;
17441810
1811+ var isPausedRecording = false ;
1812+
1813+ /**
1814+ * This method pauses the recording process.
1815+ * @method
1816+ * @memberof CanvasRecorder
1817+ * @example
1818+ * recorder.pause();
1819+ */
1820+ this . pause = function ( ) {
1821+ isPausedRecording = true ;
1822+
1823+ if ( ! this . disableLogs ) {
1824+ console . debug ( 'Paused recording.' ) ;
1825+ }
1826+ } ;
1827+
1828+ /**
1829+ * This method resumes the recording process.
1830+ * @method
1831+ * @memberof CanvasRecorder
1832+ * @example
1833+ * recorder.resume();
1834+ */
1835+ this . resume = function ( ) {
1836+ isPausedRecording = false ;
1837+
1838+ if ( ! this . disableLogs ) {
1839+ console . debug ( 'Resumed recording.' ) ;
1840+ }
1841+ } ;
1842+
17451843 function drawCanvasFrame ( ) {
1844+ if ( isPausedRecording ) {
1845+ lastTime = new Date ( ) . getTime ( ) ;
1846+ return setTimeout ( drawCanvasFrame , 100 ) ;
1847+ }
1848+
17461849 window . html2canvas ( htmlElement , {
17471850 onrendered : function ( canvas ) {
17481851 var duration = new Date ( ) . getTime ( ) - lastTime ;
@@ -1850,7 +1953,12 @@ function WhammyRecorder(mediaStream) {
18501953 function drawFrames ( ) {
18511954 var duration = new Date ( ) . getTime ( ) - lastTime ;
18521955 if ( ! duration ) {
1853- return drawFrames ( ) ;
1956+ return setTimeout ( drawFrames , 10 ) ;
1957+ }
1958+
1959+ if ( isPausedRecording ) {
1960+ lastTime = new Date ( ) . getTime ( ) ;
1961+ return setTimeout ( drawFrames , 100 ) ;
18541962 }
18551963
18561964 // via #206, by Jack i.e. @Seymourr
@@ -2002,6 +2110,38 @@ function WhammyRecorder(mediaStream) {
20022110 } , 10 ) ;
20032111 } ;
20042112
2113+ var isPausedRecording = false ;
2114+
2115+ /**
2116+ * This method pauses the recording process.
2117+ * @method
2118+ * @memberof WhammyRecorder
2119+ * @example
2120+ * recorder.pause();
2121+ */
2122+ this . pause = function ( ) {
2123+ isPausedRecording = true ;
2124+
2125+ if ( ! this . disableLogs ) {
2126+ console . debug ( 'Paused recording.' ) ;
2127+ }
2128+ } ;
2129+
2130+ /**
2131+ * This method resumes the recording process.
2132+ * @method
2133+ * @memberof WhammyRecorder
2134+ * @example
2135+ * recorder.resume();
2136+ */
2137+ this . resume = function ( ) {
2138+ isPausedRecording = false ;
2139+
2140+ if ( ! this . disableLogs ) {
2141+ console . debug ( 'Resumed recording.' ) ;
2142+ }
2143+ } ;
2144+
20052145 var canvas = document . createElement ( 'canvas' ) ;
20062146 var context = canvas . getContext ( '2d' ) ;
20072147
@@ -2668,6 +2808,12 @@ function GifRecorder(mediaStream) {
26682808 var self = this ;
26692809
26702810 function drawVideoFrame ( time ) {
2811+ if ( isPausedRecording ) {
2812+ return setTimeout ( function ( ) {
2813+ drawVideoFrame ( time ) ;
2814+ } , 100 ) ;
2815+ }
2816+
26712817 lastAnimationFrame = requestAnimationFrame ( drawVideoFrame ) ;
26722818
26732819 if ( typeof lastFrameTime === undefined ) {
@@ -2725,6 +2871,38 @@ function GifRecorder(mediaStream) {
27252871 gifEncoder . stream ( ) . bin = [ ] ;
27262872 } ;
27272873
2874+ var isPausedRecording = false ;
2875+
2876+ /**
2877+ * This method pauses the recording process.
2878+ * @method
2879+ * @memberof GifRecorder
2880+ * @example
2881+ * recorder.pause();
2882+ */
2883+ this . pause = function ( ) {
2884+ isPausedRecording = true ;
2885+
2886+ if ( ! this . disableLogs ) {
2887+ console . debug ( 'Paused recording.' ) ;
2888+ }
2889+ } ;
2890+
2891+ /**
2892+ * This method resumes the recording process.
2893+ * @method
2894+ * @memberof GifRecorder
2895+ * @example
2896+ * recorder.resume();
2897+ */
2898+ this . resume = function ( ) {
2899+ isPausedRecording = false ;
2900+
2901+ if ( ! this . disableLogs ) {
2902+ console . debug ( 'Resumed recording.' ) ;
2903+ }
2904+ } ;
2905+
27282906 var canvas = document . createElement ( 'canvas' ) ;
27292907 var context = canvas . getContext ( '2d' ) ;
27302908
0 commit comments