public async Task <BlobStream> CreateBlobStreamAsync(string fileName, MediaRecorderOptions options)
        {
            MediaRecorderBlobFileStream mediaRecorderBlobFileStream = new(fileName, options, _jsRuntime);
            await mediaRecorderBlobFileStream.Initialization;

            return(mediaRecorderBlobFileStream);
        }
        public async Task <Stream> CreateStreamAsync(string fileName, MediaRecorderOptions options)
        {
            MediaRecorderFileStream mediaRecorderFileStream = new(fileName, options, _streamSaver);
            await mediaRecorderFileStream.Initialization;

            return(mediaRecorderFileStream);
        }
Exemplo n.º 3
0
        public MediaRecorderFileStream(string fileName, MediaRecorderOptions mediaRecorderOptions, IStreamSaver streamSaver)
        {
            _fileName             = fileName;
            _mediaRecorderOptions = mediaRecorderOptions;
            _streamSaver          = streamSaver;

            Initialization = InitAsync();
        }
Exemplo n.º 4
0
 private MediaRecorder(IJSRuntime jsRuntime, JsObjectRef jsObjectRef, IMediaStream stream,
                       MediaRecorderOptions options) : base(jsRuntime, jsObjectRef)
 {
     AddNativeEventListenerForObjectRef("dataavailable", (s, e) => OnDataAvailable?.Invoke(s, e),
                                        BlobEvent.Create);
     AddNativeEventListenerForObjectRef("error", (s, e) => OnError?.Invoke(s, e),
                                        DOMException.Create);
     AddNativeEventListener("pause", (s, e) => OnPause?.Invoke(s, e));
     AddNativeEventListener("resume", (s, e) => OnResume?.Invoke(s, e));
     AddNativeEventListener("start", (s, e) => OnStart?.Invoke(s, e));
     AddNativeEventListener("stop", (s, e) => OnStop?.Invoke(s, e));
 }
        public MediaRecorderBlobFileStream(string fileName, MediaRecorderOptions mediaRecorderOptions,
                                           IJSRuntime jsRuntime)
        {
            _fileName             = fileName;
            _mediaRecorderOptions = mediaRecorderOptions;
            _jsRuntime            = jsRuntime;

            _streamSaverJsObjectRef     = jsRuntime.GetJsPropertyObjectRef("window", "streamSaver");
            _writeableStreamJsObjectRef = jsRuntime.CallJsMethod <JsObjectRef>(
                _streamSaverJsObjectRef, "createWriteStream", fileName);
            _writerJsObjectRef = jsRuntime.CallJsMethod <JsObjectRef>(_writeableStreamJsObjectRef, "getWriter");

            Initialization = InitAsync();
        }
Exemplo n.º 6
0
 public IMediaRecorder MediaRecorder(IMediaStream stream, MediaRecorderOptions options = null)
 {
     throw new NotImplementedException();
 }
 public Task <Stream> CreateAsync(string fileName, MediaRecorderOptions options)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 8
0
        //// TODO: REFACTOR WHOLE BLAZOR API BY USING System.Private.Runtime.InteropServices.JavaScript and use HostObject.
        ////public IMediaRecorder MediaRecorder(IMediaStream stream, MediaRecorderOptions options = null)
        ////{
        ////return new MediaRecorder(stream, options);
        ////}
        ///

        public IMediaRecorder MediaRecorder(IMediaStream stream, MediaRecorderOptions options = null) =>
        Api.MediaRecorder.Create(JsRuntime, stream, options);
Exemplo n.º 9
0
        //// TODO: REFACTOR WHOLE BLAZOR API BY USING System.Private.Runtime.InteropServices.JavaScript and use HostObject.
        //private readonly JSObject _jsObjectMediaRecorder;
        ////private readonly IMediaStream _stream;
        ////private readonly MediaRecorderOptions _options;

        //public MediaRecorder(IMediaStream stream, MediaRecorderOptions options)
        //{
        //_stream = stream;
        //_options = options;
        //_jsObjectMediaRecorder = new HostObject("MediaRecorder");
        //}

        public static IMediaRecorder Create(IJSRuntime jsRuntime, IMediaStream stream, MediaRecorderOptions options)
        {
            var jsObjectRef = jsRuntime.CreateJsObject("window", "MediaRecorder", stream.NativeObject, options);

            return(new MediaRecorder(jsRuntime, jsObjectRef, stream, options));
        }