ESP8266WIFI连网播放视频

这篇具有很好参考价值的文章主要介绍了ESP8266WIFI连网播放视频。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇介绍ESP8266在OLED上播放视频:

  • 电脑端Python程序作为视频数据的服务器,借助OpenCV实时读取视频帧,并进行二值图像转换,尺寸调整,再将二值图像转为数组,并以二进制形式的数据通过socket方式无线发送给ESP8266。
  • ESP8266采用Arduino IDE编程,借助U8g2库,将图像数据实时显示到OLED屏幕中。

ESP8266WIFI连网播放视频

1 ESP8266端视频帧接收与播放程序

ESP8266作为socket客户端,接收服务端发送的图像帧数据,进行显示。

ESP8266使用Arduino IDE环境进行开发。

1.1 WIFI初始化与服务器连接

#define IP "192.168.5.100"
#define PORT 8080

void initWiFi()
{
  Serial.print("Connecting WiFi...");
  WiFi.mode(WIFI_STA); //配置WIFI为Station模式
  WiFi.begin(ssid, pass); //传入WIFI热点的ssid和密码
  while (WiFi.status() != WL_CONNECTED) //等待连接成功
  {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP()); //打印自己的IP地址

  client.connect(IP, PORT);
}

1.2 视频显示主循环

uint8_t testb[1024] = {};

void loop()
{
  //Serial.println("hello esp8266");
  delay(10);
  while (client.available())
  {
    delay(12);
    client.read(testb, 1024);
    u8g2.firstPage();
    do {
      u8g2.drawXBM(0, 0, 128, 64, testb);
    } while (u8g2.nextPage());
  }
}

2电脑端视频编码发送程序

电脑端作为socket服务器端,将视频帧数据发送出去。

电脑端采用Python3编程,借助OpenCV实现视频的读取与图像数据格式转换。

ESP8266WIFI连网播放视频

2.1 主程序

程序的基本思想是:

  • 利用OpenCV读取视频文件
  • 对视频帧的图像,进行尺寸修改
  • 对图像进行二值化处理
  • 将二值图像转换为数组
  • 将数组通过socket发送出去
video_path="badapple_320240_xvid.mp4"
    
def PlayVideo(video_path, client):
    endian          = 'L'
    color_reverse   = 'false'
    
    c = 0#累计帧数
    timeF = 8#隔x帧截一次图
    
    video = cv2.VideoCapture(video_path) #打开视频
    player = MediaPlayer(video_path) #打开音频
    while True:
        grabbed, frame= video.read()
        audio_frame, val = player.get_frame()
        if not grabbed:
            print("End of video")
            break
        if cv2.waitKey(28) & 0xFF == ord("q"):
            break
        cv2.imshow("Video", frame)
        if val != 'eof' and audio_frame is not None:
            img, t = audio_frame

        if (c % timeF == 0):  # 每隔timeF帧进行存储操作
            frame = cv2.resize(frame,(128,64))#调整尺寸
            frame = binary_image(frame)#二值化
            matrix = img_to_matrix(frame, endian, color_reverse)
            data = bytes(matrix)
            client.send(data)

        c = c + 1
        #time.sleep(0.2)
        #cv2.waitKey(1)
            
    video.release()
    cv2.destroyAllWindows()

###############
client = 0
client = socket_start()
PlayVideo(video_path, client)

2.2 图像转为数组

利用OpenCV,将图像转为黑白图像:

def binary_image(image):#将图像处理为二值化的程序
    gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)  #把输入图像灰度化
    h, w =gray.shape[:2]
    m = np.reshape(gray, [1,w*h])
    mean = m.sum()/(w*h)
    ret, binary =  cv2.threshold(gray, mean, 255, cv2.THRESH_OTSU)
    return binary

然后再转为数组:

