Du hast nicht zufällig eine veraltete Firefox-Version (<21)? Die "behaupten" userMedia zu unterstützen, tun es aber nicht.
Ankündigung
Einklappen
Keine Ankündigung bisher.
[Erledigt] Webcam Picture speichern
Einklappen
Neue Werbung 2019
Einklappen
X
-
Ich hab das schon mehrmals nachgesehen firefox is bei mir bei 30
Ich poste euch mal den ganzen code und ihr könnt es bitte mal versuchen (danke)
HTML:
PHP-Code:<video id="video"></video>
<canvas id="canvas"></canvas>
<img src="" hidden id="photo">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
(function () {
var streaming = false,
video = document.querySelector('#video'),
canvas = document.querySelector('#canvas'),
photo = document.querySelector('#photo'),
startbutton = document.querySelector('#startbutton'),
width = 1280,
height = 720;
navigator.getMedia = ( navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
navigator.getMedia(
{
video: true,
audio: false
},
function (stream) {
if (navigator.mozGetUserMedia) {
video.mozSrcObject = stream;
} else {
var vendorURL = window.URL || window.webkitURL;
video.src = vendorURL.createObjectURL(stream);
}
video.play();
},
function (err) {
console.log("An error occured! " + err);
}
);
video.addEventListener('canplay', function (ev) {
if (!streaming) {
height = video.videoHeight / (video.videoWidth / width);
video.setAttribute('width', width);
video.setAttribute('height', height);
canvas.setAttribute('width', width);
canvas.setAttribute('height', height);
streaming = true;
}
}, false);
function takepicture() {
canvas.width = width;
canvas.height = height;
canvas.getContext('2d').drawImage(video, 0, 0, width, height);
var data = canvas.toDataURL();
photo.setAttribute('src', data);
alert(data);
$.ajax({
type: "POST",
url: "screenshot.php",
data: {
imgBase64: data
}
}).done(function (o) {
console.log('saved');
});
}
document.onkeydown = function (event) {
if (event.keyCode == 120) {
event.cancelBubble = true;
event.returnValue = false;
takepicture();
ev.preventDefault();
}
return event.returnValue;
}
})();
</script>
PHP-Code:<?php
define ('UPLOAD_DIR', 'images/');
class PacketFoto
{
public function machFoto()
{
$bImg = $_POST['imgBase64'];
$bImg = str_replace('data:image/png;base64,', '', $bImg);
$bImg = str_replace(' ', '+', $bImg);
$sData = base64_decode($bImg);
$sFile = UPLOAD_DIR . 'paket.png';
$success = file_put_contents($sFile, $sData);
return $success;
}
}
$takePic = new PacketFoto();
$takePic->machFoto();
Kommentar
-
Also, fassen wir mal zusammen, das Problem ist sicherlich in irgendeiner Form Firefoxspezifisch, das heißt ein Verweis auf Chrom mit "da geht es" ist hier nicht relevant.
Debugge wie gesagt mal alle Variablen, die in diesen beiden Zeilen auftauchen:
Code:canvas.getContext('2d').drawImage(video, 0, 0, width, height); var data = canvas.toDataURL();
[URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
[PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]
Kommentar
-
Ich weiß nicht wie ich video überprüfen soll. data ist immer leer.
hab mich bei google nochmal umgehört und
http://stackoverflow.com/questions/2...a-sizing-issue
gefunden. da wird in denn kommentaren auch geschrieben das zwar die Camera geht jedoch können die auch kein Foto erstellen.
mein Javascript wissen ist nur sehr sehr wenig und mehr als data prüfen konnte ich auch nicht.
Also video muss ja was hergeben sonst würde meine cam garnicht gehen. canvas ist ja das feld in das von video geschrieben wird. da canvas an jeder stelle leer ist wird natürlich auch data leer sein. Das problem liegt also darin das video nicht in das feld canvas schreibt. die frage ist nur liegt das an der function drawImage()? gibt es dafür eine alternative? villeicht eine möglichkeit das bild zu holen ohne diese function zu benutzen?
Kommentar
-
Also ich hab grade etwas rumgetestet und da ist mir aufgefallen das man denn stream rechtsklicken kann und darunter eine Option ist um ein Screenshot zu machen. Ich mein ich versuch seid wochen genau das zu tun und siehe da Firefox weiß schon wie es geht..... kann ich damit irgendwie was anfangen?irgendwie genau das im php oder javascript aufrufen?weil sobald ich das bild speichere und unter Firebug beobachte sehe ich garnichts. nichts wird in dem Moment ausgelöst. wie kann ich dann herausfinden wo ich das aufrufen kann?
Kommentar
-
Also ich sags gerne nochmal. Die aufname ist unwichtig was wichtig ist das ich ein Screenshot brauche von der aktuellen ansicht. und das ist zurzeit nicht möglich im firefox wie es scheint. es gibt schon mehrere personen die das gleiche behaupten das das im firefox 20+ nicht möglich ist ein screenshot zu machen. naja ich hoffe das wird bald gefixxt.
Kommentar
Kommentar