国产Linux音视频聊天程序开发遇到的坑及解决:相互听不到对方声音?
最近完成了一个银河麒麟上的视频聊天项目,在我们开发机上测试一切正常后,提交给甲方测试。结果发现在甲方的某些银河麒麟V10的电脑上,听不到声音。
这个问题,使用《Avalonia 实现跨平台的IM即时通讯、语音视频通话(源码,支持信创国产OS,统信、银河麒麟)》这个Demo就可以重现。
我们在客户的几台麒麟V10上做了各种测试,而同一台电脑,在某些情况下又是正常能听到声音的,这真是太奇怪了。
经过漫长的摸索排查,确认麦克风扬声器硬件没有问题,程序也没有问题,最后,终于找到了问题的根本所在。
经过反复测试,发现这个问题跟银河麒麟V10的系统的声音设置有关。
1. 将系统麦克风和扬声器的音量调到最大

如果扬声器音量没有开到最大,那么即使正常的语音数据提交给系统去播放,也是听不到声音的。如下图,将麦克风的声音设置为最大。

如果麦克风音量没有开到最大,那么采集到的麦克风声音数据都是静音数据(全0),这也解释了麦克风连接器连接是正常的,为什么听不到声音了,因为收到的声音数据全是0。
2. 在银河麒麟V10上,麦克风和扬声器设备是独占模式
如果打开了如上图所示的声音设置窗口,麦克风和扬声器就被系统独占了。此时,如果再运行我们音视频通话程序,程序打开麦克风和扬声器就会失败。
综上所述,在国产OS银河麒麟V10上,要想音视频通话正常,需要保证:麦克风和扬声器的音量开到最大,没有其它别的程序(包括系统设置面板)占用了麦克风和扬声器。
开发国产OS上的音视频程序这么久了,感觉跟之前windows相比,国产OS对音视频设备的支持还是差一些,还有一段距离。
相信国产OS越来越好,到最后完全取代掉windows。当然,这需要更多的人将国产OS用起来,现在国家正在大力支持信创这块,前途还是很乐观的。
国产Linux音视频聊天程序开发遇到的坑及解决:相互听不到对方声音?的更多相关文章
- 基于 WPF和ASP.NET Core 在线音视频聊天项目
Dimension 基于 .NET 6 的在线音视频聊天项目 WPF和ASP.NET API开发 使用第三方依赖介绍 公用依赖 log4net 日志记录. SignalR 用于服务器与客户端的通讯手段 ...
- 如何基于 ZEGO SDK 实现 Flutter 一对一音视频聊天应用?
之前的文章发布了ZEGO SDK实现Android端音视频通话应用的开发教程,不少开发者反馈很实用,能不能也出一版Flutter的教程. 有求必应,这不小编来了- 我们封装了ZEGO Flutter ...
- AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题
AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子. 一 AOP的基本概念 (1)Asp ...
- 从零到一,使用实时音视频 SDK 一起开发一款 Zoom 吧
zoom(zoom.us) 是一款受到广泛使用的在线会议软件.相信各位一定在办公.会议.聊天等各种场景下体验或者使用过,作为一款成熟的商业软件,zoom 提供了稳定的实时音视频通话质量,以及白板.聊天 ...
- 如何基于 ZEGO SDK 实现 Windows 一对一音视频聊天应用
互联网发展至今,实时视频和语音通话越来越被大众所依赖. 今天,我们将会继续介绍如何基于ZEGO SDK实现音视频通话功能,前两篇文章分别介绍了Android,Flutter平台的实现方式,感兴趣的小伙 ...
- C# 异步通信 网络聊天程序开发 局域网聊天室开发
Prepare 本文将使用一个NuGet公开的组件技术来实现一个局域网聊天程序,利用组件提供的高性能异步网络机制实现,免去了手动编写底层的困扰,易于二次开发,扩展自己的功能. 在Visual Stud ...
- 如何基于 ZEGO SDK 实现 Android 一对一音视频聊天应用
疫情期间,很多线下活动转为线上举行,实时音视频的需求剧增,在视频会议,在线教育,电商购物等众多场景成了"生活新常态". 本文将教你如何通过即构ZEGO sdk在Android端搭建 ...
- iOS开发遇到的坑之五--解决工程已存在plist表,数据却不能存入的问题
想写这篇博客其实在一两个月前开发遇见的时候就想把这个问题写成博客的,奈何自己一直懒外加一直没有时间,就把这个事情给耽搁了,好在当时知道下自己一定要把这个问题给描述出来,免得以后其他人遇到这个问题会纠结 ...
- Linux下C/C++程序开发管理(makefile)
一.引言 从我们刚开始编写一个简单的C/C++ "Hello,World!",到将其编译.运行处结果—这部分工作IDE(集成开发环境)帮我们做了,包括语法错误检查 ...
- 如何选择合适的Linux系统进行桌面程序开发?
32 or 64 ? 众所周知,64位的Windows系统可以近乎完美地运行32位的应用程序,微软出于商业考虑做了这样一个兼容层.而Linux系统则划分的很清楚,默认情况下64位的Linux系统无法运 ...
随机推荐
- OpenHarmony兼容性平台更新上线
一.前言 OpenAtom OpenHarmony(以下简称"OpenHarmony")兼容性测评平台已经运行了一年,随着 OpenHarmony 开源项目的不断向前演进和兼容性测 ...
- 部署解压版mysql
1.检查系统是否安装过mysql //检查系统中有无安装过mysql rpm -qa|grep mysql //查询所有mysql 对应的文件夹,全部删除 whereis mysql find / - ...
- MogDB 2.1.1 初始化参数概要说明
MogDB 2.1.1 初始化参数概要说明 本文出处:https://www.modb.pro/db/394787 MogDB 数据库安装完成后,官方文档提供了刷新参数的脚本,推荐执行脚本来进行初始化 ...
- python数据库迁移
实际操作命令 1,python 文件.py db init 2,python xx.py db migrate -m '版本描述' 3,python xx.py db upgrade 4,python ...
- 用fpga实现1G Eth TCP&UDP硬件协议栈
用fpga实现的1G 以太网硬件协议栈,属于轻的协议栈
- asyncio async和await列表推导式实现异步高并发执行
import asyncio import random import time # 需求:有一个crontab调度器,每隔1秒,拉起1个job,要求这些job可以并发爬取网页 async def c ...
- Redis 性能优化实战
Redis 作为内存数据库,其性能表现非常出色,单机 OPS 很容易达到 10万以上,这主要得益于其高效的内存数据结构.单线程无锁设计.IO 多路复用等技术实现.但是在线上生产环境的使用中,我们仍然会 ...
- 在RockyLinux 9.2环境中编译CockroachDB 23.1
目的 CockroachDB自 23.1开始,编译模式逐步放弃了Makefile,改用Bazel构建.实际上在23.1代码执行make buildshort 能够成功,但make build应该就会因 ...
- 【ESP32 IDF】用RMT控制 WS2812 彩色灯带
在上一篇中,老周用 .NET Nano Framework 给大伙伴们演示了 WS2812 灯带的控制,包括用 SPI 和 红外RMT 的方式.利用 RMT 是一个很机灵的方案,不过,可能很多大伙伴对 ...
- vue的history模式与哈希模式原理
hash模式 <!-- * @Author: dezhao.zhao@hand-china.com * @Date: 2021-10-26 17:52:25 * @Description: -- ...