python与html网页websocket视频通信,上硬货了

看抖音直播有遥控4g小车去买东西的。突然想自己做个遥控机器人给自己办事。AI当然不能差但是后期再说,把道路随便用神经网络映射下就可以自主送货了。

好了不吹牛了,第一步是视频通讯,如果远端是Windows当然最好容易开发但是成本太高了,闲置安卓手机虽然多,但是安卓编程阅读成本太高。剩下一个跨平台的html网页应用开发简单快速就选它了。服务端就用python。如果Windows平台肯定选UDP速度最快,可是网页环境只有tcp,只有玩websocket了。

上代码遍布下去了,复制粘贴就可以用。
细节自己去摸索吧。语音下个文章发。本地环境,上服务器环境我现在还用不到。
python服务器端代码

import base64
import asyncio
import websockets
import cv2
import math
import np


async def echo(websocket, path):
    #fetch msg
    async for message in websocket:
        #print("got a message:{}".format(message))
        #image = np.asarray(bytearray(message), dtype="uint8")
        #print(message)
        imm=base64.b64decode(message.split(',')[1])#去掉类型头
        #print(len(imm))


        im=np.asarray(list(imm), dtype="uint8")#解码成cv2可阅读的格式

        im2 = cv2.imdecode(im, cv2.IMREAD_COLOR)
        cv2.imshow('Image',im2)
        cv2.waitKey(1)
        
        
        
        #await websocket.send(message)
        
        

async def main():
    # 
    async with websockets.serve(echo, "192.168.1.102", 8765):
        await asyncio.Future()  # run forever

asyncio.run(main())

网页端

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>自由网 -FD</title>
</head>
<body>
 
 

  <video id="video" src=""></video>
  <canvas id="canvas"></canvas>
</body>
<script>
      //媒体对象
      var video = document.getElementById('video')

      var canvas = document.getElementById('canvas')
         canvas.width = 400;
         canvas.height = 300;



const mediaStreamConstraints = {
  video: true, 
  audio: false,
  video: {
            width: 400,
            height: 300,
			facingMode: "environment"
       }

};
function gotLocalMediaStream(mediaStream) {
  video.srcObject =  mediaStream//创建并实力化
    video.play();
	onetu();
	onetu();
	onetu();
}
// Create WebSocket connection.
const socket = new WebSocket('ws://192.168.1.102:8765');

// Connection opened
socket.addEventListener('open', function (event) {
    
});

// Listen for messages
socket.addEventListener('message', function (event) {
    console.log('Message from server ', event.data);
});
navigator.mediaDevices.getUserMedia(mediaStreamConstraints).then(gotLocalMediaStream).catch();

       var context = canvas.getContext("2d"); //c创建对象
        
         setInterval(function(){ //setTimeout(function(){//
          var co =   context.drawImage(video,0,0);//剪切图像
		  //console.log(co)
           img = context.getImageData(0, 0, 400, 300)//获取图片信息
           data = img.data//获取图片信息
		   context.putImageData(img,0,0)
		   
		   im=canvas.toDataURL("image/jpe")
		   //console.log(im)
		   //im2=base64ToBlob(im,"image/jpe")
           //console.log(Date())//打印时间
		   
		   if (socket.readyState==1){socket.send(im);}		    			        
         }, 43)   



//赋值粘贴即可用不懂的地方自己慢慢百度。注意ip地址填对,或者填本地。
</script>
</html>


怎么传视频我想秀一波。
需要审核,审核通过后我再贴进来。

websocket视频通讯

本节完,下节声音通讯,差点把我弄奔溃了,视频十几分钟的事,以为语音那不是两三分钟的事。虽然我们经常使用语音的即时通讯,但是此内容属于生僻内容非常难以跑通代码。网上又搜不到例子,我来打样例吧。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值