编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

为了方便跟学姐时刻视频,于是用Python做了个局域网视频工具!

wxchong 2024-10-12 12:24:42 开源技术 15 ℃ 0 评论

作为一个技术宅,还得天天跟学姐视频,又不想花流量,于是机智的我用Python做了个局域网视频工具,美滋滋!

  • 本实验实现简易的视频通信工具
  • 在视频通信的基础上加入语音
  • 用户可以选择通信的质量,即画质、停顿等参数
  • 支持IPv6

首先要搭建好环境

通过以下命令可下载项目源码,作为参照对比完成下面详细步骤的学习。

这一步下载了我们需要的opencv-python和numpy两个包。

原理:本次实现了简易的视频通信工具,基于 OpenCV 和 PyAudio,使用 TCP 协议通信,通信双方建立双向 CS 连接,双方均维护一个客户端和一个服务器端。在捕获视频信息后,根据用户指定的参数对画面做压缩并传输。

1、实现双向 C/S 连接

新建文件 vchat.py ,在其中定义基础的两个类如下:

2、实现摄像头数据流捕获

3、发送捕获到的数据到服务器

已经捕获到数据,接下来要发送字节流。

下面编写 Server ,在服务器端连接成功后,应当创建一个窗口用于显示接收到的视频。

同时我们为窗口创建一个键盘响应,当按下 Esc 或 q 键时退出程序。

4、视频缩放和数据压缩

现在的服务器和客户端已经可以运行

此外,我们在发送每一帧的数据前使用 zlib.compress 对其压缩,尽量降低带宽负担。

服务器端最终代码如下,增加了对接收到数据的解压缩处理。

5、加入音频的捕获和传输

在完成视频通信的基础上,整体框架对于音频通信可以直接挪用

如果你对代码中使用到的 PyAudio 提供的库函数有所疑问,可以在这里找到相关的入门文档及示例。

至此我们完成了 vchat.py 的编写。

6 、编写程序入口 main.py

为了提供用户参数解析,代码使用了 argparse 。

7、运行情况

因为环境没有提供摄像头,因此我们需要修改一下代码

好了,今天的就到这结束了,大家赶紧找女神去实验一下吧!初学Python或者正在学习Python的小伙伴可以私信我发送资料二字,领取最新的Python学习资料视频等等!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表