基于python实现高速视频传输程序


Posted in Python onMay 05, 2019

今天要说的是一个高速视频流的采集和传输的问题,我不是研究这一块的,没有使用什么算法,仅仅是兴趣导致我很想搞懂这个问题.

    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,我想应该用了吧..

    关于pygame请参考 www.pygame.org

    下面是接收端代码:   

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使用ctypes模块调用windowsapi获取系统版本示例
Apr 17 Python
深入理解Python 代码优化详解
Oct 27 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
Apr 28 Python
Python开发的实用计算器完整实例
May 10 Python
python中matplotlib的颜色及线条控制的示例
Mar 16 Python
flask入门之表单的实现
Jul 18 Python
python爬取酷狗音乐排行榜
Feb 20 Python
python selenium 弹出框处理的实现
Feb 26 Python
详解python selenium 爬取网易云音乐歌单名
Mar 28 Python
python pygame实现球球大作战
Nov 25 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 Python
Python远程视频监控程序的实例代码
May 05 #Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
May 05 #Python
20行python代码实现人脸识别
May 05 #Python
使用python实现mqtt的发布和订阅
May 05 #Python
Python向excel中写入数据的方法
May 05 #Python
python使用pandas处理大数据节省内存技巧(推荐)
May 05 #Python
python使用MQTT给硬件传输图片的实现方法
May 05 #Python
You might like
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
ECMAScript 基础知识
2007/06/29 Javascript
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
2017/03/08 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
Python中字符串的常见操作技巧总结
2016/07/28 Python
python对json的相关操作实例详解
2017/01/04 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
PythonPC客户端自动化实现原理(pywinauto)
2020/05/28 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
爱普生美国官网:Epson美国
2018/11/05 全球购物
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
作文评语大全
2014/04/23 职场文书
教师节演讲稿
2014/05/06 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
先进工作者事迹材料
2014/12/23 职场文书
婚庆答谢词
2015/01/04 职场文书
母亲去世追悼词
2015/06/23 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
mysql insert 存在即不插入语法说明
2022/03/25 MySQL