在 HTML5 画布上显示本地可用的 JPEG 编码博客 - 浏览器尝试连接到网络服务器

xmp125a

我已经实现了一个代码来从用户的相机捕获视频流,并将其编码为 JPEG,然后通过 websocket 上传到服务器。工作得很好,10 fps 没问题。相关代码片段:

// Get webcam access
if (navigator.getUserMedia) {       
    navigator.getUserMedia({video: true}, handleVideo, videoError);
} 
function handleVideo(stream) {
    video.src = window.URL.createObjectURL(stream);
}

...

// Elements for taking the snapshot
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var video = document.getElementById('videoElement');

...

// Trigger Frame Capture
setInterval(CaptureTimer, 100);
function CaptureTimer() {
    context.drawImage(video, 0, 0, 640, 480);
        canvas.toBlob(function(blob) {
            ws.send(blob);
        }, "image/jpeg", 0.5);  
}

(不要尝试按原样运行代码,不显示非必要部分。它的工作原理是在画布中绘制视频源,然后将其打包在 JPEG 编码的 blob 中,然后由 websocket 发送)。Javascript 控制台没有错误,有效的图像记录在服务器上。

但是,我还需要能够从服务器获取处理过的图像,并将它们显示在画布中。所以为了在本地测试东西,我添加了几行来将二进制 blob 绘制回其他画布(在通过 websocket 连接来回之前):

// Elements for drawing the blobbed image
var rcanvas = document.getElementById('rcanvas');
var rcontext = rcanvas.getContext('2d');
var rimage = new window.Image();
// Connect rimage to rcontext
rimage.onload = function(){
  rcontext.drawImage(rimage,0,0); 
};

...

// Trigger Frame Capture
setInterval(CaptureTimer, 100);
function CaptureTimer() {
    context.drawImage(video, 0, 0, 640, 480);
    canvas.toBlob(function(blob) {
        ws.send(blob);
        rimage.src = blob;
        };
      }, "image/jpeg", 0.5);

所以,基本上我尝试将本地生成的blob加载到另一个画布中。这没用。在 javascript 控制台中,我收到 404 错误,因为浏览器想要获取:

http://myserver.com/wwwpath/mydir/[object Blob]

当然,这会导致 404 Not Found,因为 blob 仅作为 Javascript 中的变量在本地存在。请注意,还尝试使用 blob.slice(0) 获取“blob”对象的副本,同样的错误。

我做错了什么?我确信捕获和上传视频是最困难的部分……而不是在 Canvas 中显示 JPEG blob 的简单操作。

在最新的 Firefox ESR 52.4.1(64 位)中进行测试。

客人271314

设置一个Blob URL作为img src而不是一个Blob

let blobURL = URL.createObjectURL(blob);
rimage.src = blobURL;

Blob URLBlob URL不再需要对 的引用时,您可以撤销以下过程

URL.revokeObjectURL(blobURL);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从浏览器运行本地网络服务器的可能性

来自分类Dev

在网络服务器上时,IE / FF无法找到可播放HTML5的视频。-Chrome可以正常播放

来自分类Dev

在没有网络服务器的html页面上显示csv-datei的信息

来自分类Dev

如何将 HTML 页面从 C 网络服务器发送到网络浏览器

来自分类Dev

无法连接到在 Ubuntu 20.04 无头服务器上运行的 Apache 网络服务器

来自分类Dev

气流网络服务器已启动,但 UI 未显示在浏览器中

来自分类Dev

带有 php 的 HTML5 是否需要网络服务器?

来自分类Dev

网络服务器显示错误的布局

来自分类Dev

网络服务器上的Memcached

来自分类Dev

在Yaws网络服务器上上传进度

来自分类Dev

元素在网络服务器上消失

来自分类Dev

如何查看 Apache 网络服务器上的当前连接?

来自分类Dev

将HTML5应用程序连接到服务器上的数据库*安全*

来自分类Dev

如何使我在Android上运行的网络服务器公开可用

来自分类Dev

HTML5服务器端事件-显示

来自分类Dev

HTML5音频浏览器无法解码使用IMA ADPCM编码的WAV文件

来自分类Dev

浏览器是使用内置jpeg编码器还是系统级编码器?

来自分类Dev

当我尝试访问管理部分时,Django网络服务器会在本地服务器上自动关闭

来自分类Dev

html5:在画布上显示图片

来自分类Dev

基于HTML5的游戏没有显示在浏览器上吗?

来自分类Dev

如何通过ssh在php中获取远程文件并将文件直接返回到浏览器响应,而无需在网络服务器上创建文件的副本

来自分类Dev

JavaFx Webview无法在本地服务器上加载html5视频

来自分类Dev

尝试连接到本地主机套接字服务器时,Web浏览器上的“连接已重置”

来自分类Dev

如何访问本地网络服务器

来自分类Dev

如何使用NodaTime从网络服务器查询本地系统时间和时间

来自分类Dev

无需网络服务器即可使用Javascript加载本地文件

来自分类Dev

我的本地网络服务器页面在哪里?

来自分类Dev

在本地网络服务器中运行node.js的问题

来自分类Dev

我的本地网络服务器页面在哪里?

Related 相关文章

  1. 1

    从浏览器运行本地网络服务器的可能性

  2. 2

    在网络服务器上时,IE / FF无法找到可播放HTML5的视频。-Chrome可以正常播放

  3. 3

    在没有网络服务器的html页面上显示csv-datei的信息

  4. 4

    如何将 HTML 页面从 C 网络服务器发送到网络浏览器

  5. 5

    无法连接到在 Ubuntu 20.04 无头服务器上运行的 Apache 网络服务器

  6. 6

    气流网络服务器已启动,但 UI 未显示在浏览器中

  7. 7

    带有 php 的 HTML5 是否需要网络服务器?

  8. 8

    网络服务器显示错误的布局

  9. 9

    网络服务器上的Memcached

  10. 10

    在Yaws网络服务器上上传进度

  11. 11

    元素在网络服务器上消失

  12. 12

    如何查看 Apache 网络服务器上的当前连接?

  13. 13

    将HTML5应用程序连接到服务器上的数据库*安全*

  14. 14

    如何使我在Android上运行的网络服务器公开可用

  15. 15

    HTML5服务器端事件-显示

  16. 16

    HTML5音频浏览器无法解码使用IMA ADPCM编码的WAV文件

  17. 17

    浏览器是使用内置jpeg编码器还是系统级编码器?

  18. 18

    当我尝试访问管理部分时,Django网络服务器会在本地服务器上自动关闭

  19. 19

    html5:在画布上显示图片

  20. 20

    基于HTML5的游戏没有显示在浏览器上吗?

  21. 21

    如何通过ssh在php中获取远程文件并将文件直接返回到浏览器响应,而无需在网络服务器上创建文件的副本

  22. 22

    JavaFx Webview无法在本地服务器上加载html5视频

  23. 23

    尝试连接到本地主机套接字服务器时,Web浏览器上的“连接已重置”

  24. 24

    如何访问本地网络服务器

  25. 25

    如何使用NodaTime从网络服务器查询本地系统时间和时间

  26. 26

    无需网络服务器即可使用Javascript加载本地文件

  27. 27

    我的本地网络服务器页面在哪里?

  28. 28

    在本地网络服务器中运行node.js的问题

  29. 29

    我的本地网络服务器页面在哪里?

热门标签

归档