linphone-desktop

linphone-desktop

基于SIP的开源跨平台软电话应用

Linphone是一款基于SIP协议的开源软电话应用,支持语音、视频通话和即时消息功能。作为先进的VoIP和实时通信解决方案,该应用跨平台兼容,提供强大的音视频编解码能力和屏幕共享等高级特性。Linphone采用双重许可模式,用户可选择免费的开源版本或付费的商业版本。项目持续维护,支持开发者贡献和多语言本地化,是构建现代通信系统的理想选择。

LinphoneSIPVoIP即时通讯开源软件Github开源项目

Linphone 桌面版

Linphone 是一款用于 IP 语音和视频通话以及即时通讯的开源软电话。

它完全基于 SIP 协议,支持所有通话、在线状态和即时通讯功能。

可以从 Linphone 网站 获取一般性描述。

许可证

版权所有 © Belledonne Communications

Linphone 采用双重许可,可以选择:

  • 根据 GNU/GPLv3 许可证 免费使用(开源)。使用前请确保您理解并同意该许可证的条款(详见 LICENSE 文件)。

  • 根据专有许可证,付费用于封闭源代码应用程序。如有任何关于费用和服务的问题,请联系 Belledonne Communications

文档

参数

--help : 显示可用参数。

--verbose : 将日志打印到标准输出/标准错误。

--qt-logs-only : 只打印应用程序的日志,不包含 SDK 日志。

入门

以下是构建 Linphone 桌面版的一般说明。每个构建平台的具体说明见下文。 您需要以下工具:

对于桌面版:您需要 Qt5 (5.15 或更新版本)。需要支持 C++11!

设置环境

  1. 必须安装 pip 命令并执行:

     pip install pystache six
    
  2. 您必须设置环境变量 Qt5_DIR 指向包含 Qt5 cmake 文件夹的路径,并将 PATH 指向 Qt5 的 bin。例如:

     Qt5_DIR="~/Qt/5.15.2/gcc_64/lib/cmake/Qt5"
     PATH="~/Qt/5.15.2/gcc_64/bin/:$PATH"
    

注意:如果您安装了第三方工具 qtchooser: eval "$(qtchooser -print-env)" export Qt5_DIR=${QTLIBDIR}/cmake/Qt5 export PATH=${QTTOOLDIR}:$PATH 3. 具体要求请参见下面的平台说明部分。

构建步骤概述

    `git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git --recursive`
    `cd linphone-desktop`
    `mkdir build`
    `cd build`
    `cmake .. -DCMAKE_BUILD_PARALLEL_LEVEL=10 -DCMAKE_BUILD_TYPE=RelWithDebInfo`
    `cmake --build . --parallel 10 --config RelWithDebInfo`
    `cmake --install .`
    `./OUTPUT/bin/linphone --verbose` 或 `./OUTPUT/Linphone.app/Contents/MacOS/linphone --verbose`

获取源代码

    git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git --recursive        

构建:一般步骤

构建过程包括构建 SDK 和应用程序。它们的目标分别是 sdklinphone-qt

  1. 在项目根目录创建构建文件夹: mkdir build 进入新文件夹开始构建过程: cd build

  2. 准备选项: cmake ..。默认情况下,它将尝试编译所有需要的依赖项。您可以通过添加 -DENABLE_<COMPONENT>=NO 来移除某些组件。如果想更好地访问这些选项,可以使用 cmake-gui ..。您可以添加 -DCMAKE_BUILD_PARALLEL_LEVEL=<count> 来执行 <count> 个并行构建以加快进程。 此外,您可以添加 -DENABLE_BUILD_VERBOSE=ON 以在生成项目时获得更多反馈。

注意:对于 Makefile 或 Ninja,如果您希望在特定配置下构建(例如 RelWithDebInfo),则必须添加 -DCMAKE_BUILD_TYPE=<your_config>

  1. 构建并安装整个项目: cmake --build . --target <target> --parallel <count> (将 <target> 替换为目标名称,<count> 替换为并行构建数)。

注意:对于 XCode 或 Visual Studio,如果您希望在特定配置下构建(例如 RelWithDebInfo),则必须添加 --config <your_config>

完成后,文件将位于构建目录的 OUTPUT 文件夹中。重新构建时,必须使用 cmake --build . --target install (或 cmake --install .) 将应用程序放置在正确的配置中。