def img_to_matrix(frame, endian, color_reverse):
    width = frame.shape[1] #128
    height = frame.shape[0] #64

    if endian == 'B':
        byte_reverse = True
    else:
        byte_reverse = False

    if color_reverse == 'true':
        color_reverse = True
    else:
        color_reverse = False

    unalign = 0
    matrix = list()
    
    if (width%8) != 0:
        unalign = 1
    for i in range(0, height): #64
        for j in range(0, (width//8)+unalign): #128/8=16
            v = 0x00
            rs = 8*j      
            re = 8*(j+1)  
            if re > width:
                re = width
            for k in range(rs, re):
                if frame[i, k] != 0:
                    if not byte_reverse:
                        v |= (0x01 << (k%8))
                    else:
                        v |= (0x01 << (7-(k%8)))
            if color_reverse:
                v ^= 0xff
            matrix.append(v)

    return matrix

2.3 开启socket服务

def socket_start():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    host = socket.gethostbyname(socket.gethostname())
    port = 8080

    host = '192.168.5.100'
    print(host)
    print(port)
    s.bind((host,port))
    s.listen(5)

    print('等待客户端连接中…')

    client,client_address = s.accept()
    print('新连接')
    client_IP = str(client_address[0])
    print('IP:'+client_IP)
    client_port = str(client_address[1])
    print('Port:' + client_port)

    return client

3 测试效果

ESP8266+OLED播放视频BadApple

4 总结

本篇介绍ESP8266在OLED上播放视频,包括ESP8266端的图像接收与显示程序,与电脑端的Python读取视频并进行编码与数据发送程序。文章来源地址https://www.toymoban.com/news/detail-413523.html

到了这里,关于ESP8266WIFI连网播放视频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • ESP8266 WIFI 模块和手机通信

    ESP8266 WIFI 模块和手机通信

    随着物联网智能化的不断发展,越来越多人选择了无线通信设备,比如WiFi、蓝牙、Lora、zigbee、2G/4G模块等物联网无线通信模块,从而可以更好地达到无线控制目的。 1.这款调试助手支持的功能比较齐全,可以自行到手机应用市场下载。 2.串口调试助手用的是正点原子提供的

    2024年02月06日
    浏览(17)
  • STM32-ESP8266WIFI定位

    STM32-ESP8266WIFI定位

    最近想用stm32+esp8266做一个仅通过WIFI来定位的小硬件,但找了很多家,比如高德、百度这些都没有面向个人开发者的硬件网络定位接口,但兜兜转转还是找到了一家做物联网定位的叫 维智科技 ,他们的物联网定位平台是这个https://lotboard.newayz.com/,个人开发者注册的话配额还

    2024年02月02日
    浏览(12)
  • STM32---WIFI模块ESP8266

    STM32---WIFI模块ESP8266

    模块连接时基于串口方式连接,其模块与电脑(服务器)之间数据的发送与接收也是基于串口。 mode=1 :Station模式(连接到WIFI) mode=2:AP模式(自己作为WIFI源供其他连接) mode=3:AP+Station模式(以上两者模式的合并) 透传模式就是单片机通过串口形式与模块连接,而模块与上位

    2024年02月03日
    浏览(18)
  • 实验四:ESP8266WIFI通讯实验

    实验四:ESP8266WIFI通讯实验

    本实验开发板基于:GD32F103 我们首先需要看一下原理图 根据原理图可以看到,ESP8266是通过PA2 PA3这个串口进行通讯,PA13是控制它的复位, 从芯片手册中可以看到PA2PA3是串口1,PA2是串口1的发送,PA3是串口1的接收。 本项目使用ESP8266型号为ESP-01S 自带排针WIFI模块 功能特点:基

    2024年02月03日
    浏览(5)
  • STM32-连接wifi模块(esp8266)

    STM32-连接wifi模块(esp8266)

    目录 1. ESP8266模块介绍 1.1. 系统结构图 1.2. 功能介绍  1.3. AT指令说明  2. STM32连接ESP8266 3. ESP8266示例 3.1. ESP8266透传模式  3.2. ESP8266上传数据例程 乐鑫智能互联平台——ESP8266 拥有高性能无线 SOC,是一个完整且自成体系的 WiFi 网络解决方案,能够独立运行,也可以作为 slave 搭

    2024年01月16日
    浏览(27)
  • 物联网智能网关(ESP8266WIFI模块)

    物联网智能网关(ESP8266WIFI模块)

    一、温湿度和光敏数据采集。要求:采集ESP8266平台中温湿度传感器与光敏电阻的数据并传输至网页端显示。 (1)分别对应温湿度传感器及光敏传感器的功能绘制或展示硬件连接原理图并简单说明。   光敏电路:光敏电路,实现感光效果   温湿度(DHT11)电路:测量温湿度

    2023年04月22日
    浏览(23)
  • STM32外设系列—ESP8266(WIFI)

    STM32外设系列—ESP8266(WIFI)

    🎀 文章作者:二土电子 🌸 关注文末公众号获取其他资料和工程文件! 🐸 期待大家一起学习交流! ESP8266是嵌入式和物联网开发中常用的模块,它可以单独作为MCU使用,也可以作为一个简单的WIFI模块。ESP8266可以利用串口与单片机进行通讯。利用ESP8266可以访问一些API,获取

    2024年02月16日
    浏览(15)
  • (1)(1.3) ESP8266 wifi telemetry

    (1)(1.3) ESP8266 wifi telemetry

    文章目录 前言 1 在哪里购买 2 连接到自动驾驶仪 3 从地面站连接 4 用MAVESP8266固件烧录设备 5 更改Wifi SSID和密码 ESP8266 wifi 模块是一种廉价的可编程 wifi 模块,可从多种渠道获得。大多数 Pixracers 也随附了这种模块。 推荐使用 adafruit HUZZAH ESP8266 分线板( adafruit HUZZAH ESP8266 break

    2024年02月05日
    浏览(6)
  • esp8266WIFI模块教程:ATK-ESP8266——TCP网络通讯和服务器连接

    esp8266WIFI模块教程:ATK-ESP8266——TCP网络通讯和服务器连接

      ATK-MW8266D 模块是正点原子推出的一款高性能 UART-WIFI(串口-无线)模块,ATK-MW8266D 模块板载了正点原子公司自主研发的 ATK-ESP-01 模块,该模块通过 FCC、CE 认证,可直接用于出口欧美地区的产品。   ATK-MW8266D 模块采用串口(LVTTL)与 MCU(或其他串口设备)通讯,且内置

    2024年04月15日
    浏览(45)
  • <ESP8266>WIFI模块AT指令浅学

    <ESP8266>WIFI模块AT指令浅学

    人生如逆旅,我亦是行人。 缩写 意思 AT(automatic transmission) 自动变速器 WiFi 无线网 AP(Access Point) 无线访问接入点,无线路由器等类设备的统称 AP 模式 无线接入点模式 RST(TCP协议的 6 个标志之一) 表示重置连接、复位连接 TCP 传输控制协议 UDP 用户数据报协议 SSL 安全套

    2024年02月04日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包