Можно ли захватить поток с камеры, и либо:
Я уже написал приложение, которое при использовании на рабочем столе в браузере захватывало камеру и воспроизводило ее в видеотеге, но, видимо, это решение теперь работает по умолчанию, когда я развернул свое приложение на телефоне Android.
Спасибо
venkatakrishnan и @dragonfly, ребята, вам удалось это решить?
Возможны обе функции (опции): использовать этот поток как источник для тега видео на странице HTML использовать этот поток (фреймы) как источник для холста
Используя ionic с плагином FileTransfer, Camera, вы можете легко передавать детали ваших данных (байты, кадры, изображения, текст) внутри холста, что на 100 процентов возможно, поскольку cordova является расширением HTML5 для мобильных устройств.
Не могли бы вы немного уточнить (возможно, с помощью фрагментов кода)? Какие именно плагины мне нужны? Вы имели ввиду, что ionicframework.com/docs/native/camera можно настроить на передачу потока? Пока что, когда я использую этот плагин, приложение i запускает приложение камеры, которое позволяет делать снимки, не более того.
Я думаю, вы хотите взаимодействовать с камерой из 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 делает одиночный снимок и создает звук срабатывания затвора. Этот метод не позволяет получить поток, который я мог бы использовать с моим тегом видео.
Затем на основе этого плагина вы должны настроить плагин. Вы можете изучить cordova.apache.org/docs/en/latest/guide/hybrid/plugins или создать свой собственный плагин в соответствии с вашими потребностями.
не могли бы вы опубликовать функцию loadImage? Благодарность
подробная документация находится здесь github.com/cordova-plugin-camera-preview/…
Привет, вы смогли найти какое-то решение для этого? Сейчас ищу нечто подобное.