slience_me 2021-11-09 18:30 采纳率: 50%
浏览 40

socket通信问题,我的是python服务器socket传输视频流数据,java客户端接收数据,问java怎么实现视频流实时显示

暂时不放代码

socket通信问题,我的是python服务器socket传输视频流数据,java客户端接收数据,问java怎么实现视频流实时显示

# -*- codeing = utf-8 -*-
# @Time : 2021/11/8  8:13
# @Author : slience_me
# @File : demo1.py
# @Software : demo
# - * - coding: utf - 8 -*-
import socket
import threading
import time
import sys
from io import BytesIO
import cv2
from PIL import Image

def socket_service():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 防止socket server重启后端口被占用(socket.error: [Errno 98] Address already in use)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        s.bind(('127.0.0.1', 9000))
        s.listen(10)
    except socket.error as msg:
        print(msg)
        sys.exit(1)
    print('Waiting connection...')

    while 1:
        conn, addr = s.accept()
        t = threading.Thread(target=deal_data, args=(conn, addr))
        t.start()


def deal_data(conn, addr):
    cap = cv2.VideoCapture(0)
    print('Accept new connection from {0}'.format(addr))
    conn.send(('Hi, Welcome to the server!').encode('utf-8'))
    while 1:
        ret, frame = cap.read()
        # cv2.imshow("server", frame)
        print(ret)

        if ret is False:
            print("can not get this frame")
            continue

        # 将opencv下的图像转换为PIL支持的格式
        pi = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))

        buf = BytesIO()  # 缓存对象
        pi.save(buf, format='JPEG')  # 将PIL下的图像压缩成jpeg格式,存入buf中
        jpeg = buf.getvalue()  # 从buf中读出jpeg格式的图像
        buf.close()
        # 上面全是信息编码的,将每一次的信息编码之后通过for循环中send发送出去
        # print(jpeg)
        conn.send(jpeg)  # 通过socket传到服务器

        # data = conn.recv(1024)
        # print('{0} client send data is {1}'.format(addr, data.decode()))
        time.sleep(1)
        # if data == 'exit' or not data:
        #     print('{0} connection close'.format(addr))
        #     conn.send(bytes('Connection closed!'), 'UTF-8')
        #     break
        # result = Syntax_analysis(data)
        # conn.send((str(data)).encode('utf-8'))  # TypeError: a bytes-like object is required, not 'str'
    conn.close()
    cap.release()

if __name__ == '__main__':

    socket_service()

    cv2.destroyAllWindows()
  • 写回答

1条回答 默认 最新

  • 「已注销」 2021-11-09 21:18
    关注

    />

    android:id="@+id/custom_list_item_url"

    android:layout_width="match_parent"

    android:layout_height="30dp"

    android:text="视频源链接"

    />

    custom_list_foot.xml

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

    android:layout_width="match_parent"

    android:layout_height="30dp"

    android:text="点击此处添加视频源"

    android:textSize="25sp"

    />

    评论

报告相同问题?

问题事件

  • 创建了问题 11月9日

悬赏问题

  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题