返回顶部
首页 > 资讯 > 后端开发 > Python >python实现不同电脑之间视频传输功能
  • 543
分享到

python实现不同电脑之间视频传输功能

2024-04-02 19:04:59 543人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

1. imageZMQ库实现 imageZMQ库链接:https://GitHub.com/jeffbass/imagezmq 该库原本是用于树莓派上的视频传输,其包含很多示例,有兴

1. imageZMQ库实现

imageZMQ库链接:https://GitHub.com/jeffbass/imagezmq
该库原本是用于树莓派上的视频传输,其包含很多示例,有兴趣可以去看看。

在这里插入图片描述

上图中间的笔记本为发送端,其余两个屏幕显示的是接收端视频。本文视频传输实现的前提是确保发送端和接收端接在同一个局域网下。

发送端


import Socket
import time
import cv2
import imagezmq
import traceback
import simplejpeg

# capture=cv2.VideoCapture(0) # 获取摄像头视频
capture=cv2.VideoCapture(r"D:\project\dataset\video\测试.mp4")
# 192.168.100.104 为发送端主机ip地址
sender = imagezmq.ImageSender(connect_to='tcp://192.168.100.104:5555', REQ_REP=False)
rpi_name = socket.gethostname() # 获取主机名
time.sleep(2.0)  
jpeg_quality = 95   #调整图片压缩质量,95%
while(True):
    try:
        ref, frame=capture.read(0)
        time.sleep(1/60)
        image = cv2.resize(frame,(1280,720))
        curtime = time.time()
        msg = rpi_name+'*'+str(curtime)
        # 通过simplejpeg函数将图片编码为jpeg格式,提高传输效率
        jpg_buffer = simplejpeg.encode_jpeg(image, quality=jpeg_quality,
                                            colorspace='BGR')
        sender.send_jpg(msg, jpg_buffer)
        cv2.imshow(rpi_name, image)
        cv2.waiTKEy(1)
    except:
        print(traceback.print_exc())
        break

接收端(可以多台设备同时接收)


import cv2
import imagezmq
import traceback
import time
import simplejpeg

# 接收发送端数据,输入发送端的ip地址
image_hub = imagezmq.ImageHub(open_port='tcp://192.168.100.104:5555',REQ_REP=False)
frame_count = 1
time1 = 0
while True:
    try:
        time1 = time.time() if frame_count == 1 else time1
        name, image = image_hub.recv_jpg()
        # 解码
        image = simplejpeg.decode_jpeg(image, colorspace='BGR')
        cv2.imshow(name.split('*')[0], image)
        cv2.waitKey(1)
        time2 = time.time()
        print(image.shape[:2], int(frame_count/(time2-time1)))
        frame_count += 1
    except:
        print(traceback.fORMat_exc())
        break

2. TCP协议实现

在这里插入图片描述
发送端


import socket
import cv2

import sys
import numpy as np
address = ('192.168.100.104', 5005)  # 服务端地址和端口
ser = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ser.bind(address)
ser.listen(5)
# 阻塞式
print('waiting。。。')
conn, addr = ser.accept()
print('建立连接...')
print('连接对象:', addr)
cap = cv2.VideoCapture(r"D:\project\dataset\video\测试.mp4")
# cap = cv2.VideoCapture(0)
frames_num=cap.get(7)
print('视频总帧数:',frames_num)
print('发送目标...')
count = 0
while cap.isOpened():
    try:
        data = conn.recv(1024)
        data = data.decode()
        if not data:
            break
        ret, frame = cap.read()
        frame = cv2.resize(frame,(1280,720))
        cv2.imshow('send', frame)
        cv2.waitKey(1)
        count += 1
        # 数据打包有很多方式,也可以用JSON打包
        img_encode = cv2.imencode('.jpg', frame)[1]

        data_encode = np.array(img_encode)
        str_encode = data_encode.tostring()

        conn.sendall(str_encode)
    except KeyboardInterrupt:
        print('KeyboardInterrupt')
        sys.exit(0)

接收端


import socket
import sys
import cv2
import numpy as np
import time
address = ('192.168.100.104', 5005)  # 服务端地址和端口
cli = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    cli.connect(address)  # 尝试连接服务端
except Exception:
    print('[!] Server not found or not open')
    sys.exit()

frame_count = 1
while True:
    time1 = time.time() if frame_count == 1 else time1
    trigger = 'ok'
    cli.sendall(trigger.encode())
    data = cli.recv(1024*1024*20)
    image = np.frombuffer(data, np.uint8)
    image = cv2.imdecode(image,cv2.IMREAD_COLOR)
    cv2.imshow('video',image)
    cv2.waitKey(1)
    end_time = time.time()
    time2 = time.time()
    print(image.shape[:2], int(frame_count / (time2 - time1)))
    frame_count += 1
cli.close()

到此这篇关于python实现不同电脑之间视频传输的文章就介绍到这了,更多相关Python视频传输内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python实现不同电脑之间视频传输功能

