欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于python實(shí)現(xiàn)高速視頻傳輸程序

 更新時(shí)間:2019年05月05日 11:31:44   作者:詹姆斯  
這篇文章主要介紹了基于python實(shí)現(xiàn)高速視頻傳輸程序的實(shí)例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

今天要說的是一個(gè)高速視頻流的采集和傳輸?shù)膯栴},我不是研究這一塊的,沒有使用什么算法,僅僅是興趣導(dǎo)致我很想搞懂這個(gè)問題.

    1,首先是視頻數(shù)據(jù)[攝像頭圖像]的采集,通??梢允褂胿fw在vc或者vb下實(shí)現(xiàn),這個(gè)庫(kù)我用的不好,所以一直不怎么會(huì)用.現(xiàn)在我們用到的是python的videocapture庫(kù),這個(gè)庫(kù)用起來很簡(jiǎn)單,如下:

from VideoCapture import Device
cam = Device()
cam.setResolution(320,240)  #設(shè)置顯示分辨率
cam.saveSnapshot('demo.jpg') #抓取并保存圖片

  這樣,你就得到了一張圖片.

    當(dāng)然,要實(shí)現(xiàn)比較高速的采集,每次都要保存圖片是不大可能的,這樣弄下來每次采集一張圖片已經(jīng)接近1秒鐘,這個(gè)速度我們是無法忍受的.

更好的解決方式是直接這樣: im = cam.getImage(),返回的是一個(gè)Image對(duì)象,是一個(gè)內(nèi)存塊,對(duì)它操作就快速多了.

    2,如何傳輸圖片?我不知道pplive這種視頻是怎么傳輸?shù)?我的想法很簡(jiǎn)單,每次傳送一幅圖片.

在本程序中,每次傳送的RGB圖像的大小為 160*120.這樣,需要的數(shù)據(jù)量為:

       d = 160*120*3 = 56.25 kB

    我選擇80000B.

    下面是發(fā)送端代碼:

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,如何實(shí)時(shí)顯示圖片?

    我使用了pygame作為實(shí)時(shí)圖像顯示界面,因?yàn)閜ygame是經(jīng)過優(yōu)化的高速圖形庫(kù),不知道有沒有使用directshow,我想應(yīng)該用了吧..

    關(guān)于pygame請(qǐng)參考 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()  #計(jì)算幀速
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()

    程序終于完成了,測(cè)試一下效果怎么樣把,為了方便,我把客戶端和服務(wù)端都設(shè)成了本機(jī),端口為1234.

    運(yùn)行程序,哇,簡(jiǎn)直不可思議,最高竟然達(dá)到230fps!(右邊的終端)

總結(jié)

以上所述是小編給大家介紹的基于python實(shí)現(xiàn)高速視頻傳輸程序,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

最新評(píng)論