其他文件夹(如 linphone-applinphone-sdk)中的二进制文件不应该能正常工作。 4. 在对SDK进行一些修改时,你可以只使用目标sdk重新构建SDK,同样地,使用linphone-qt-only只重新构建应用程序。

  1. 为了获取安装包,你可以使用cmake .. -DENABLE_APP_PACKAGING=YES。文件将位于OUTPUT/packages文件夹中。

更新你的项目

  1. 使用以下命令更新你的项目:

     git fetch
     git pull --rebase
     
    
  2. 从当前分支更新子模块

     git submodule update --init --recursive
    

然后只需使用cmake重新构建即可。

常见故障排除

  • SDK可能无法与最新版本的Doxygen兼容。如果你遇到一些构建问题,并且PATH中没有特定版本的Doxygen,你可以使用-DLINPHONESDK_DOXYGEN_PROGRAM

例如在Mac上: -DLINPHONESDK_DOXYGEN_PROGRAM=/Applications/Doxygen.app/Contents/Resources/doxygen

  • 如果SDK的构建崩溃,出现类似"cmd.exe失败"的提示且没有更多信息,可能是某个依赖项不可用。你需要检查是否所有依赖项都在你的PATH中。 通常,如果是关于VPX或Decaf的问题,可能来自你的Perl安装。

  • 如果应用程序无法启动并创建一个随机名称的空文件,可能是由于应用程序与其他子模块之间的配置不当。检查你的配置并使用-DCMAKE_BUILD_TYPE=<your_config>--config <your_config>强制设置。

  • 在Mac上,应用程序可能会在启动时因QOpenGLContext而崩溃。一个解决方法是在配置文件(linphonerc)的[ui]部分添加mipmap_enabled=0来停用图像的mipmap模式。

Mac OS X平台的具体说明

要在Mac OS X上安装所需的依赖项,你可以使用Homebrew。 在使用Brew安装软件包之前,你可能需要更改目录权限(如果你无法在MacOS >= High Sierra上使用sudo更改权限,请查看这个StackOverflow回答)。

  1. 从Apple商店安装XCode。至少运行一次以允许它安装其工具。你可能需要运行:

     xcode-select --install
    
  2. 按照https://brew.sh/的说明安装Homebrew

  3. 安装依赖项:

     brew install cmake pkg-config git doxygen nasm yasm
    
  4. 首先确保你已安装pip

  5. 然后,你可以使用以下命令安装pip包:

     python -m pip install [package]
    

例如,输入以下命令:

    python -m pip install pystache six graphviz
    

6. 下载Qt,安装Qt5版本并设置Qt5_DIR和PATH变量。

  1. 默认架构为x86_64,因为Qt 5.15.2不支持arm64。可以使用LINPHONEAPP_MACOS_ARCHS更改架构。

    -DLINPHONEAPP_MACOS_ARCHS=arm64

  2. 按常规步骤构建。

  3. 如果你遇到关于Python模块未找到的错误,可能是因为cmake尝试使用PATH中的另一个版本。如果你从brew安装了Python,这种情况可能会发生。使用绝对路径安装Python模块。 例如:

     /opt/homebrew/python3 -m pip install pystache six graphviz
    

Windows平台的具体说明

  1. 安装主要工具:
  • MinGW/MSYS2: 下载
    • 按照他们的"入门"页面上的说明操作。
    • 安装工具链并准备Python:
      • MSYS2 MSYS控制台中运行pacman -Sy --needed base-devel mingw-w64-x86_64-toolchain
      • MSYS2 MSYS控制台中运行pacman -S python3-pip
      • cmd中运行python3 -m pip install pystache six
      • 按此顺序,在Windows高级设置的PATH环境变量中添加C:\msys64\mingw64\binC:\msys64\C:\msys64\usr\bin。msys文件夹中的二进制文件(不是mingw32/64中的)不完全支持Windows路径,因此应避免使用。

构建SDK时,它将自动从MSYS2安装:toolchainpythondoxygenperlyasmgawkbzip2nasmsedpatchpkg-configgettextglib2intltoolgraphviz(如果需要)

  • git: 使用MSYS2: pacman -S git下载

  • Visual Studio还必须正确配置附加组件。在"工具"->"获取工具和功能"下,确保安装了以下组件:

    • 任务: 选择Windows通用平台开发、桌面C++开发、.NET开发
  1. 确保你已下载Qt msvc2019版本(64位)。请注意,Qt msvc2019可以与早期版本的Visual Studio一起使用。

  2. 或者打开Visual Studio的Developer Command Prompt for VS 2019命令行,并调用qt二进制文件中的qtenv2.bat,例如:C:\Qt\<version>\msvc2019\bin\qtenv2.bat

  3. 按常规步骤构建,在cmake ..中添加-A x64(常规步骤):

  • cmake .. -DCMAKE_BUILD_PARALLEL_LEVEL=10 -DCMAKE_BUILD_TYPE=RelWithDebInfo -A x64 默认构建时间很长。建议使用Ninja生成器-G "Ninja"
  • cmake --build . --target ALL_BUILD --parallel 10 --config RelWithDebInfo
  1. 项目文件夹将位于build目录中,二进制文件应该在OUTPUT文件夹中。

安装依赖项

docker文件配置,可以从中获取依赖项。 此外,linphone-sdk 子模块的 docker-files 文件夹中还有更多配置可用。

选项

选项描述默认值
ENABLE_APP_LICENSE在软件包中启用许可证
ENABLE_APP_PACKAGING启用打包。软件包将部署在 OUTPUT/packages
ENABLE_APP_PDF_VIEWER启用 PDF 查看器。需要 Qt PDF 模块
ENABLE_APP_WEBVIEW为账户启用网页视图。必须部署网页视图引擎,占用空间较大
ENABLE_APP_PACKAGE_ROOTCA将 rootca 文件(Mozilla 发布的所有根证书的合并)嵌入软件包中
ENABLE_BUILD_APP_PLUGINS启用插件构建
ENABLE_BUILD_EXAMPLES启用示例构建
ENABLE_BUILD_VERBOSE启用更详细的构建生成输出
ENABLE_DAEMON启用 linphone 守护进程接口
ENABLE_PQCRYPTO启用后量子 ZRTP
ENABLE_SCREENSHARING启用屏幕共享
ENABLE_STRICT使用严格的编译器标志构建,如 -Wall -Werror
ENABLE_TESTS构建 SDK 的测试二进制文件
ENABLE_TESTS_COMPONENTS构建 libbctoolbox-tester
ENABLE_TOOLS启用 SDK 工具
ENABLE_UNIT_TESTS启用 SDK 的单元测试
ENABLE_UPDATE_CHECK启用更新检查
LINPHONE_SDK_MAKE_RELEASE_FILE_URL创建与 check_version 配合使用的 RELEASE 文件,并使用此 URL""
<!-- 不建议自定义,可能会影响保修 | ENABLE_LDAP | 启用 LDAP 支持 | 是 | | ENABLE_VIDEO | 启用视频支持 | 是 | | ENABLE_OPENH264 | 启用 OpenH264 编解码器 | 是 | | ENABLE_NON_FREE_FEATURES | 启用非自由功能 | 是 | | ENABLE_FFMPEG | 使用 ffmpeg 视频支持构建 mediastreamer2 | 否 | | ENABLE_CONSOLE_UI | 开启或关闭控制台界面的编译 | 否 | -->

贡献

代码

要提交补丁以纳入 Linphone 的源代码中:

  1. 首先确保您的补丁适用于最新的 Git 源代码,然后再提交:对旧版本的补丁无法合并,也不会被合并。

  2. 填写并发送贡献者协议,以便将您的补丁纳入 Git 树中,具体方法请点击此处。该协议的目的是授予我们对 Linphone 源代码的和平行使权利,同时不影响您对自己贡献的权利。

  3. 然后前往 GitHub 仓库,基于您的代码创建一个拉取请求。

请注意,我们不提供免费支持,这些贡献将在我们的空闲时间内处理。

<a href="https://weblate.linphone.org/engage/linphone-desktop/?utm_source=widget"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/20af9c4a-b546-4bb2-b704-e389c68157cb.svg" alt="翻译状态" align="right"/> </a>

语言

<br /> Linphone 正在获得完整的国际化支持。<br /> <br /> 我们不再使用 Transifex 进行翻译流程,而是部署了我们自己的 [Weblate](https://weblate.linphone.org) 实例。<br /> <br /> <br /> 如果您想贡献,可以访问:https://weblate.linphone.org/projects/linphone-desktop/ <br /> <br /> <br /> <br />

反馈或错误报告

使用 --verbose 参数启动应用程序以获取完整日志,并将其与您的请求一起发送。您可以使用设置中的"发送日志"按钮上传日志文件,并通过电子邮件或在相应的 GitHub 项目中发帖分享:

在某些操作系统(如 Fedora 22 及更高版本)上,默认禁用了 Qt 调试输出。要获得完整输出,您需要创建 ~/.config/QtProject/qtlogging.ini 文件并添加以下内容:

    [Rules]
    *.debug=true
    qt.*.debug=false

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多