基于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 Mysql数据库操作 Perl操作Mysql数据库
Jan 12 Python
python的三目运算符和not in运算符使用示例
Mar 03 Python
Python入门篇之面向对象
Oct 20 Python
Python基于socket实现简单的即时通讯功能示例
Jan 16 Python
对python3中pathlib库的Path类的使用详解
Oct 14 Python
代码详解django中数据库设置
Jan 28 Python
Python3中函数参数传递方式实例详解
May 05 Python
python操作kafka实践的示例代码
Jun 19 Python
Django ORM 查询管理器源码解析
Aug 05 Python
python实现静态服务器
Sep 05 Python
PyCharm无法引用自身项目解决方式
Feb 12 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 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文件下载类
2006/12/06 PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
第六章 php目录与文件操作
2011/12/30 PHP
JavaScript 基础问答三
2008/12/03 Javascript
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
node.js中的buffer.copy方法使用说明
2014/12/14 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
javascript回调函数详解
2018/02/06 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
python操作xml文件详细介绍
2014/06/09 Python
Python中的高级函数map/reduce使用实例
2015/04/13 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
python中异常报错处理方法汇总
2016/11/20 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
售后服务经理岗位职责
2014/02/25 职场文书
大学同学会活动方案
2014/08/20 职场文书
公民授权委托书范本
2014/09/17 职场文书
车辆年审委托书范本
2014/09/18 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
参加招聘会后的感想
2015/08/10 职场文书
浅谈如何写好演讲稿?
2019/06/12 职场文书
python如何做代码性能分析
2021/04/26 Python
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记