Как обрабатывать видеофайлы в пакетном режиме с помощью Emotion SDK для Javascript

Я использую SDK Affectiva Emotion для Javascript для воспроизведения и анализа видеофайла. В настоящее время я воспроизводю видео в виде потока и фиксирую особенности эмоций, следуя их "Анализ потока видеокадров". Однако я хочу обрабатывать видеофайл в пакетном режиме, а не анализировать всю продолжительность видео.

Увеличение скорости воспроизведения видео помогло ускорить этот процесс. Я также пытался пропускать кадры, просматривая видео вперед, но производительность меня разочаровала. Кто-нибудь знает способ обработки видеофайла, который не ограничивается скоростью воспроизведения видео?


person kkawabat    schedule 22.10.2017    source источник
comment
Приносим извинения за задержку ответа. Вы поняли это? Вы можете обратиться к демонстрационной версии YouTube, которая, безусловно, связана с тем, чего вы пытаетесь достичь: github.com/ Affectiva/youtube-demo   -  person Umang Mukesh Mehta    schedule 13.11.2017
comment
Спасибо за ссылку Уманг. Я понял это, но я посмотрю на эту реализацию для любых идей!   -  person kkawabat    schedule 15.11.2017
comment
@kkawabat, не могли бы вы описать свое решение или опубликовать пример кода? Ссылка выше не очень помогает, так как демо воспроизводит видео с YouTube, но анализирует веб-камеру. У меня возникли проблемы с тем, чтобы FrameDetector работал в браузере, поэтому альтернативное решение было бы большим подспорьем. stackoverflow.com/ вопросы/47646782/   -  person carpiediem    schedule 05.12.2017
comment
Привет, Capiediem, я использовал оригинальный метод пропуска кадров немного более эффективно для достижения своей цели. Я разместил свой код jsfiddle ниже. Просто загрузите видео с помощью кнопки выбора файла, и оно должно запуститься автоматически. Технически это не пакетный процесс, как я указал в вопросе, но он мог работать быстрее, чем продолжительность видео, когда частота кадров была установлена ​​ниже, а визуализатор видео отключен. Сценарий также загружает CSV-файл с метриками из affiva после анализа видео.   -  person kkawabat    schedule 05.12.2017


Ответы (1)


Я смог решить эту проблему (хотя, вероятно, не очень эффективно), используя поиск с более низким fps. По сути, в функции детектора «onImageResultsSuccess» я вызываю функцию nextFrame, которая пропускает видео вперед на величину, которую я установил с помощью переменной fps. Который вызывает событие «поиск» для элемента видео, которое затем может вызвать функцию захвата изображения, которая запускает детектор, создавая цикл, который выполняется до тех пор, пока не будет проанализировано все видео. Ниже приведена часть кода, а также реализация jsfiddle.

  var nextFrame = function() {
    // when frame is captured, increase
    vidTimeStamp = vidTimeStamp + (1 / fps);
    // if we are not passed end, seek to next interval
    if (vidTimeStamp <= video.duration) {
      // this will trigger another seeked event
      message_text.innerHTML = ((vidTimeStamp / video.duration) * 100).toFixed(2) + "% completed";
      video.currentTime = vidTimeStamp;
    } else {
      // DONE!, next action
      message_text.innerHTML = "100% Completed";
      alert("Video Processed");

      download_btn.click();
    }
  };

  video.addEventListener("seeked", function(e) {
    // now video has seeked and current frames will show
    // at the time as we expect
    captureImage(vidTimeStamp);
  });

https://jsfiddle.net/kkawabat/zvt9rbve/

person kkawabat    schedule 05.12.2017