媒体流录制仅在 iPhone Safari 上不起作用。我需要特别考虑什么吗?

我想使用 WebRTC 和github.io的脚本从智能手机摄像头录制视频(演示:https : //webrtc.github.io/samples/src/content/getusermedia/record/)。但是演示链接在 iPhone Safari 上不起作用。


我也在这里尝试了源脚本


这是记录演示的原始代码:


'use strict';


/* globals MediaRecorder */


const mediaSource = new MediaSource();

mediaSource.addEventListener('sourceopen', handleSourceOpen, false);

let mediaRecorder;

let recordedBlobs;

let sourceBuffer;


const errorMsgElement = document.querySelector('span#errorMsg');

const recordedVideo = document.querySelector('video#recorded');

const recordButton = document.querySelector('button#record');

recordButton.addEventListener('click', () => {

  if (recordButton.textContent === 'Start Recording') {

    startRecording();

  } else {

    stopRecording();

    recordButton.textContent = 'Start Recording';

    playButton.disabled = false;

    downloadButton.disabled = false;

  }

});


const playButton = document.querySelector('button#play');

playButton.addEventListener('click', () => {

  const superBuffer = new Blob(recordedBlobs, {type: 'video/webm'});

  recordedVideo.src = null;

  recordedVideo.srcObject = null;

  recordedVideo.src = window.URL.createObjectURL(superBuffer);

  recordedVideo.controls = true;

  recordedVideo.play();

});


const downloadButton = document.querySelector('button#download');

downloadButton.addEventListener('click', () => {

  const blob = new Blob(recordedBlobs, {type: 'video/webm'});

  const url = window.URL.createObjectURL(blob);

  const a = document.createElement('a');

  a.style.display = 'none';

  a.href = url;

  a.download = 'test.webm';

  document.body.appendChild(a);

  a.click();

  setTimeout(() => {

    document.body.removeChild(a);

    window.URL.revokeObjectURL(url);

  }, 100);

});


function handleSourceOpen(event) {

  console.log('MediaSource opened');

  sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vp8"');

  console.log('Source buffer: ', sourceBuffer);

}


function handleDataAvailable(event) {

  if (event.data && event.data.size > 0) {

    recordedBlobs.push(event.data);

  }

}

我还测试脚本小提琴不同的智能手机。它显然只在 iPhone 上不起作用。


翻翻过去那场雪
浏览 226回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript