Estoy tratando de convertir mediaBlobUrl que obtengo después de grabar un video usando Media Recorder a un archivo mp4,
const { status, startRecording, stopRecording, mediaBlobUrl, } = useReactMediaRecorder({ video: true }); const myFile = new File([mediaBlobUrl], "demo.mp4", { type: 'video/mp4' });Pero después de cerrar sesión en el archivo, siempre obtengo un tamaño de archivo de 64 bytes y no funciona.
Nota: Sin embargo, si descargo el archivo usando una URL de blob como esta,
<a href={mediaBlobUrl} download="myFile">Download file</a>Y luego cargue el archivo y verifique su tamaño, funciona bien.
¿Hay alguna otra forma de convertir la URL del blob en un archivo de video mp4?
El mediaBlobUrl proporcionado por react-media-recorder es una URL de objeto y no un Blob . Es por eso que falla la conversión a un File .
Hay una función onstop que le permite acceder directamente al Blob . Pero también puede volver a convertir la URL del objeto en un Blob como se describe aquí .
const mediaBlob = await fetch(mediaBlobUrl) .then(response => response.blob()); const myFile = new File( [mediaBlob], "demo.mp4", { type: 'video/mp4' } ); Tenga en cuenta que esto solo producirá un archivo válido si MediaRecorder se configuró realmente para grabar un mp4.