Как передать записанные видеоданные из JavaScript в Python - PullRequest
1 голос
/ 03 октября 2019

Я пытаюсь передать записанные большие двоичные видеоданные из некоторого кода JavaScript в мои маршруты, чтобы я мог сохранить его
я новичок

JavaScript записывает видео с использованиемПользователь веб-камеры и сохраняет его как записанный BLOB. Я пытаюсь передать эти записи записано в мои маршруты Python для сохранения.

Это код JavaScript .. Он находится в моем HTML-файле

<script type="text/javascript">

  let video = document.getElementById("video");
  let recording = document.getElementById("recording");
  let startButton = document.getElementById("startButton");
  let stopButton = document.getElementById("stopButton");
  let downloadButton = document.getElementById("downloadButton");
  let logElement = document.getElementById("log");

  let recordingTimeMS = 5000;


  function log(msg) {
    logElement.innerHTML += msg + "\n";
  }
  function wait(delayInMS) {
    return new Promise(resolve => setTimeout(resolve, delayInMS));
  }
  function startRecording(stream, lengthInMS) {
    let recorder = new MediaRecorder(stream);
    let data = [];

    recorder.ondataavailable = event => data.push(event.data);
    recorder.start();
    log(recorder.state + " for " + (lengthInMS/1000) + " seconds...");

    let stopped = new Promise((resolve, reject) => {
      recorder.onstop = resolve;
      recorder.onerror = event => reject(event.name);
    });

    let recorded = wait(lengthInMS).then(
      () => recorder.state == "recording" && recorder.stop()
    );

    return Promise.all([
      stopped,
      recorded
    ])
    .then(() => data);
  }
  function stop(stream) {
    stream.getTracks().forEach(track => track.stop());
  } 
  startButton.addEventListener("click", function() {

    navigator.mediaDevices.getUserMedia({
      video: true,
      audio: true
    }).then(stream => {
      video.srcObject = stream;
      downloadButton.href = stream;
      video.captureStream = video.captureStream || video.mozCaptureStream;
      return new Promise(resolve => video.onplaying = resolve);
    }).then(() => startRecording(video.captureStream(), recordingTimeMS))
    .then (recordedChunks => {
      let recordedBlob = new Blob(recordedChunks, { type: "video/webm" });
      recording.src = URL.createObjectURL(recordedBlob);
      downloadButton.href = recording.src;
      downloadButton.download = "RecordedVideo.webm";

      log("Successfully recorded " + recordedBlob.size + " bytes of " +
          recordedBlob.type + " media.");
    })
    .catch(log);
  }, false);

  stopButton.addEventListener("click", function() {
    stop(video.srcObject);
  }, false);
   </script>

Это route.pyгде я пытаюсь передать записанные данные BLOB

@posts.route('/post/new/vlog',methods=['GET','POST'])
def new_vlog():
    if current_user.is_authenticated:
        return render_template('vlog.html',title='New Vlog',video={recordedBlob})
        if video.data:
            video_file = save_video(video.data)
            return redirect(url_for('main.home'))
    else:
            return redirect(url_for('users.login'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...