O LinPhone é um softphone de código aberto para voz e vídeo sobre chamadas IP e mensagens instantâneas.
É totalmente baseado em SIP, para todos os recursos de chamada, presença e IM.
Descrição geral está disponível no site Linphone
Copyright © Belledonne Communications
O LinPhone é licenciado duplo e está disponível:
sob uma licença GNU/GPLV3, gratuitamente (código aberto). Certifique -se de entender e concordar com os termos desta licença antes de usá -la (consulte o arquivo de licença para obter detalhes).
Sob uma licença proprietária, por uma taxa, a ser usada em aplicativos de código fechado. Entre em contato com a Belledonne Communications para qualquer pergunta sobre custos e serviços.
Recursos suportados e RFCs
LinPhone Public Wiki
Aqui estão as instruções gerais para construir o LinPhone para desktop. As instruções específicas para cada plataforma de construção são descritas logo abaixo. Você precisará das ferramentas:
cmake > = 3.22: Faça o download em https://cmake.org/download/python : https://www.python.org/downloads/release/python-381/pip : Já está incorporado dentro do python, então não deve haver nada a fazer sobre issoyasm : https://yasm.tortall.net/download.htmlnasm : https://www.nasm.us/pub/nasm/releasebuilds/doxygen (necessário para o invólucro CXX)Perlpystache : use 'pip install pystache --user'six : Use 'Pip Install Six --User'git Para desktop: você precisará de QT6 ( 6.2 ou mais recente ). O suporte C++17 é necessário!
É necessário instalar o comando pip e executar:
pip install pystache six
Você deve definir a variável de ambiente Qt6_DIR para apontar para o caminho que contém as pastas cmake de QT6 e o PATH para o bin QT6. Exemplo:
Qt6_DIR="~/Qt/6.5.3/gcc_64/lib/cmake/Qt6"
PATH="~/Qt/6.5.3/gcc_64/bin/:$PATH"
NOTA: Se você tiver a ferramenta de terceiros qtchooser instalada: Eval "$ (qtchooser -Print -env)" Exportar QT6_DIR = $ {qtlibdir}/cmake/qt6 Caminho de exportação = $ {qttooldir}: $ Path 3. Para requisitos específicos, consulte seções de instruções da plataforma abaixo.
`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` or `./OUTPUT/Linphone.app/Contents/MacOS/linphone --verbose`
git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git --recursive
A construção é feita construindo o SDK e o aplicativo. Seus alvos são sdk e Linphone .
Crie sua pasta de compilação na raiz do projeto: mkdir build vá para esta nova pasta e inicie o processo de construção: cd build
Prepare suas opções: cmake .. Por padrão, ele tentará compilar todas as dependências necessárias. Você pode remover alguns adicionando -DENABLE_<COMPONENT>=NO ao comando. Você pode usar cmake-gui .. se você quiser ter um acesso melhor a eles. Você pode adicionar -DCMAKE_BUILD_PARALLEL_LEVEL=<count> para fazer <count> As construções paralelas para acelerar o processo. Além disso, você pode adicionar -DENABLE_BUILD_VERBOSE=ON para obter mais feedback ao gerar o projeto.
NOTA: Para makefile ou ninja, você deve adicionar -DCMAKE_BUILD_TYPE=<your_config> se você deseja criar uma configuração específica (por exemplo, RelWithDebInfo ).
cmake --build . --target <target> --parallel <count> (Substitua <target> pelo nome de destino e <count> pelo número de construções paralelas). NOTA: Para Xcode ou Visual Studio, você deve adicionar --config <your_config> se desejar criar uma configuração específica (por exemplo, RelWithDebInfo ).
Quando todos terminarem, os arquivos estarão na pasta de saída no diretório de compilação. Ao reconstruir, você deve usar cmake --build . --target install (ou cmake --install . ) Para colocar o aplicativo na configuração correta.
Os binários dentro de outras pastas (como build/bin/ e linphone-sdk ) não devem funcionar.
Ao fazer algumas modificações no SDK, você pode reconstruir apenas o SDK com o sdk de destino e o mesmo para o aplicativo com linphone-qt-only
Para obter pacotes, você pode usar cmake .. -DENABLE_APP_PACKAGING=YES . Os arquivos estarão na pasta OUTPUT/packages .
Atualize seu projeto com:
git busca git pux
Atualize os sub-módulos da sua filial atual
Atualização do submódulo Git -Init -Recursiva
Em seguida, basta reconstruir novamente usando o cmake.
-DLINPHONESDK_DOXYGEN_PROGRAM . Por exemplo, no Mac: -DLINPHONESDK_DOXYGEN_PROGRAM=/Applications/Doxygen.app/Contents/Resources/doxygen
Se a construção do SDK cair com algo como "cmd.exe falhar" e não há mais informações, pode ser uma dependência que não está disponível. Você tem que verificar se todos estão em seu caminho. Geralmente, se for sobre VPX ou descafeinado, isso pode vir da sua instalação PERL.
Se o aplicativo não iniciar e criar um arquivo vazio com um nome aleatório, ele poderá vir de uma configuração ruim entre o seu aplicativo e outros sub-módulos. Verifique suas configurações e force -as com -DCMAKE_BUILD_TYPE=<your_config> ou --config <your_config> .
No Mac, o aplicativo pode travar no início do qopenglContext. Uma solução alternativa é desativar o modo MIPMAP nas imagens adicionando ao seu arquivo de configuração (linphonerc): mipmap_enabled=0 na seção [ui] .
Para instalar as dependências necessárias no Mac OS X, você pode usar o homebrew. Antes de instalar os pacotes com a Brew, talvez seja necessário alterar as permissões de diretórios (se você não puder alterar as permissões com o sudo em um macOS> = Sierra, consulte essa resposta Stackoverflow).
Instale o Xcode na Apple Store. Execute pelo menos uma vez para permitir que ele instale suas ferramentas. Você pode precisar correr:
Xcode-Select-Instalação
Instale o homebrew seguindo as instruções aqui https://brew.sh/
Instale dependências:
Brew install cmake pkg-config git doxygen neasm yasm
Primeiro, certifique -se de ter Pip
Em seguida, você pode instalar um pacote PIP com o seguinte comando:
python -m pip install [package]
Por exemplo, insira o seguinte comando:
python -m pip install pystache six graphviz
Faça o download do qt, instale uma versão qt6 e defina as variáveis QT6_DIR e PATH.
Se você estiver construindo em um sistema ARM64 e deseja uma versão Intel, você deve selecionar o processador x86_64 no estágio de geração do cmake:
-Dcmake_apple_silicon_processor = x86_64
Construir como de costume (etapas gerais).
Se você receber um erro sobre módulos que não são encontrados para o Python, pode ser porque o CMake tente usar outra versão do seu caminho. Pode ser o caso se você instalar o Python da Brew. Instale os módulos Python usando o caminho absoluto. Por exemplo:
/opt/homebrew/python3 -m pip install pystache six graphviz
A versão de 32 bits não é suportada, pois o QT6 não fornece pacotes de 32 bits para MSVC. O Visual Studio 2022 é suportado apenas.
MinGW/MSYS2 : downloadpacman -Sy --needed base-devel mingw-w64-mingw64-toolchainpacman -S python3-pip no Console MSYS2 MSYSpython3 -m pip install pystache six em cmdC:msys64mingw64bin , C:msys64 e C:msys64usrbin em sua variável de ambiente de caminho das configurações avançadas do Windows. Os binários da pasta MSYS (não do MingW64) não suportam totalmente o caminho do Windows e, portanto, devem ser evitados. Especifique -DENABLE_WINDOWS_TOOLS_CHECK=ON ao criar o SDK para instalar ferramentas automaticamente ausentes do MSYS2: toolchain , python , doxygen , perl , yasm , gawk , bzip2 , nasm , sed , patch , pkg-config , gettext , glib2 , intltool e graphviz
git : Use MSYS2: pacman -S git ou Download
O Visual Studio também deve ser configurado corretamente com complementos. Em "Ferramentas"-> "Obtenha ferramentas e recursos", verifique se os seguintes componentes estão instalados:
Verifique se você baixou a versão QT correta no MSVC.
Ou abra uma linha de comando com Developer Command Prompt for VS 2022 e ligue para Qtenv2.bat que está nos seus binários QT, por exemplo: C:Qt<version>msvc2019binqtenv2.bat
Construir como de costume com adicionar -A x64 para cmake .. (etapas gerais):
cmake .. -DCMAKE_BUILD_PARALLEL_LEVEL=10 -DCMAKE_BUILD_TYPE=RelWithDebInfo -A x64 A compilação padrão é muito longa. É preferido usar o gerador ninja -G "Ninja"cmake --build . --target ALL_BUILD --parallel 10 --config RelWithDebInfosudo apt install qt6-Base-dev
No caso de 'Módulo "Qtquick.*" Não está instalado', você pode instalar estes pacotes:
Existem configurações de arquivos do docker onde as dependências podem ser recuperadas.
Além disso, mais configurações estão disponíveis na pasta Docker-Files do submódulo LinPhone-SDK.
| Opções | Descrição | Valor padrão |
|---|---|---|
| Enable_app_license | Ativar a licença em pacotes. | SIM |
| Enable_app_packaging | Ativar embalagem. O pacote será implantado em OUTPUT/packages | NÃO |
| Enable_app_pdf_viewer | Ativar visualizador de PDF. Precisa do módulo QT PDF. | SIM |
| Enable_app_webview | Ativar WebView para contas. O mecanismo da WebView deve ser implantado, é preciso um tamanho grande. | NÃO |
| Enable_app_package_rootca | Incorporar o arquivo rootca (concatenação de todos os certificados raiz publicados por Mozilla) no pacote | SIM |
| Enable_build_app_plugins | Habilite a construção de plugins | SIM |
| Enable_build_example | Habilite a construção de exemplos | NÃO |
| Enable_build_verbose | Permitir que a geração de construção seja mais detalhada | NÃO |
| Enable_daemon | Habilite a interface daemon LinPhone. | NÃO |
| Enable_pqcrypto | Habilite o post quântico zrtp. | NÃO |
| Enable_strict | Construa com sinalizadores estritos do compilador, por exemplo | NÃO |
| Enable_tests | Construa com binários de teste do SDK | NÃO |
| Enable_tests_components | Construa LibbcToolBox-Tester | NÃO |
| Enable_tools | Ativar ferramentas de SDK | NÃO |
| Enable_unit_tests | Ativar teste de unidade de SDK. | NÃO |
| Enable_update_check | Ativar verificação de atualização. | SIM |
| Linphone_sdk_make_release_file_url | Faça um arquivo de liberação que funcione ao longo do check_version e use este URL | "" |
Para enviar um patch para inclusão no código -fonte do LinPhone:
Primeiro, verifique se o seu patch se aplica às fontes Git mais recentes antes de enviar: os patches feitos para versões antigas não podem e não serão mesclados.
Preencha e envie o contrato de contribuinte para que seu patch seja incluído na árvore Git, seguindo os links lá. O objetivo deste Contrato é nos conceder o exercício pacífico de nossos direitos ao código -fonte do LinPhone, sem perder seus direitos sobre sua contribuição.
Em seguida, vá para o repositório do GitHub e faça solicitações de tração com base no seu código.
Observe que não oferecemos suporte gratuito e essas contribuições serão abordadas em nosso tempo livre.
LinPhone: código do aplicativo.
Modelo: Gerenciamento SDK que é executado no thread SDK.
Visualização: Coisas da GUI que são executadas no thread da interface do usuário.
núcleo: código principal que vincula o modelo e a exibição em um padrão MVVM.
Dados: todos os dados que não são código
Ferramenta: biblioteca interna para ferramentas genéricas.
Cmake: Construir e instalar scripts.
Externo: projetos externos.
Inicie o aplicativo com o parâmetro --verbose para obter logs completos e enviá -lo com sua solicitação. Você pode usar o botão "Enviar logs" nas configurações para fazer upload de arquivos de log e compartilhá -los por e -mail ou com uma postagem no projeto Github correspondente:
Em algum sistema operacional (como o Fedora 22 e mais tarde), eles desativam a saída de depuração do QT por padrão. Para obter saída completa, você precisa criar ~/.config/QtProject/qtlogging.ini e add:
[Rules]
*.debug=true
qt.*.debug=false