python 通过socket通讯实现实时摄像头视频传输
话不多说,直接上代码:
这是服务端代码:
import socket
import cv2
import numpy as npsk = socket.socket()
# sk.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 确保下次启动是端口保留
sk.bind(('10.40.129.105', 1)) # 这里也是写本服务机的ip,端口随便写
sk.listen(5)
conn, address = sk.accept()while True:try:data = conn.recv(88888) # 88888为接受的最大字节数(默认分辨率情况下图片也就3、4万字节)nparr = np.fromstring(data, dtype='uint8', sep='') # 化为数组img = cv2.imdecode(nparr, cv2.IMREAD_COLOR) # 解码为彩色图cv2.imshow('dabo', img)if cv2.waitKey(1) >= 0: # 每1秒呈现一帧图片,按键盘任何键结束breakexcept Exception as e: # 打印出特定错误(个人习惯)print(e)conn.close()
sk.close()
这是客户端代码:
import socket
import cv2
import numpy as npip_port = ('10.40.129.105', 1) # 这里填服务端的ip,端口要和服务端一致
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建套接字
s.connect(ip_port) # 连接服务器cap = cv2.VideoCapture(0) # 打开摄像头,0为默认摄像头
# cap.set(cv2.CAP_PROP_FRAME_WIDTH, 352) # 设置每帧图片的宽
# cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 288) # 设置每帧图片的高while True:ret, frame = cap.read() # 获取视频的开启状态和每一帧图片img_encode = cv2.imencode('.jpg', frame)[1] # 对每一帧图片进行编码data = np.array(img_encode) # 转化为矩阵byte_encode = data.tobytes() # 编码格式转为字节格式data_len = str(len(byte_encode)) # 获取每一帧图片的大小(字节数)print('每帧图片大小: %s' % data_len)s.send(byte_encode) # 发送给客户端呈现
1、过程理解
通过客户端调用摄像头进行获取每一帧图象,再传输到服务端呈现实时视频。
cap = cv2.VideoCapture(0) # 打开摄像头,0为默认摄像头
# cap.set(cv2.CAP_PROP_FRAME_WIDTH, 352) # 设置每帧图片的宽
# cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 288) # 设置每帧图片的高
这里为什么要设置图片的宽和高呢,主要是默认情况下,我这边显示出的图象内容会发生错误,具体为什么我没有深入研究。现在已经知道了在图片传输过程中,会受网络或传输受损的影响,可以更换网络或者更换编码图片格式(不易受损的格式),如果各位有知道可以在评论区留言。
如果有更好的方法可在评论区告知,这是我第二次学习的结果,第一次socket的学习是C#与python对图片的传输,可参考:https://blog.csdn.net/dabo_520/article/details/129718198?spm=1001.2014.3001.5502
python 通过socket通讯实现实时摄像头视频传输相关推荐
- QOS FEC NACK 实时音视频传输库测试报告(声网、腾讯实时音视频测试)
目录 QOS-FEC-NACK传输库简介 实验环境 测试DEMO说明 测试项说明 测试结果 竞品分析 总结 QOS FE ...
- 计算机视觉——利用openCV与Socket结合进行远程摄像头实时视频传输并保存图片数据
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.TCP协议通信步骤 二.代码实现 1.客户端 2.服务端 三.IP设置方法 四.效果演示 前言 本文的内容是利用o ...
- IoT 设备高质量的实时音视频传输解决方案
12月10日,实时互动云服务开创者及引领者声网Agora在北京举办了媒体沟通会,发布了首款定义轻互动直播场景的"极速直播"与可降低50%直播带宽成本的"低码高清" ...
- Android设备实时音视频传输有效方案
/ 今日科技快讯 / 6月2日晚上8点,鸿蒙线上发布会在万众瞩目中准时开始.华为正式发布了HarmonyOS 2(以下简称鸿蒙系统),以及多款新的硬件产品,包括HUAWEI Mate 40系列 ...
- RTSP实时音视频传输介绍
<RTP协议封装H264/H265/AAC> <rtsp采用MD5加密摘要认证的交互过程> 目录 一.前言 二.RTSP的信令格式 三.RTSP的通信过程 四.RTSP服务器设 ...
- 移植摄像头视频传输JPEG格式代码学习过程
目录 理解厂家的源代码 ov2640.c文件 DCMI.c文件 SCCB.c文件 main.c文件 总结 理解厂家的源代码 这里我使用的是普中的ov2640模块 ov2640.c文件 返回值:0,成功 ...
- 树莓派+android things+实时音视频传输demo之遥控小车
做了个测试小车,上面安装了摄像头,通过外网进行视频传输: https://www.bilibili.com/video/av23817880/ 转载于:https://www.cnblogs.com/ ...
- 挑战一个人搭建一套完整直播系统4: 实现网络摄像头视频传输
摄像头采购的是海康卫视的网络摄像头: 支持通过rtsp传输视频流,网络摄像头的配置如下: ffmpeg可以直接通过rtsp获取摄像头视频数据并推流到我们之前搭建好的Nginx服务,具体指令如下: ff ...
- Python OpenCV高速公路道路汽车车辆摄像头视频侦测检测识别统计数量
Python OpenCV高速公路道路汽车车辆侦测检测识别统计数量 如需安装运行环境或远程调试,可加QQ905733049由专业技术人员远程协助! 运行结果如下: 运行主要代码如下: import c ...
最新文章
- 基于TestNG 与Selenium 的自动化测试设计与实施
- 用CSS写出一个下拉菜单小箭头
- FreeRTOS 中断优先级嵌套错误引发HardFault异常解决
- java怎么获取文本里的值_怎么获取到text中的文本,或者title中的值
- Linux ps指令
- Zookeeper集群搭建(配置详解)
- [js] axios拦截器原理是什么?
- junit、spring浅析、ssm框架、json格式
- java从入门到精通_Java大数据:数据库开发从入门到精通
- php修改学生信息代码_论导师和学生关于论文写作最大的信息不对称(一):从初稿到定稿到底要修改几遍?...
- 活动目录管理之批量创建域用户
- Android -- Looper.prepare()和Looper.loop() —深入版
- Windows XP下Dynamips模拟器的安装与使用
- 用计算机给plc编程,plc编程用什么电脑?plc编程用什么配置电脑
- HCDA学习笔记(二)
- 2022姓氏头像在线制作小程序源码+头像模块
- 易基因综述:表观遗传学和表观育种在作物品种改良的重要作用(水稻+玉米+番茄+大豆+油菜)
- c++判断某一天是这一年的第几天
- 阿里 P10 是怎样的存在?
- Java面向对象原谅帽