首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用canvas标签在浏览器插件中显示解码后的h.264数据包?

如何使用canvas标签在浏览器插件中显示解码后的h.264数据包?
EN

Stack Overflow用户
提问于 2013-04-18 02:47:02
回答 1查看 196关注 0票数 0

我不熟悉浏览器插件和firebreath。我试着建立一个插件,解码h264数据包,然后在浏览器html5上将视频帧显示为canvas标签。但是我测试了通过我的插件修改100x100画布像素,仅仅改变一个矩形的颜色就需要3-4秒。

下面是我的html代码的一部分

代码语言:javascript
复制
<canvas id="myCanvas" width="100" height="100"></canvas>

下面是我的javascript中body标记的一部分

代码语言:javascript
复制
<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var imgData=ctx.createImageData(100,100);
for (var i=0;i<imgData.data.length;i+=4) {
    imgData.data[i+0]=255;
    imgData.data[i+1]=0;
    imgData.data[i+2]=0;
    imgData.data[i+3]=255;
}
ctx.putImageData(imgData,0,0);

function delayFunctionTest() {
    console.log('test\n');
    plugin().changeImagePixel(imgData.data);
    ctx.putImageData(imgData,0,0);
}
setTimeout(function(){delayFunctionTest()}, 2000);
</script>

这是我的pluginapi.cpp

代码语言:javascript
复制
void sanypluginAPI::changeImagePixel(FB::JSObjectPtr& imageData)
{
    unsigned long i;

    for(i=0;i<imageData->GetProperty("length").convert_cast<unsigned long>();i+=4){
        imageData->SetProperty(i, 0);
        imageData->SetProperty(i+1, 100);
        imageData->SetProperty(i+2, 155);
        imageData->SetProperty(i+3, 255);
    }
}

上面的代码在控制台上显示“test”这个单词后,花了3-4秒来改变矩形的颜色。有没有办法加快浏览器插件中画布像素数据的更改过程?或者我幼稚的代码有什么问题吗?或者我的插件是不可能完成的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-18 07:23:44

没有办法直接访问画布像素数据;您最好的办法是(现在别碰我)对其进行base64编码,并将其作为字符串传递给javascript,然后对其进行解码。

是的,我知道。我知道呀。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16067758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档