没有网就不能和女朋友开视频了?有Python在!没网照样开视频!

一日不见,可谓是如隔三秋!在学校,晚上十二点就会断网了!经常用流量又伤不起,毕竟一晚上可以和女票聊好久!所以就琢磨着弄个不用网也能视频聊天的东西来,经过小编半个月的研究!终于给弄出来了,总不能每天隔着窗子对着对面楼层喊吧!好了,下面就是干货。小编的私生活还是不能给大家透露太多!

没有网就不能和女朋友开视频了?有Python在!没网照样开视频!

3. 实验知识点

本课程项目完成过程中将学习:

  • Python 基于 OpenCV 对摄像头信息的捕获和压缩
  • Python 关于 线程 和 socket 通信的一些基础技巧
  • Python 基于 PyAudio 对语音信息的捕获和压缩

其中将重点介绍 socket 传输过程中对数据的压缩和处理。

没有网就不能和女朋友开视频了?有Python在!没网照样开视频!

现在,我们的实验环境就搭好了。

三、实验原理

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

没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
没有网就不能和女朋友开视频了?有Python在!没网照样开视频!

4.2 实现摄像头数据流捕获

OpenCV 为 Python 提供的接口非常简单并且易于理解。捕获视频流的任务应当由 Client 类完成,下面完善 Client 的 run 函数。在下面的代码中,我们为类添加了一个成员变量 cap ,它用来捕获默认摄像头的输出。

没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
没有网就不能和女朋友开视频了?有Python在!没网照样开视频!

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

没有网就不能和女朋友开视频了?有Python在!没网照样开视频!

4.5 加入音频的捕获和传输

在完成视频通信的基础上,整体框架对于音频通信可以直接挪用,只需要修改其中捕获视频/音频的代码和服务器解码播放的部分。这里我们使用 PyAudio 库处理音频,在 Linux 下你也可以选择 sounddevice 。关于 sounddevice 这里不做过多介绍,你可以在这里看到它最新版本的文档。将 vchat.py 复制一份,重命名为 achat.py ,简单修改几处,最终音频捕获、传输的完整代码如下。我将上面代码中的 Server 和 Client 分别加上 Video 和 Audio 前缀以区分,同时显示给用户的 print 输出语句也做了一定修改,对于视频加上 VIDEO 前缀,音频加上 AUDIO 前缀。如果你对代码中使用到的 PyAudio 提供的库函数有所疑问,可以在这里找到相关的入门文档及示例。

没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
没有网就不能和女朋友开视频了?有Python在!没网照样开视频!

需要web前端丶大数据丶java丶C语言丶linux丶python教程+PDF电子书的小伙伴

请关注、转发、私信我"学习"就能免费获取教程+电子书。

没有网就不能和女朋友开视频了?有Python在!没网照样开视频!

相关推荐