Parece que no puedo hacer que mi servidor básico de transmisión de video mp4 funcione en iOS móvil Safari/Chrome. Funciona bien en Chrome de escritorio, pero solo muestra el reproductor de video y los controles con una pantalla negra en IOS Safari.
Encontré información sobre la especificación de tipos MIME, rangos de bytes y encabezados, pero parece que ya hice todo lo necesario.
¿Qué más debo hacer para que mi video mp4 se transmita al IOS Safari móvil?
Servidor:
const gridfsBucket = new mongoose.mongo.GridFSBucket(conn, { bucketName: `bucketName`, }); const range = req.headers.range; if (!range) { res.status(400).send("Requires Range header"); } const videoSize = video.length; const start = Number(range.replace(/\D/g, "")); const end = videoSize - 1; const contentLength = end - start + 1; const headers = { "Content-Range": `bytes ${start}-${end}/${videoSize}`, "Accept-Ranges": "bytes", "Content-Length": contentLength, "Content-Type": "video/mp4", }; res.writeHead(206, headers); const downloadStream = gridfsBucket.openDownloadStream( ObjectId(_id), { start, end: videoSize, } ); downloadStream.pipe(res); }Vídeo HTML5:
<video controls muted playsInline> <source src={`/api/main/stream/video/${_id}`} type="video/mp4" /> </video>iOSSafari: