Захватите поток с камеры и поместите его на холст с помощью Ionic на Android

Можно ли захватить поток с камеры, и либо:

  • использовать этот поток как источник для тега видео на странице HTML
  • использовать этот поток (фреймы) как источник для холста

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

Спасибо

Привет, вы смогли найти какое-то решение для этого? Сейчас ищу нечто подобное.

venkata krishnan 18.12.2018 05:23

venkatakrishnan и @dragonfly, ребята, вам удалось это решить?

Armando 08.06.2020 19:28
1
2
3 132
2

Ответы 2

Возможны обе функции (опции): использовать этот поток как источник для тега видео на странице HTML использовать этот поток (фреймы) как источник для холста

Используя ionic с плагином FileTransfer, Camera, вы можете легко передавать детали ваших данных (байты, кадры, изображения, текст) внутри холста, что на 100 процентов возможно, поскольку cordova является расширением HTML5 для мобильных устройств.

Не могли бы вы немного уточнить (возможно, с помощью фрагментов кода)? Какие именно плагины мне нужны? Вы имели ввиду, что ionicframework.com/docs/native/camera можно настроить на передачу потока? Пока что, когда я использую этот плагин, приложение i запускает приложение камеры, которое позволяет делать снимки, не более того.

dragonfly 23.05.2018 00:11

Я думаю, вы хотите взаимодействовать с камерой из html,

Тогда вы можете посмотреть Кордова-плагин-камера-предварительный просмотр

HTML

<script src = "https://raw.githubusercontent.com/blueimp/JavaScript-Load-Image/master/js/load-image.all.min.js"></script>

<p><div id = "originalPicture" style = "width: 100%"></div></p>

JS

let options = {
  x: 0,
  y: 0,
  width: window.screen.width,
  height: window.screen.height,
  camera: CameraPreview.CAMERA_DIRECTION.BACK,
  toBack: false,
  tapPhoto: true,
  tapFocus: false,
  previewDrag: false,
  disableExifHeaderStripping: true
};
....

function gotRotatedCanvas(canvasimg) {
  var displayCanvas = $('canvas#display-canvas');
  loadImage.scale(canvasimg, function(img){
    displayCanvas.drawImage(img)
  }, {
    maxWidth: displayCanvas.width,
    maxHeight: displayCanvas.height
  });
}

CameraPreview.getSupportedPictureSizes(function(dimensions){
  dimensions.sort(function(a, b){
    return (b.width * b.height - a.width * a.height);
  });
  var dimension = dimensions[0];
  CameraPreview.takePicture({width:dimension.width, height:dimension.height, quality: 85}, function(base64PictureData){
    /*
      base64PictureData is base64 encoded jpeg image. Use this data to store to a file or upload.
      Its up to the you to figure out the best way to save it to disk or whatever for your application.
    */

    var image = 'data:image/jpeg;base64,' + imgData;
    let holder = document.getElementById('originalPicture');
    let width = holder.offsetWidth;
    loadImage(
      image,
      function(canvas) {
        holder.innerHTML = "";
        if (app.camera === 'front') {
          // front camera requires we flip horizontally
          canvas.style.transform = 'scale(1, -1)';
        }
        holder.appendChild(canvas);
      },
      {
        maxWidth: width,
        orientation: true,
        canvas: true
      }
    );
  });
});

Надеюсь это поможет.

Все еще не совсем то, что мне нужно. takePicture делает одиночный снимок и создает звук срабатывания затвора. Этот метод не позволяет получить поток, который я мог бы использовать с моим тегом видео.

dragonfly 23.05.2018 11:13

Затем на основе этого плагина вы должны настроить плагин. Вы можете изучить cordova.apache.org/docs/en/latest/guide/hybrid/plugins или создать свой собственный плагин в соответствии с вашими потребностями.

Anuj.T 23.05.2018 14:28

не могли бы вы опубликовать функцию loadImage? Благодарность

mluis 26.07.2019 11:00

подробная документация находится здесь github.com/cordova-plugin-camera-preview/…

Anuj.T 08.08.2019 08:35

Другие вопросы по теме