python实现视频的实时传送_基于python实现高速视频传输程序
今天要说的是一个高速视频流的采集和传输的问题,我不是研究这一块的,没有使用什么算法,仅仅是兴趣导致我很想搞懂这个问题.
1,首先是视频数据[摄像头图像]的采集,通常可以使用vfw在vc或者vb下实现,这个库我用的不好,所以一直不怎么会用.现在我们用到的是python的videocapture库,这个库用起来很简单,如下:
from VideoCapture import Device
cam = Device()
cam.setResolution(320,240) #设置显示分辨率
cam.saveSnapshot('demo.jpg') #抓取并保存图片
这样,你就得到了一张图片.
当然,要实现比较高速的采集,每次都要保存图片是不大可能的,这样弄下来每次采集一张图片已经接近1秒钟,这个速度我们是无法忍受的.
更好的解决方式是直接这样: im = cam.getImage(),返回的是一个Image对象,是一个内存块,对它操作就快速多了.
2,如何传输图片?我不知道pplive这种视频是怎么传输的,我的想法很简单,每次传送一幅图片.
在本程序中,每次传送的RGB图像的大小为 160*120.这样,需要的数据量为:
d = 160*120*3 = 56.25 kB
我选择80000B.
下面是发送端代码:
import socket
import Image
from VideoCapture import Device
cam = Device()
cam.setResolution(320,240)
clisocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while 1:
im = cam.getImage()
im = im.resize((160,120))
da = im.tostring()
clisocket.sendto(da, ("127.0.0.1", 1234))
s.close()
3,如何实时显示图片?
我使用了pygame作为实时图像显示界面,因为pygame是经过优化的高速图形库,不知道有没有使用directshow,我想应该用了吧..
下面是接收端代码:
import socket
import Image
import os,sys,pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((160,120))
pygame.display.set_caption("web cam")
pygame.display.flip()
svrsocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
svrsocket.bind(("127.0.0.1", 1234))
clock = pygame.time.Clock() #计算帧速
while 1:
data, address = svrsocket.recvfrom(80000)
camshot = pygame.image.frombuffer(data, (160,120), "RGB")
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
screen.blit(camshot, (0,0))
pygame.display.update()
print clock.get_fps() #在终端打印帧速
clock.tick()
程序终于完成了,测试一下效果怎么样把,为了方便,我把客户端和服务端都设成了本机,端口为1234.
运行程序,哇,简直不可思议,最高竟然达到230fps!(右边的终端)
总结
以上所述是小编给大家介绍的基于python实现高速视频传输程序,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
python实现视频的实时传送_基于python实现高速视频传输程序相关推荐
- python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现
从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言+SNMP协议的网络交换机监测系统设计思路与实现方法.整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现.后端采 ...
- python音频实时频谱分析_基于python的音频设计及频谱分析
74 Internet Technology 互联网 + 技术 一.引言 WAV 是 Microsoft 开发的一种声音文件格式,虽然它支持多种压缩格式,但是它通常被用来保存未压缩的声音数据(PCM ...
- python中numpy数组的合并_基于Python中numpy数组的合并实例讲解
基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...
- python版植物大战僵尸源码_基于python的植物大战僵尸游戏设计与实现.docx
湖南理工学院毕业设计(论文) PAGE PAGE 1 学 号 毕业设计(论文) 题目:基于python的植物大战僵尸游戏设计与实现 作 者 届 别 届 院 别 信息与通信工程学院 专 业 信息工程 指 ...
- python写安卓app控制蓝牙_基于python实现蓝牙通信代码实例
这篇文章主要介绍了基于python实现蓝牙通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 安装和示例 linux下安装 sudo apt ...
- 基于python的公众号课堂教学_基于Python的微信公众号数据挖掘分析
基于Python的微信公众号数据挖掘分析 华南农业大学电子工程学院 王 建 黄宁香 [期刊名称]电子世界 [年(卷),期]2019(000)011 [总页数]3 运用Python网络爬虫技术对某时事类 ...
- 用python写脚本筛选原创微博_基于python编写的微博应用
本文实例讲述了基于python编写的微博应用,分享给大家供大家参考.具体如下: 在编写自己的微博应用之前,先要到weibo开放平台申请应用的公钥和私钥. 下载python版的SDK,打开example ...
- python中sample是什么意思_基于Python中random.sample()的替代方案
python中random.sample()方法可以随机地从指定列表中提取出N个不同的元素,但在实践中发现,当N的值比较大的时候,该方法执行速度很慢,如: numpy random模块中的choice ...
- python扫雷的代码及原理_基于Python实现的扫雷游戏实例代码
摘要:这篇Python开发技术栏目下的"基于Python实现的扫雷游戏实例代码",介绍的技术点是"Python实现.Python.实例代码.扫雷游戏.扫雷.游戏" ...
- python的图书管理项目教程_基于python图书馆管理系统设计实例详解
写完这个项目后,导师说这个你完全可以当作毕业项目使用了,写的很全,很多的都设计考虑周全,但我的脚步绝不止于现在,我想要的是星辰大海!与君共勉! 这个项目不是我的作业, 只是无意中被拉进来了,然后就承担 ...
最新文章
- unity3d 调用Start 注意
- deep learning with python 中文版-Deep Learning with Python
- linux系统的学习经验首篇
- mysql将一个字段的值根据逗号拆分_mysql中要根据某个逗号分割的字符串关联查询另一张表的数据...
- 跟着别人的感觉做网络推广之二
- [OI学习笔记]最小生成树之Prim算法
- sql2018 ssas_如何使用SQL Server Analysis Services(SSAS)从头开始构建多维数据集
- 和 Apple “较上劲”了?Google 解决 Cookie 隐私问题上拒绝“一刀切”
- Windows设置共享文件夹,ubuntu访问
- [转]windows 2003 开启远程桌面
- hdu 1213 “How Many Tables”(并查集基本到优化)
- 【Audio】WAV音频文件格式结构解析
- matlab绘制图形hold on_Matlab绘图示例
- ubuntu 下载 迅雷
- Matches UVA - 11375 递推+大数 Ingenuous Cubrency UVA - 11137 递推
- GitOps | 一种云原生的持续交付模型
- html网页怎么自动返回,返回首页html代码?打开某个特定网页时,网页总是自动跳回主页,是怎?...
- 精确算法、启发式算法、元启发式算法及增长方式浅析
- 网易云播放失败,请在设置中切换输出设备 解决方案
- 【C++】斐波那契凤尾