Html5的webcoekt播放JPEG图像流
  • 作者:admin
  • 发表时间:2020-12-29 07:51
  • 来源:未知

本文主要介绍Html5播放JPEG图像流的webcoekt,通过样例代码详细介绍,对大家的学习或工作有一定的参考学习价值。需要的朋友可以和边肖一起学习。

一、简介

由于webcoekt是基于tcp连接的,理论上,所有浏览器都可以处理带有私有协议的二进制文件。如果需要播放视频,可以在后端对视频数据进行解码,将图片直接推送到webcoekt的前端,然后前端通过websocket接收图片,然后在img或canvas中显示。当然这是我自己的想法,也是应该做的。需要以下技术支持:

后端直接ffmpeg转码为jpeg图像流

后端定制回放协议包括基本指令,如播放、停止、暂停、更快和更慢

后端需要提供websocket来支持向前端发送图片

前端需要接受图片流并显示

这里不解释后端ffmpeg解码。我有很多图书馆,需要单独联系我购买。前端显示jpg流。这里要用前端显示图片的方法,用图片的base64数据!前端HTML显示二进制jpeg图片:图片流=base64编码从二进制到图像=在img的src中设置,如前端代码

身体

img id=' player ' style=' width :704 px;高度:576px'/

/body

二进制通过arraybuffer转换为base64

函数arrayBufferToBase64(缓冲区){

var binary=

var bytes=new Uint8Array(缓冲区);

var len=bytes.byteLength

for(var I=0;i leni ) {

binary=String.fromCharCode(字节[I]);

}

return window.btoa(二进制);

}

最后一次显示:

var player=document . getelementbyid(' player ');

var url=arrayBufferToBase64(数据);

player . src=' data : image/JPEG;base64,' url

当然,还有其他方法:

var WSctrl=new WebSocket(' ws ://127 . 0 . 0 . 1/ctrl/');

//建立通道代码

.

var WSVIDEO=new WebSocket(' ws ://127 . 0 . 0 . 1/video/channel 1 ');

wsVideo.onmessage=function(evt)

{

//方法1

document.getElementById('img1 ')。src=URL . CreateObjectURL(evt . data);

//方法2

var read=new FileReader();

read.onload=function(e)

{

document.getElementById('img2 ')。src=e . target . result;

}

read . readasdataurl(evt . data);

}

ws.onmessage=function(evt) {

if(type of(evt . data)=' string '){

//TextHandler(JSON . parse(evt . data));

}else{

var reader=new FileReader();

reader.onload=function(evt){

if(evt . target . ReadyState==FileReader。完成){

var URL=evt . target . result;

警报(URL);

var img=document . getelementbyid(' IMgdiv ');