react-media-recorder
Advanced tools
Comparing version 1.6.5 to 1.6.6
@@ -10,3 +10,3 @@ import { ReactElement } from "react"; | ||
stopRecording: () => void; | ||
mediaBlobUrl: null | string; | ||
mediaBlobUrl: undefined | string; | ||
status: StatusMessages; | ||
@@ -25,3 +25,3 @@ isAudioMuted: boolean; | ||
blobPropertyBag?: BlobPropertyBag; | ||
mediaRecorderOptions?: MediaRecorderOptions | null; | ||
mediaRecorderOptions?: MediaRecorderOptions | undefined; | ||
customMediaStream?: MediaStream | null; | ||
@@ -28,0 +28,0 @@ stopStreamsOnStop?: boolean; |
@@ -12,12 +12,12 @@ "use strict";var __awaiter=(this&&this.__awaiter)||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve){resolve(value);});} | ||
op=body.call(thisArg,_);}catch(e){op=[6,e];y=0;}finally{f=t=0;} | ||
if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true};}};Object.defineProperty(exports,"__esModule",{value:true});exports.ReactMediaRecorder=exports.useReactMediaRecorder=exports.RecorderErrors=void 0;var react_1=require("react");var RecorderErrors;(function(RecorderErrors){RecorderErrors["AbortError"]="media_aborted";RecorderErrors["NotAllowedError"]="permission_denied";RecorderErrors["NotFoundError"]="no_specified_media_found";RecorderErrors["NotReadableError"]="media_in_use";RecorderErrors["OverconstrainedError"]="invalid_media_constraints";RecorderErrors["TypeError"]="no_constraints";RecorderErrors["NONE"]="";RecorderErrors["NO_RECORDER"]="recorder_error";})(RecorderErrors=exports.RecorderErrors||(exports.RecorderErrors={}));function useReactMediaRecorder(_a){var _this=this;var _b=_a.audio,audio=_b===void 0?true:_b,_c=_a.video,video=_c===void 0?false:_c,_d=_a.onStop,onStop=_d===void 0?function(){return null;}:_d,_e=_a.onStart,onStart=_e===void 0?function(){return null;}:_e,blobPropertyBag=_a.blobPropertyBag,_f=_a.screen,screen=_f===void 0?false:_f,_g=_a.mediaRecorderOptions,mediaRecorderOptions=_g===void 0?null:_g,_h=_a.customMediaStream,customMediaStream=_h===void 0?null:_h,_j=_a.stopStreamsOnStop,stopStreamsOnStop=_j===void 0?true:_j,_k=_a.askPermissionOnMount,askPermissionOnMount=_k===void 0?false:_k;var mediaRecorder=(0,react_1.useRef)(null);var mediaChunks=(0,react_1.useRef)([]);var mediaStream=(0,react_1.useRef)(null);var _l=(0,react_1.useState)("idle"),status=_l[0],setStatus=_l[1];var _m=(0,react_1.useState)(false),isAudioMuted=_m[0],setIsAudioMuted=_m[1];var _o=(0,react_1.useState)(null),mediaBlobUrl=_o[0],setMediaBlobUrl=_o[1];var _p=(0,react_1.useState)("NONE"),error=_p[0],setError=_p[1];var getMediaStream=(0,react_1.useCallback)(function(){return __awaiter(_this,void 0,void 0,function(){var requiredMedia,stream_1,audioStream,stream,error_1;return __generator(this,function(_a){switch(_a.label){case 0:setStatus("acquiring_media");requiredMedia={audio:typeof audio==="boolean"?!!audio:audio,video:typeof video==="boolean"?!!video:video,};_a.label=1;case 1:_a.trys.push([1,9,,10]);if(!customMediaStream)return[3,2];mediaStream.current=customMediaStream;return[3,8];case 2:if(!screen)return[3,6];return[4,window.navigator.mediaDevices.getDisplayMedia({video:video||true,})];case 3:stream_1=(_a.sent());stream_1.getVideoTracks()[0].addEventListener("ended",function(){stopRecording();});if(!audio)return[3,5];return[4,window.navigator.mediaDevices.getUserMedia({audio:audio,})];case 4:audioStream=_a.sent();audioStream.getAudioTracks().forEach(function(audioTrack){return stream_1.addTrack(audioTrack);});_a.label=5;case 5:mediaStream.current=stream_1;return[3,8];case 6:return[4,window.navigator.mediaDevices.getUserMedia(requiredMedia)];case 7:stream=_a.sent();mediaStream.current=stream;_a.label=8;case 8:setStatus("idle");return[3,10];case 9:error_1=_a.sent();setError(error_1.name);setStatus("idle");return[3,10];case 10:return[2];}});});},[audio,video,screen]);(0,react_1.useEffect)(function(){if(!window.MediaRecorder){throw new Error("Unsupported Browser");} | ||
if(screen){if(!window.navigator.mediaDevices.getDisplayMedia){throw new Error("This browser doesn't support screen capturing");}} | ||
var checkConstraints=function(mediaType){var supportedMediaConstraints=navigator.mediaDevices.getSupportedConstraints();var unSupportedConstraints=Object.keys(mediaType).filter(function(constraint){return!supportedMediaConstraints[constraint];});if(unSupportedConstraints.length>0){console.error("The constraints "+unSupportedConstraints.join(",")+" doesn't support on this browser. Please check your ReactMediaRecorder component.");}};if(typeof audio==="object"){checkConstraints(audio);} | ||
if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true};}};Object.defineProperty(exports,"__esModule",{value:true});exports.ReactMediaRecorder=exports.useReactMediaRecorder=exports.RecorderErrors=void 0;var extendable_media_recorder_1=require("extendable-media-recorder");var react_1=require("react");var extendable_media_recorder_wav_encoder_1=require("extendable-media-recorder-wav-encoder");var RecorderErrors;(function(RecorderErrors){RecorderErrors["AbortError"]="media_aborted";RecorderErrors["NotAllowedError"]="permission_denied";RecorderErrors["NotFoundError"]="no_specified_media_found";RecorderErrors["NotReadableError"]="media_in_use";RecorderErrors["OverconstrainedError"]="invalid_media_constraints";RecorderErrors["TypeError"]="no_constraints";RecorderErrors["NONE"]="";RecorderErrors["NO_RECORDER"]="recorder_error";})(RecorderErrors=exports.RecorderErrors||(exports.RecorderErrors={}));function useReactMediaRecorder(_a){var _this=this;var _b=_a.audio,audio=_b===void 0?true:_b,_c=_a.video,video=_c===void 0?false:_c,_d=_a.onStop,onStop=_d===void 0?function(){return null;}:_d,_e=_a.onStart,onStart=_e===void 0?function(){return null;}:_e,blobPropertyBag=_a.blobPropertyBag,_f=_a.screen,screen=_f===void 0?false:_f,_g=_a.mediaRecorderOptions,mediaRecorderOptions=_g===void 0?undefined:_g,_h=_a.customMediaStream,customMediaStream=_h===void 0?null:_h,_j=_a.stopStreamsOnStop,stopStreamsOnStop=_j===void 0?true:_j,_k=_a.askPermissionOnMount,askPermissionOnMount=_k===void 0?false:_k;var mediaRecorder=(0,react_1.useRef)(null);var mediaChunks=(0,react_1.useRef)([]);var mediaStream=(0,react_1.useRef)(null);var _l=(0,react_1.useState)("idle"),status=_l[0],setStatus=_l[1];var _m=(0,react_1.useState)(false),isAudioMuted=_m[0],setIsAudioMuted=_m[1];var _o=(0,react_1.useState)(undefined),mediaBlobUrl=_o[0],setMediaBlobUrl=_o[1];var _p=(0,react_1.useState)("NONE"),error=_p[0],setError=_p[1];(0,react_1.useEffect)(function(){var setup=function(){return __awaiter(_this,void 0,void 0,function(){var _a;return __generator(this,function(_b){switch(_b.label){case 0:_a=extendable_media_recorder_1.register;return[4,(0,extendable_media_recorder_wav_encoder_1.connect)()];case 1:return[4,_a.apply(void 0,[_b.sent()])];case 2:_b.sent();return[2];}});});};setup();},[]);var getMediaStream=(0,react_1.useCallback)(function(){return __awaiter(_this,void 0,void 0,function(){var requiredMedia,stream_1,audioStream,stream,error_1;return __generator(this,function(_a){switch(_a.label){case 0:setStatus("acquiring_media");requiredMedia={audio:typeof audio==="boolean"?!!audio:audio,video:typeof video==="boolean"?!!video:video,};_a.label=1;case 1:_a.trys.push([1,9,,10]);if(!customMediaStream)return[3,2];mediaStream.current=customMediaStream;return[3,8];case 2:if(!screen)return[3,6];return[4,window.navigator.mediaDevices.getDisplayMedia({video:video||true,})];case 3:stream_1=(_a.sent());stream_1.getVideoTracks()[0].addEventListener("ended",function(){stopRecording();});if(!audio)return[3,5];return[4,window.navigator.mediaDevices.getUserMedia({audio:audio,})];case 4:audioStream=_a.sent();audioStream.getAudioTracks().forEach(function(audioTrack){return stream_1.addTrack(audioTrack);});_a.label=5;case 5:mediaStream.current=stream_1;return[3,8];case 6:return[4,window.navigator.mediaDevices.getUserMedia(requiredMedia)];case 7:stream=_a.sent();mediaStream.current=stream;_a.label=8;case 8:setStatus("idle");return[3,10];case 9:error_1=_a.sent();setError(error_1.name);setStatus("idle");return[3,10];case 10:return[2];}});});},[audio,video,screen]);(0,react_1.useEffect)(function(){if(!window.MediaRecorder){throw new Error("Unsupported Browser");} | ||
if(screen){if(!window.navigator.mediaDevices.getDisplayMedia){throw new Error("This browser doesn\'t support screen capturing");}} | ||
var checkConstraints=function(mediaType){var supportedMediaConstraints=navigator.mediaDevices.getSupportedConstraints();var unSupportedConstraints=Object.keys(mediaType).filter(function(constraint){return!supportedMediaConstraints[constraint];});if(unSupportedConstraints.length>0){console.error("The constraints ".concat(unSupportedConstraints.join(",")," doesn't support on this browser. Please check your ReactMediaRecorder component."));}};if(typeof audio==="object"){checkConstraints(audio);} | ||
if(typeof video==="object"){checkConstraints(video);} | ||
if(mediaRecorderOptions&&mediaRecorderOptions.mimeType){if(!MediaRecorder.isTypeSupported(mediaRecorderOptions.mimeType)){console.error("The specified MIME type you supplied for MediaRecorder doesn't support this browser");}} | ||
if(!mediaStream.current&&askPermissionOnMount){getMediaStream();} | ||
return function(){if(mediaStream.current){var tracks=mediaStream.current.getTracks();tracks.forEach(function(track){return track.stop();});}};},[audio,screen,video,getMediaStream,mediaRecorderOptions,askPermissionOnMount,]);var startRecording=function(){return __awaiter(_this,void 0,void 0,function(){var isStreamEnded;return __generator(this,function(_a){switch(_a.label){case 0:setError("NONE");if(!!mediaStream.current)return[3,2];return[4,getMediaStream()];case 1:_a.sent();_a.label=2;case 2:if(!mediaStream.current)return[3,5];isStreamEnded=mediaStream.current.getTracks().some(function(track){return track.readyState==="ended";});if(!isStreamEnded)return[3,4];return[4,getMediaStream()];case 3:_a.sent();_a.label=4;case 4:if(!mediaStream.current.active){return[2];} | ||
mediaRecorder.current=new MediaRecorder(mediaStream.current,mediaRecorderOptions||undefined);mediaRecorder.current.ondataavailable=onRecordingActive;mediaRecorder.current.onstop=onRecordingStop;mediaRecorder.current.onstart=onRecordingStart;mediaRecorder.current.onerror=function(){setError("NO_RECORDER");setStatus("idle");};mediaRecorder.current.start();setStatus("recording");_a.label=5;case 5:return[2];}});});};var onRecordingActive=function(_a){var data=_a.data;mediaChunks.current.push(data);};var onRecordingStart=function(){onStart();};var onRecordingStop=function(){var chunk=mediaChunks.current[0];var blobProperty=Object.assign({type:chunk.type},blobPropertyBag||(video?{type:"video/mp4"}:{type:"audio/wav"}));var blob=new Blob(mediaChunks.current,blobProperty);var url=URL.createObjectURL(blob);setStatus("stopped");setMediaBlobUrl(url);onStop(url,blob);};var muteAudio=function(mute){setIsAudioMuted(mute);if(mediaStream.current){mediaStream.current.getAudioTracks().forEach(function(audioTrack){return(audioTrack.enabled=!mute);});}};var pauseRecording=function(){if(mediaRecorder.current&&mediaRecorder.current.state==="recording"){setStatus("paused");mediaRecorder.current.pause();}};var resumeRecording=function(){if(mediaRecorder.current&&mediaRecorder.current.state==="paused"){setStatus("recording");mediaRecorder.current.resume();}};var stopRecording=function(){if(mediaRecorder.current){if(mediaRecorder.current.state!=="inactive"){setStatus("stopping");mediaRecorder.current.stop();if(stopStreamsOnStop){mediaStream.current&&mediaStream.current.getTracks().forEach(function(track){return track.stop();});} | ||
return function(){if(mediaStream.current){var tracks=mediaStream.current.getTracks();tracks.forEach(function(track){return track.clone().stop();});}};},[audio,screen,video,getMediaStream,mediaRecorderOptions,askPermissionOnMount,]);var startRecording=function(){return __awaiter(_this,void 0,void 0,function(){var isStreamEnded;return __generator(this,function(_a){switch(_a.label){case 0:setError("NONE");if(!!mediaStream.current)return[3,2];return[4,getMediaStream()];case 1:_a.sent();_a.label=2;case 2:if(!mediaStream.current)return[3,5];isStreamEnded=mediaStream.current.getTracks().some(function(track){return track.readyState==="ended";});if(!isStreamEnded)return[3,4];return[4,getMediaStream()];case 3:_a.sent();_a.label=4;case 4:if(!mediaStream.current.active){return[2];} | ||
mediaRecorder.current=new extendable_media_recorder_1.MediaRecorder(mediaStream.current,mediaRecorderOptions||undefined);mediaRecorder.current.ondataavailable=onRecordingActive;mediaRecorder.current.onstop=onRecordingStop;mediaRecorder.current.onstart=onRecordingStart;mediaRecorder.current.onerror=function(){setError("NO_RECORDER");setStatus("idle");};mediaRecorder.current.start();setStatus("recording");_a.label=5;case 5:return[2];}});});};var onRecordingActive=function(_a){var data=_a.data;mediaChunks.current.push(data);};var onRecordingStart=function(){onStart();};var onRecordingStop=function(){var chunk=mediaChunks.current[0];var blobProperty=Object.assign({type:chunk.type},blobPropertyBag||(video?{type:"video/mp4"}:{type:"audio/wav"}));var blob=new Blob(mediaChunks.current,blobProperty);var url=URL.createObjectURL(blob);setStatus("stopped");setMediaBlobUrl(url);onStop(url,blob);};var muteAudio=function(mute){setIsAudioMuted(mute);if(mediaStream.current){mediaStream.current.getAudioTracks().forEach(function(audioTrack){return(audioTrack.enabled=!mute);});}};var pauseRecording=function(){if(mediaRecorder.current&&mediaRecorder.current.state==="recording"){setStatus("paused");mediaRecorder.current.pause();}};var resumeRecording=function(){if(mediaRecorder.current&&mediaRecorder.current.state==="paused"){setStatus("recording");mediaRecorder.current.resume();}};var stopRecording=function(){if(mediaRecorder.current){if(mediaRecorder.current.state!=="inactive"){setStatus("stopping");mediaRecorder.current.stop();if(stopStreamsOnStop){mediaStream.current&&mediaStream.current.getTracks().forEach(function(track){return track.stop();});} | ||
mediaChunks.current=[];}}};return{error:RecorderErrors[error],muteAudio:function(){return muteAudio(true);},unMuteAudio:function(){return muteAudio(false);},startRecording:startRecording,pauseRecording:pauseRecording,resumeRecording:resumeRecording,stopRecording:stopRecording,mediaBlobUrl:mediaBlobUrl,status:status,isAudioMuted:isAudioMuted,previewStream:mediaStream.current?new MediaStream(mediaStream.current.getVideoTracks()):null,previewAudioStream:mediaStream.current?new MediaStream(mediaStream.current.getAudioTracks()):null,clearBlobUrl:function(){if(mediaBlobUrl){URL.revokeObjectURL(mediaBlobUrl);} | ||
setMediaBlobUrl(null);setStatus("idle");},};} | ||
setMediaBlobUrl(undefined);setStatus("idle");},};} | ||
exports.useReactMediaRecorder=useReactMediaRecorder;var ReactMediaRecorder=function(props){return props.render(useReactMediaRecorder(props));};exports.ReactMediaRecorder=ReactMediaRecorder; |
{ | ||
"name": "react-media-recorder", | ||
"version": "1.6.5", | ||
"version": "1.6.6", | ||
"description": "A React component based on MediaRecorder() API to record audio/video streams", | ||
@@ -41,3 +41,7 @@ "main": "index.js", | ||
}, | ||
"types": "./lib/index.d.ts" | ||
"types": "./lib/index.d.ts", | ||
"dependencies": { | ||
"extendable-media-recorder": "^6.6.5", | ||
"extendable-media-recorder-wav-encoder": "^7.0.68" | ||
} | ||
} |
21554
93
2
+ Added@babel/runtime@7.24.7(transitive)
+ Addedautomation-events@7.0.5(transitive)
+ Addedbroker-factory@3.0.98(transitive)
+ Addedcompilerr@10.0.2(transitive)
+ Addeddashify@2.0.0(transitive)
+ Addedextendable-media-recorder@6.6.10(transitive)
+ Addedextendable-media-recorder-wav-encoder@7.0.111(transitive)
+ Addedextendable-media-recorder-wav-encoder-broker@7.0.102(transitive)
+ Addedextendable-media-recorder-wav-encoder-worker@8.0.99(transitive)
+ Addedfast-unique-numbers@7.0.29.0.5(transitive)
+ Addedindefinite-article@0.0.2(transitive)
+ Addedmedia-encoder-host@8.1.0(transitive)
+ Addedmedia-encoder-host-broker@7.1.0(transitive)
+ Addedmedia-encoder-host-worker@9.2.0(transitive)
+ Addedmulti-buffer-data-view@3.0.24(transitive)
+ Addedrecorder-audio-worklet@5.1.39(transitive)
+ Addedrecorder-audio-worklet-processor@4.2.21(transitive)
+ Addedregenerator-runtime@0.14.1(transitive)
+ Addedrxjs-interop@2.0.0(transitive)
+ Addedstandardized-audio-context@25.3.72(transitive)
+ Addedsubscribable-things@2.1.36(transitive)
+ Addedtslib@2.6.3(transitive)
+ Addedworker-factory@6.0.767.0.25(transitive)