【背景】

公司的内部电话系统租金昂贵,而且还经常出问题。疫情期间,大多数同事在家办公又无法使用,成本效益比极低。作为专心创造的技术人员,我就打算给公司开发基于网络的内网通信程序。

【方案】

使用Python的vidstream包实现双向通话

【具体Coding】

from vidstream import AudioReceiver
from vidstream import AudioSenderimport threading
import socket# ip = socket.gethostbyname(socket.gethostname())receiver = AudioReceiver('192.168.3.108',5555)
receive_thread = threading.Thread(target=receiver.start_server)
#
# sender = AudioSender('192.168.3.106',5555)
# sender_thread = threading.Thread(target=sender.start_stream)receive_thread.start()
# sender_thread.start()

这里由于只是做一个单向测试,所以sender的部分都被注释了,对端也需要开启一个脚本,在单向测试中对端的脚本只需要写Receiver即可。

【代码解析】

实现通信,就需要发送和接收两个动作,每个动作都占用一个Port,比如A和B通信,A送B收用9999端口,A收B送用5555端口。
IP的设置上,对于接收类,自己的角色就是接收服务器,所以IP用自己的局域网IP,而对于发送类,应该写对端的IP。
而且因为接收端被视为服务器,所以receiver类用的是start_server方法,等待对端的信息,而sender类用的是start_stream(开始发送数据流)。

【测试结果】

我用另一台笔记本介入家庭局域网,用笔记本自带麦克发送声音,音质等都还不错的。

【正式投产】

这里实现的只是简单的核心功能,在此基础上可以配上符合公司需求的各类逻辑,比如对声音的控制,用户界面,Log功能,Log的查询功能等。只要核心功能可以实现,其它业务逻辑的附加没有太大问题。

【Python】用Python实现简单网络电话相关推荐

  1. python tornado教程_Tornado 简单入门教程(零)——准备工作

    前言: 这两天在学着用Python + Tornado +MongoDB来做Web开发(哈哈哈这个词好高端).学的过程中查阅了无数资料,也收获了一些经验,所以希望总结出一份简易入门教程供初学者参考.完 ...

  2. 使用Python,OpenCV实现简单的场景边界/拍摄转换检测器

    使用Python,OpenCV进行简单的场景边界/拍摄转换检测器 1. 效果图 2. 实现 2.1 步骤 2.2 什么是"场景边界"和"拍摄过渡"? 2.3 代 ...

  3. python tkinter库、添加gui界面_使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)...

    使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二),创建一个,界面,布局,文件,路径 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二) ...

  4. python m http_非常简单的Python HTTP服务

    如果因为某种需求急需一个web服务器,而又不至于去在httpd和nginx中配置一个新的虚拟主机,Python或许可以帮上这个临时的小需求. 使用Python可以完成一个简单的内建 HTTP 服务器. ...

  5. python的变量和简单的数据类型

    决定学习python这门语言了,本人资质愚钝,只会把学到的东西记录下来,供自己查漏补缺,也可以分享给和我一样正在学习python语言的人,若在记录中存在什么错误,希望多多批评指正,谢谢. Python ...

  6. 如何用python创建一个下载网站-使用Python下载文件的简单示例

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 学习如何使用各种Python模块从web下载文件 在本教程中,你将学习如何使用不同的Python模块从we ...

  7. 怎么进入python官网-Python的安装及简单的使用

    原标题:Python的安装及简单的使用 像我们想要抓住一门好的编程语言,如何开始学习呢?我来简单介绍下python Python特性:语法简单,入门上手快,很多女神也在学习,方便找个编程的妹纸---- ...

  8. php和python哪个学起来简单一点-作为初学者,php,python和ruby应学哪个?

    [IT168 评论]对于web开发初学者来说,最大的问题就是学习哪种编程语言更适合未来的职业发展并且更有前景.你要考虑都有哪些编程语言,各自的优缺点是什么.每种编程语言的学习周期有多长等问题.互联网上 ...

  9. 大学python和vb哪个简单-python和vb哪个简单

    Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言,为结构化的.模块化的.面向对象的.包含协助开发环境的事件驱动为机制的可视化程序设计语言.是一种可用于 ...

  10. python和vb的代码可以通用吗-python和vb哪个简单

    Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言,为结构化的.模块化的.面向对象的.包含协助开发环境的事件驱动为机制的可视化程序设计语言.是一种可用于 ...

最新文章

  1. python选课系统_【精选】在Monash读Data Science,人人都拥有这样一份选课指南。
  2. 【报错】ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds t
  3. 微信公众平台开发新手教程(图文具体解释)
  4. 10个常用的Python图像处理工具,非常全了
  5. 专家:大数据等新技术助力信息融合
  6. wince版本ffmpeg的编译 第四篇
  7. 解决import tensorflow时的报错 Passing (type, 1) or ‘1type‘ as a synonym of type is deprecate
  8. 万用表怎么测电池内阻_数字万用表和指针万用表,两者怎么选?
  9. tesseract 使用说明
  10. 安卓开发 底部导航图标切换时动画效果_体验安卓 10:好用百倍都不止!
  11. git archive使用笔记
  12. 神经网络算法的关键参数,神经网络计算方法
  13. 在react-native fetch中 then res res.json 是什么意思
  14. Win7系统如何在线进行重装?在线一键重装Win7方法
  15. MongoDB之查询文档
  16. 关于小容量固态硬盘可分区大小远小于实际可用空间的解决方案
  17. hashmap和数组哪个速度快
  18. 音诺恒人脸识别门禁闸机模组参数详解
  19. ip route内容详解
  20. 笔记本升级intel显卡驱动失败如何手动安装-驱动人生

热门文章

  1. 在欧几里德几何中,nn 边形的内角和是 (n-2)\times 180(n−2)×180°。
  2. shp文件导入到mysql
  3. 亚派科技与涂鸦智能签署深度合作协议,携手深耕智能化领域产业升级
  4. 《Java程序设计》课程设计
  5. Linux 创建oracle数据库的详细过程
  6. C# WPF ListView控件的实例详解
  7. 字节跳动面试官:java范例完全自学手册
  8. matlab 序列二次规划,二次规划 - MATLAB quadprog - MathWorks 中国
  9. 2019-12-6 爬网页6-request模块+get请求+正则筛选
  10. 海外置业迪拜伊玛尔房产注意事项