1.视频信息的采集
对于摄像头,使用OpenCV打开并获取每一帧的图像,将其封装成字节流进行传输
获取摄像头视频流
cam = cv2.VideoCapture(0) #打开摄像头
while (cam.isOpened()):
ret,frame = cam.read() #获取视频流
这一步没啥好说的,最基本的API调用
对每一帧图像进行处理
将每一帧图像写入内存(与写入文件类似),然后读出为字节用于网络传输.可以想象为先将每一帧图像都保存为文件,再发送文件,不过写入文件太慢,这里直接写入内存
def array_pic_to_stream(pic):
stream = BytesIO()
pic = Image.fromarray(pic)
pic.save(stream, format=“JPEG”)
jepg = stream.getvalue()
stream.close()
return jepg
可以将BytesIO理解为一个保存在内存中的文件,通过写入,写出操作将numpy.array()类型数据转化为二进制文件
对于屏幕,使用Image的截图功能截取每一帧图像,将其封装成字节流
获取视频流
img = ImageGrab.grab()
out = img.resize((612,480))
这里要注意,之所以对图片的大小进行削减是因为UDP传输的包的大小是有限制的,好像是六万五左右,而屏幕分辨率太高,所以 必须缩减
对每一帧图像进行处理
将Image对象转化为数组,在转化为字节流
def pic_to_array(pic):
stram = BytesIO()
pic.save(stram, format=“JPEG”)
array_pic = numpy.array(Image.open(stram))
stram.close()
return array_pic
def array_pic_to_stream(pic):
stream = BytesIO()
pic = Image.fromarray(pic)
pic.save(stream, format=“JPEG”)
jepg = stream.getvalue()
stream.close()
return jepg
2.发送
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新文章来源:https://www.toymoban.com/news/detail-848091.html
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)文章来源地址https://www.toymoban.com/news/detail-848091.html
涵盖了95%以上前端开发知识点,真正体系化!**
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)
到了这里,关于python实现基于UDP的视频直播程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!