压缩视频 html5播放,将HTML5视频呈现为Canvas正在压缩图像

我正在尝试使用getUserMedia从用户的网络摄像头拍摄照片.

来自相机的图像是640×480(可能是任何尺寸,具体取决于用户的网络摄像头).

我有一个视频标签,大小为320×240与css,我即时渲染网络摄像头图像,如下所示:

var $video = $('video');

navigator.getUserMedia({ video: true }, function (stream) {

$video[0].mozSrcObject = stream;

$video[0].play();

localMediaStream = stream;

}, function () {

console.log('sadtrombone.com');

});

这很好用.

然后,即时拍照/静止帧如下:

var ctx = $canvas[0].getContext('2d');

ctx.drawImage($video[0], 0, 0, $canvas[0].width, $canvas[0].height);

这会将图像绘制到画布上,但看起来有点模糊:/

那么,如果我这样做:

$('img).attr('src', $canvas[0].toDataURL('image/png'));

这会将画布渲染为图像元素,但图像被压扁,其300×150:/

$canvas [0] .width == 300和$canvas [0] .height == 150

这是怎么回事?

更新:有趣/奇怪 – 如果我这样做:

ctx.drawImage($video[0], 0, 0, 320, 240);

我仍然最终得到一张300×150的图像,但是它的裁剪.虽然它看起来确实是来自源的正确宽高比

更新2:即使是陌生人,如果我这样做:

ctx.drawImage($video[0], 0, 0, 640, 480);

我仍然最终得到一张300×150的图像,但它的左上角是图像:'(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于在 Canvas压缩视频,你可以使用以下步骤: 1. 首先,将视频加载到一个 `<video>` 元素中: ```html <video id="videoElement" controls> <source src="video.mp4" type="video/mp4"> </video> ``` 2. 创建一个 `<canvas>` 元素用于显示和处理视频帧: ```html <canvas id="canvasElement"></canvas> ``` 3. 在 JavaScript 中,获取视频元素和画布元素,并在视频播放事件中进行处理: ```javascript const video = document.getElementById('videoElement'); const canvas = document.getElementById('canvasElement'); const ctx = canvas.getContext('2d'); video.addEventListener('play', () => { // 设置画布大小与视频大小一致 canvas.width = video.videoWidth; canvas.height = video.videoHeight; // 压缩视频帧 function compressVideoFrame() { if (video.paused || video.ended) { return; } // 将当前视频帧绘制到画布上 ctx.drawImage(video, 0, 0, canvas.width, canvas.height); // 在此处进行图像处理或压缩操作 // 继续下一帧压缩 requestAnimationFrame(compressVideoFrame); } // 开始压缩视频帧 compressVideoFrame(); }); ``` 在上述代码中,当视频播放时,通过调用 `ctx.drawImage` 将当前视频帧绘制到画布上。你可以在这一步添加任何图像处理或压缩的逻辑。`requestAnimationFrame` 方法用于在下一帧进行继续处理,以实现视频的连续压缩。 请注意,这只是一个简单的示例,实际情况可能会更复杂,具体取决于你要实现的压缩算法和需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值