Project Icon

linphone-desktop

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

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

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""

贡献

代码

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

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

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

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

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

翻译状态

语言


Linphone 正在获得完整的国际化支持。

我们不再使用 Transifex 进行翻译流程,而是部署了我们自己的 [Weblate](https://weblate.linphone.org) 实例。


如果您想贡献,可以访问:https://weblate.linphone.org/projects/linphone-desktop/



反馈或错误报告

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

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

    [Rules]
    *.debug=true
    qt.*.debug=false
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号