首页 > 系统相关 >国产Linux音视频聊天程序开发遇到的坑及解决:相互听不到对方声音?

国产Linux音视频聊天程序开发遇到的坑及解决:相互听不到对方声音?

时间:2024-05-20 10:55:40浏览次数:27  
标签:程序开发 麦克风 扬声器 麒麟 音视频 国产 Linux OS

      最近完成了一个银河麒麟上的视频聊天项目,在我们开发机上测试一切正常后,提交给甲方测试。结果发现在甲方的某些银河麒麟V10的电脑上,听不到声音。

      这个问题,使用《Avalonia 实现跨平台的IM即时通讯、语音视频通话(源码,支持信创国产OS,统信、银河麒麟)》这个Demo就可以重现。

      我们在客户的几台麒麟V10上做了各种测试,而同一台电脑,在某些情况下又是正常能听到声音的,这真是太奇怪了。

      经过漫长的摸索排查,确认麦克风扬声器硬件没有问题,程序也没有问题,最后,终于找到了问题的根本所在。

      经过反复测试,发现这个问题跟银河麒麟V10的系统的声音设置有关。

1. 将系统麦克风和扬声器的音量调到最大

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

      如果麦克风音量没有开到最大,那么采集到的麦克风声音数据都是静音数据(全0),这也解释了麦克风连接器连接是正常的,为什么听不到声音了,因为收到的声音数据全是0。

2. 在银河麒麟V10上,麦克风和扬声器设备是独占模式

  如果打开了如上图所示的声音设置窗口,麦克风和扬声器就被系统独占了。此时,如果再运行我们音视频通话程序,程序打开麦克风和扬声器就会失败。

       综上所述,在国产OS银河麒麟V10上,要想音视频通话正常,需要保证:麦克风和扬声器的音量开到最大,没有其它别的程序(包括系统设置面板)占用了麦克风和扬声器。

       开发国产OS上的音视频程序这么久了,感觉跟之前windows相比,国产OS对音视频设备的支持还是差一些,还有一段距离。

       相信国产OS越来越好,到最后完全取代掉windows。当然,这需要更多的人将国产OS用起来,现在国家正在大力支持信创这块,前途还是很乐观的。

       

 

标签:程序开发,麦克风,扬声器,麒麟,音视频,国产,Linux,OS
From: https://www.cnblogs.com/shawshank/p/18201406

相关文章

  • 在Linux中,硬链接和软链接有何区别?
    在Linux系统中,硬链接(HardLink)和软链接(也称为符号链接,SymbolicLink)是文件系统中的两种特殊类型的链接,它们允许多个名称指向同一个文件或目录。尽管它们有相似之处,但它们之间存在一些关键的区别:1.硬链接(HardLink)文件名相同:硬链接实际上是文件系统中的一个文件名,指向一个inode......
  • 在Linux中,如何创建一个新用户?
    在Linux中创建新用户是一个常见的管理任务,可以通过几种不同的命令行工具来完成,其中最常用的是useradd命令。以下是创建新用户的详细步骤,包括为新用户设置密码、指定附加信息和赋予额外权限等环节。1.使用useradd命令创建用户useradd命令用于在系统中创建新的用户账户。基本......
  • 在Linux中,如何挂载一个ISO文件?
    在Linux中挂载ISO文件是一个相对直接的过程,通常涉及以下几个步骤。假设你已经有了一个ISO文件,并且想要将其作为一个虚拟光盘挂载到系统中以便访问其内容。以下是挂载ISO文件的步骤:1.创建挂载点首先,你需要创建一个目录作为ISO文件的挂载点。这个目录可以是系统中任何位置的一个......
  • 在Linux中,如何查看安装了哪些软件包?
    在Linux中查看已安装的软件包取决于你所使用的Linux发行版及其包管理系统。不同的发行版使用不同的包管理工具,以下是一些常见的Linux发行版及其对应的命令:1.Debian/Ubuntu系(使用APT包管理系统)对于基于Debian的系统,如Ubuntu,可以使用dpkg命令或者apt命令来查看已安装的软件包。1......
  • 在Linux中,如何添加一个用户到特定的组?
    在Linux中,将一个用户添加到特定的组是一个常见的管理任务,可以通过usermod命令轻松完成。下面是如何将用户添加到已存在的特定组的详细步骤:1.确认组的存在在开始之前,确保你想要添加用户进入的组已经存在。可以通过cat/etc/group命令查看系统中所有的组,或者使用grep命令搜索特定......
  • 物联网主机linux环境安装,详见本地文档
    安装jdk二、准备1、离线下载jdk-8u261-linux-x64.tar.gz2、上传压缩包到/usr/local/src目录下三、安装1、卸载CentOS自带的openJDKrpm-qa|grepjava如果系统有自带的jdk,则使用以下指令卸载rpm-e--nodeps  jdk-xxx如果系统没有自带jdk,忽略此步。2、解压进入/usr/l......
  • Linux 系统故障排查思路
    导读有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源。这时候就需要登录服务器进一步深入分析问题的根源。那么分析问题需要有一定的技术经验积累,并且有些问题涉及到的领域非常广,才能定位到问题。所以,分析问题和踩坑是非常锻炼一个人的成长和提升自我能力。如......
  • 【Linux】Deepin安装Anaconda后手动配置环境变量
    配置环境变量如果安装完毕后,重新打开终端,输入conda表示没找到这个命令说明没有配置环境变量那么我们首先第一件事,就是找到我们的conda安装到哪里了例如我的是安装到主目录的(默认在这的,安装的时候我没有修改安装路径)然后进入这个文件夹,进入bin,在bin下运行终端,输入pwd然后......
  • Linux常用命令-文件目录命令
    1.目录命令1.1、ls命令:显示目录下的内容基本格式[root@localhost~]#ls[选项][参数是文件名或目录名]常用选项-a:显示所有文件。--color=when。支持颜色输出,when的值默认是always(总显示颜色),never(不显示颜色)和auto(自动)。-d:显示目录信息,并非目录下的文件。-h:易读化......
  • 在Linux中,内核有作用?
    Linux内核是Linux操作系统的核心组件,负责管理系统的硬件资源并提供必要的服务和抽象,以供用户空间(用户程序运行的环境)的程序使用。以下是Linux内核的一些主要作用:1.硬件抽象内核提供了一个硬件抽象层,将硬件设备的细节隐藏起来,为应用程序提供统一的接口。这样,应用程序无需关心具......