基于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分析git log日志示例
Feb 27 Python
web.py中调用文件夹内模板的方法
Aug 26 Python
Python 多线程抓取图片效率对比
Feb 27 Python
python实现windows倒计时锁屏功能
Jul 30 Python
PYTHON如何读取和写入EXCEL里面的数据
Oct 28 Python
Python Tkinter模块 GUI 可视化实例
Nov 20 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
Python如何实现线程间通信
Jul 30 Python
Python爬虫进阶之爬取某视频并下载的实现
Dec 08 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
Feb 24 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
Python内置类型集合set和frozenset的使用详解
Apr 26 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将数据导入到Foxmail
2006/10/09 PHP
php实现的在线人员函数库
2008/04/09 PHP
yii操作cookie实例简介
2014/07/09 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
php语法检查的方法总结
2019/01/21 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
JavaScript修改浏览器tab标题小技巧
2015/01/06 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
Python性能提升之延迟初始化
2016/12/04 Python
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
Python开发的十个小贴士和技巧及长常犯错误
2018/09/27 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
家长对学生的评语
2014/04/18 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
招商银行收入证明
2015/06/17 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书
Go语言空白表示符_的实例用法
2021/07/04 Golang