本文链接: https://lsjlt.com/news/129036.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python实现不同电脑之间视频传输功能
    1. imageZMQ库实现 imageZMQ库链接:https://github.com/jeffbass/imagezmq 该库原本是用于树莓派上的视频传输,其包含很多示例,有兴...
    99+
    2024-04-02
  • vue实现视频上传功能
    本文实例为大家分享了vue实现视频上传功能的具体代码,供大家参考,具体内容如下 环境:vue + TS 上传视频 + 上传到阿里云 主要处理前端在vue下上传视频 使用的是阿里云的视...
    99+
    2024-04-02
  • Vue+ElementUI实现视频上传功能
    一、前言 项目中需要提供一个视频介绍,使用户能够快速、方便的了解如何使用产品以及注意事项。 前台使用Vue+Element UI中的el-upload组件实现视频上传及进度条展示,后...
    99+
    2024-04-02
  • Python实现视频下载功能
    最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容。如果有这样一个程序,可以把各大视频网站的热门用户最新发布的视频都下载下来,不仅方便自己观看,还可以将没有版权的视频发布在个人社交网站上,增...
    99+
    2022-06-04
    视频下载 功能 Python
  • Springboot实现视频上传及压缩功能
    目录一、定义视频上传请求接口二、视频暂存至本地文件夹三、开始压缩视频四、上传至阿里云并获取压缩后的视频路径五、核心调用六、spring boot的yml配置文件  在SpringBo...
    99+
    2023-03-03
    Springboot视频上传压缩 Springboot视频上传 Springboot上传压缩
  • SimpleCommand实现上传文件或视频功能(四)
    上传文件的核心功能主要是在UploadCommand.java中实现使用步骤:1 创建UploadCommand的构建类BuilderUploadCommand.Builder builder = new UploadCommand.Bui...
    99+
    2023-05-30
    simplecommand 上传 %d
  • 微信小程序实现上传视频功能
    本文实例为大家分享了微信小程序上传视频,供大家参考,具体内容如下 微信开发者工具需要安装ffmpeg环境才能正常使用下面的官方方法。 1、调用官方提供的方法(wx.chooseMed...
    99+
    2024-04-02
  • Python实现多个视频合成一个视频的功能
    目录前言环境依赖代码验证一下前言 本文提供将多个视频拼接为一个视频的Python工具代码,其中有一些限制条件,下面的代码说明会提到。 环境依赖 ffmpeg环境安装,可以参考:win...
    99+
    2024-04-02
  • Python使用UDP实现720p视频传输的操作
    1. 项目背景 视频传输: 在一台电脑上播放视频(捕捉摄像头画面),同局域网内另一台电脑上实时播放,尽量不卡顿。 先放最后的照片,和用gif展示一下视频效果。 传输视频可以采取图...
    99+
    2024-04-02
  • Python实现获取视频时长功能
    目录前言环境依赖代码验证一下补充前言 本文提供获取视频时长的python代码,精确到毫秒,一如既往的实用主义。 环境依赖  ffmpeg环境安装,可以参考:windows ffmpe...
    99+
    2024-04-02
  • Qt音视频开发之视频文件保存功能的实现
    目录一、前言二、效果图三、体验地址四、相关代码五、功能特点5.1 基础功能5.2 特色功能5.3 视频控件5.4 内核ffmpeg一、前言 和音频存储类似,视频的存储也对应三种格式,...
    99+
    2022-12-08
    Qt视频文件保存 Qt视频保存 Qt 文件保存
  • Springboot如何实现视频上传及压缩功能
    这篇“Springboot如何实现视频上传及压缩功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Springboot如何实...
    99+
    2023-07-05
  • Thinkphp5实现图片、音频和视频文件的上传功能
    本篇文章为大家展示了Thinkphp5实现图片、音频和视频文件的上传功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先是同步上传,最为基础的上传的方式,点击表单提交之后跳转那种。<!DOC...
    99+
    2023-06-15
  • Python实现Youku视频批量下载功能
    前段时间由于收集视频数据的需要,自己捣鼓了一个YouKu视频批量下载的程序。东西虽然简单,但还挺实用的,拿出来分享给大家。   版本:Python2.7+BeautifulSoup3.2.1 impor...
    99+
    2022-06-04
    批量 功能 视频
  • JavaScript中如何使用webuploader实现上传视频功能
    这篇文章主要为大家展示了“JavaScript中如何使用webuploader实现上传视频功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript...
    99+
    2024-04-02
  • JavaScript如何实现上传文件,图片,视频功能
    这篇文章给大家分享的是有关JavaScript如何实现上传文件,图片,视频功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体代码如下所示:// 上传目标触发点&nb...
    99+
    2024-04-02
  • 使用vue怎么实现一个视频上传功能
    本篇文章为大家展示了使用vue怎么实现一个视频上传功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Vue的优点Vue具体轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运...
    99+
    2023-06-14
  • python如何实现不同数据库间数据同步功能
    这篇文章主要为大家展示了python如何实现不同数据库间数据同步功能,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“python如何实现不同数据库间数据同步功能”这篇文章吧。python是什么意思P...
    99+
    2023-06-06
  • Python使用UDP实现720p视频传输的操作方法
    小编给大家分享一下Python使用UDP实现720p视频传输的操作方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Python的优点有哪些1、简单易用,与C/C...
    99+
    2023-06-14
  • C#实现不同窗体之间传递参数
    目录C#不同窗体之间传递参数1.父窗口向子窗口传递参数2.子窗口向父窗口传递参数3.代码说明C#子窗体与父窗体之间的参数传输1.子窗体传父窗体2.父窗体传子窗体总结C#不同窗体之间传...
    99+
    2023-02-26
    C#传递参数 C#不同窗体 C#窗体传递参数
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作