无线传输视频有时会卡死在等待连接,我后面想在微信小程序中插入网址引入视频流,应该怎么修改能稳定连接?
-
我使用的openmv H7 R2 +wifi拓展板(winc1500)想要实现无线传输视频,开始运行后,WiFi连接正常,在浏览器中输入地址查看视频,当接收视频的浏览器关闭或断开后,OpenMV端的图传程序也会终止,进入等待连接模式,重新输入网址时,有时会卡死在等待连接,我后面想在微信小程序中插入网址引入视频流,应该怎么修改能稳定连接?
''' OpenMV搭配ATWINC1500 WiFi模块,实现图传的例程 程序本身是OpenMV原作者的编写,我只修改了一些细节,如画面参数、连接提示、图像显示帧速等 模块需要连接至无线路由(热点),只支持2.4Ghz。另有OpenMV作为热点的程序,但会使链接他的设备无法连接互联网,所以不推荐。 图传程序支持任何可以联网且有HTTP浏览器的设备,包括电脑、手机、平板等。 图传程序可以融入任何你自己的程序中,比如我B站的智能小车,就是基于OpenMV4和WiFi模块,但要注意: 当接收图像的浏览器关闭或断开后,OpenMV端的图传程序也会终止,进入等待连接模式 不合理的安排,会导致你的程序卡在等待连接处 注意程序执行时序! 由于OpenMV没有websocket库,无法实现ESP32那样的网页图传+网页按钮遥控 需要在底层加入相关支持库,或上位机有通讯程序,通过TCP/UDP透传 bilibili@程欢欢的智能控制集 20230826 ''' # MJPEG Streaming # # This example shows off how to do MJPEG streaming to a FIREFOX webrowser # Chrome, Firefox and MJpegViewer App on Android have been tested. # Connect to the IP address/port printed out from ifconfig to view the stream. import sensor, image, time, network, usocket, sys # 设置需要连接的WiFi信息 SSID ='yyyjjjxxx' # WiFi名称 KEY ='20021010yjx' # WiFi密码 # 服务器设置 HOST ='' # 使用第一个可用的网络接口 PORT = 8080 # 随机选择一个非特权端口 # 初始化并配置图像传感器 sensor.reset() sensor.set_framesize(sensor.QVGA) sensor.set_pixformat(sensor.RGB565) # 初始化无线网络模块并尝试连接到网络 print("正在尝试连接WiFi(可能需要一些时间)...") wlan = network.WINC() wlan.connect(SSID, key=KEY, security=wlan.WPA_PSK) # 输出当前无线网络的相关信息 wlan_inf = wlan.ifconfig() print('本机IP:', wlan_inf[0]) print('子网掩码:', wlan_inf[1]) print('网关IP:', wlan_inf[3]) print('在浏览器中输入以下地址查看视频流:', wlan_inf[0] + ':8080') # 创建TCP服务器套接字 s = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM) # 绑定地址和端口,并开始监听 s.bind((HOST, PORT)) s.listen(5) # 设置服务器套接字为阻塞模式 s.setblocking(True) # 定义开始视频流的函数 def start_streaming(s): print ('等待客户端连接...') client, addr = s.accept() # 接受客户端连接 client.settimeout(2.0) # 设置客户端超时时间为2秒 print ('成功连接到:', addr[0] + ':' + str(addr[1])) # 读取客户端发送的请求(这里没有进一步处理) data = client.recv(1024) # 发送HTTP响应头,准备发送多部分数据 client.send("HTTP/1.1 200 OK\r\n" \ "Server: OpenMV\r\n" \ "Content-Type: multipart/x-mixed-replace;boundary=openmv\r\n" \ "Cache-Control: no-cache\r\n" \ "Pragma: no-cache\r\n\r\n") # 初始化FPS计时器 clock = time.clock() # 主循环:获取并发送图像 fps = 0 # 初始化FPS值 while True: clock.tick() # 更新计时器 frame = sensor.snapshot() # 拍摄一帧图像 # 在图像上显示当前FPS frame.draw_string(10, 10, 'FPS:' + str(round(fps)), scale=2, color=(255, 0, 0)) # 压缩图像并准备发送 cframe = frame.to_jpeg(quality=50, copy=True) # 图像压缩 header = "\r\n--openmv\r\n" \ "Content-Type: image/jpeg\r\n" \ "Content-Length:" + str(cframe.size()) + "\r\n\r\n" client.send(header) # 发送HTTP分隔符和头信息 client.send(cframe) # 发送压缩后的图像 fps = clock.fps() # 计算FPS print(fps) # 在终端输出当前FPS # 初始化lcd屏幕。 # 注意:如果支持,可以使用 DAC 或 PWM 背光控制器来控制背光强度: # lcd = display.SPIDisplay(backlight=display.DACBacklight(channel=2)) # lcd.backlight(25) # 25% intensity # 否则,将使用默认的 GPIO(开on/关off)控制器。 # lcd = display.SPIDisplay() # 持续运行,等待客户端连接 while True: try: start_streaming(s) except OSError as e: # 捕捉并输出异常 print("发生套接字错误:", e)
关闭浏览器后显示等待连接
重新打开浏览器网址后,网址打不开,提示错误发生改变
-
浏览器网址,打开的是什么?
-