Всем привет. нужна помощь нашел хорошую ссылку на получение картинки с WEB камеры и передачи ее на сервер: habr.com/ru/post/172419 Но на том форуме мне запрещено задавать вопросы. Может на этом форуме мне помогут ? Если да - я задам вопрос Заранее спасибо С ув Александр
Спасибо Создал 2 файла video.html передача картинки и server_video.php - прием. В video.html вижу картинку с WEB камеры и идет передача. А server_video.php вроде принимает но не отображает картинку. Выскакивает ошибка : "Uncaught SyntaxError: Unexpected token '<' at m (jquery-3.3.1.min.js:2) at Function.globalEval (jquery-3.3.1.min.js:2) at text script (jquery-3.3.1.min.js:2) at Ut (jquery-3.3.1.min.js:2) at k (jquery-3.3.1.min.js:2) at XMLHttpRequest.<anonymous> (jquery-3.3.1.min.js:2)" Не хватает знаний разобраться. video.html: Код (Text): <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script type="text/javascript" src="jQuery/jquery-3.3.1.min.js"></script> <title>Document</title> </head> <body> <video autoplay id="vid" style="display:none;"></video> <canvas id="canvas" width="640" height="480" style="border:5px solid #240655;"></canvas><br> <button onclick="startBroadcasting()">Передача видео</button> <button onclick="stopBroadcasting()">Стоп передачи видео</button> <script> var video = document.querySelector("#vid"), canvas = document.querySelector('#canvas'), ctx = canvas.getContext('2d'), localMediaStream = null, onCameraFail = function(e) { console.log('Camera did not work.', e); // Исключение на случай, если камера не работает }; navigator.getUserMedia =( navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia); window.URL = window.URL || window.webkitURL; navigator.getUserMedia({ // navigator.mediaDevices.getUserMedia({ video: true }, function(stream) { // video.src = window.URL.createObjectURL(stream); video.srcObject = stream; localMediaStream = stream; }, onCameraFail); cameraInterval = setInterval(function() { snapshot(); }, 1); function snapshot() { if (localMediaStream) { ctx.drawImage(video, 0, 0); } } // ******************************отправка на СЕРВЕР var isBroadcasting = false, broadcastingTimer; function sendSnapshot() { var quality = 0.4; if (localMediaStream && !isBroadcasting) { isBroadcasting = true; // console.log("555") // var dataURL = canvas.toDataURL(); // console.log(dataURL); $.post("Server_Video.php", { p: "new", text: ctx.canvas.toDataURL("image/webp", quality) // quality - качество изображения(float) }, function(result) { console.log(result); // На случай, если что-то пойдёт не так isBroadcasting = false; } ); } } function startBroadcasting() { broadcastingTimer = setInterval(sendSnapshot, 1); } function stopBroadcasting() { clearInterval(broadcastingTimer); } </script> </body> </html> Server_Video.php: Код (Text): <?php if(isset($_POST['p'])&&($_POST['p']=="ajax")){ Header("Cache-Control: no-cache, must-revalidate"); Header("Pragma: no-cache"); Header("Content-Type: text/javascript; charset=windows-1251"); $file = file("monitor_id.txt"); $id = $file[0]; if($id > $_GET['last']){ $text_file = file("monitor_command.txt"); $count = count($text_file); $last = $id; echo "var main = $('#main'); \n"; for($i = 0; $i < 1; $i++){ $s = $text_file[$i]; while(strpos($s, chr(92)) !== false){ $s = str_replace(chr(92), "", $s); } echo $s; } echo "\n"; echo "last_message_id = $id;"; } } elseif((isset($_POST['p']) && $_POST['p'] == "new") || (isset($_POST['p']))){ // Получение картинки $file = file("monitor_id.txt"); $id = $file[0]; $fh = fopen("monitor_command.txt", "w+"); $get_text = $_POST['text']; $gt = $get_text; while(strpos($get_text, "\r\n") !== false){ $get_text = str_replace("\r\n", "<br>", $get_text); } fwrite($fh, "document.body.innerHTML = ('<img src=".'"'.".$get_text".'"'."/>);\n"); fclose($fh); $fhn = fopen("monitor_id.txt", "w+"); fwrite($fhn, $id + 1); fclose($fhn); echo $get_text; } ?> <script> var last_message_id = 0, load_in_process = false; function Load() { if(!load_in_process) { load_in_process = true; $.post("server_video.php", { p: "ajax", last: last_message_id, // version: version }, function (result) { eval(result); load_in_process = false; } ); } } var loadInterval = setInterval(Load, 100); </script> <script type="text/javascript" src="jQuery/jquery-3.3.1.min.js"></script> С ув Александр
ну серверная часть и не должна ничего отображать а в целом при формировании там js кода - где-то косяк с тегами < ... че-нить не закрыто или не заэкранировано
Вопрос к профи Никак не могу врубиться video.html отображает информацию с web камеры и передает ее на Server_video.php почему я не могу открыть страничку Server_video.php через браузер и посмотреть полученную картинку пока эта страничка пустая Спасибо
Ну не должен потому что... Вообще весь подход довольно странный... Если внимательно посмотрите оригинал статьи, там серверный скрипт вызывается в клиентском html браузере по таймеру... Ибо это скрипт php генерирует js
Спасибо Заработало. Но есть несколько проблем. Одна из них Клиентский JS код работает: Код (Text): <p id="p1"></p> <img id="image" /> <script> i = 0; var last_message_id = 0, load_in_process = false; function Load() { i++; if (!load_in_process) { load_in_process = true; $.post("Video/Server_Video1.php", { p: "ajax", last: last_message_id }, function(result) { // console.log(result); load_in_process = false; document.getElementById("countframe").innerText = i; $("#p1").html("<img src=" + result + " />"); }); } } var loadInterval = setInterval(Load, 300); </script> <p id="countframe"></p> <img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" width="16" height="14" alt="внедренная иконка папки" /> Проблема в следующем. JS код получает картинку 3 раза /сек Но сама картинка "id=p1" меняется с большой задержкой: раз в 5- 7 секунд Не могу понять в чем дело С ув Александр
Привет Я получаю картинку 5 раз в секунду и я хочу , чтоб видеть все эти картинки (живое видео). А сейчас почему то 20-30 картинок не отображается, хотя в CONSOLE я их вижу, а отображается только каждая 20 или 30. У меня такое впечатление, что браузер, чем то занят и не успевает отрисовывать каждую картинку .