zoukankan      html  css  js  c++  java
  • Ubuntu安装FreeSWITCH亲测

    本人在安装FreeSWITCH的时候遇到了相当多的坑,网上很多方法都模棱两可,经常装失败,最后终于装成功后做一下总结

    最顺利的安装方式

    1. 下载压缩文件
      下载地址:http://files.freeswitch.org/freeswitch-releases/    我选择的下载版本是freeswitch-1.8.5.tar.xz ,下载完成后解压缩

    wget http://files.freeswitch.org/freeswitch-releases/freeswitch-1.8.5.tar.xz
    xz -d freeswitch-1.8.5.tar.xz
    tar -xvf freeswitch-1.8.5.tar

    2. 安装依赖包

    apt-get update
    
    apt-get install  -y autoconf git libtool g++ zlib1g-dev libjpeg-dev libsqlite3-dev libcurl4-openssl-dev libpcre3-dev libspeex-dev libspeexdsp-dev libldns-dev libedit-dev libssl-dev pkg-config yasm liblua50-dev libopus-dev libsndfile1-dev libpq-dev libreadline-dev lua5.2 lua5.2-doc liblua5.2-dev libtiff5 libtiff5-dev
    
    sudo apt-get install -y vim
    sudo apt-get install -y g++
    sudo apt-get install -y zlib1g-dev
    sudo apt-get install -y libjpeg-dev
    sudo apt-get install -y libsqlite3-dev
    sudo apt-get install -y libcurl4-gnutls-dev
    sudo apt-get install -y libpcre3-dev
    sudo apt-get install -y libspeexdsp-dev
    sudo apt-get install -y libedit-dev
    sudo apt-get install -y libssl-dev
    sudo apt-get install -y libopus-dev
    sudo apt-get install -y liblua5.2-dev
    sudo apt-get install -y libldns-dev
    sudo apt-get install -y libsndfile1-dev 

    3. 编译安装

    # 切换路径到第一步解压缩的文件夹下
    ./configure
    
    make
    make install

    4. 安装声音文件

    # 安装声音文件 
    make sounds-install
    make moh-install
    
    # 以下高质量的声音文件可选择安装
    make cd-sounds-install
    make cd-moh-install

    如果一切顺利的话就安装好了,但是事实往往不那么容易,之后会列举几个会遇到的问题及解决方案

    制作软连接

    ln -sf /usr/local/freeswitch/bin/freeswitch /usr/bin/
    ln -sf /usr/local/freeswitch/bin/fs_cli /usr/bin/

    启动FreeSWITCH

    freeswitch

    关闭FreeSWITCH

    shutdown

    可能遇到的问题及解决方案

    报错

    make[4]: Entering directory '/home/root/code/freeswitch-1.8.5/src/mod/applications/mod_signalwire'
    Makefile:930: *** You must install libks to build mod_signalwire.  Stop.
    make[4]: Leaving directory '/home/root/code/freeswitch-1.8.5/src/mod/applications/mod_signalwire'
    Makefile:683: recipe for target 'mod_signalwire-all' failed
    make[3]: *** [mod_signalwire-all] Error 1
    make[3]: Leaving directory '/home/root/code/freeswitch-1.8.5/src/mod'
    Makefile:591: recipe for target 'all-recursive' failed
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory '/home/root/code/freeswitch-1.8.5/src'
    Makefile:3494: recipe for target 'all-recursive' failed
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory '/home/root/code/freeswitch-1.8.5'
    Makefile:1255: recipe for target 'all' failed
    make: *** [all] Error 2
    • 解决步骤如下:
    # 下载并编译libks
    cd /usr/local/src
    git clone https://github.com/signalwire/libks.git
    cd libks
    cmake .

    这时很大可能会遇到下面这个问题:

    报错:

    -- Checking for module 'uuid'
    --   No package 'uuid' found
    CMake Error at /home/root/tools/cmake-3.13.3-Linux-x86_64/share/cmake-3.13/Modules/FindPkgConfig.cmake:452 (message):
      A required package was not found
    Call Stack (most recent call first):
      /home/root/tools/cmake-3.13.3-Linux-x86_64/share/cmake-3.13/Modules/FindPkgConfig.cmake:622 (_pkg_check_modules_internal)
      cmake/FindUUID.cmake:15 (pkg_check_modules)
      CMakeLists.txt:294 (include)
    
    
    -- Configuring incomplete, errors occurred!
    See also "/home/root/code/libks/CMakeFiles/CMakeOutput.log".
    See also "/home/root/code/libks/CMakeFiles/CMakeError.log".
    • 解决步骤如下
    # 解决方法:下载并编译libuuid源码
    wget https://jaist.dl.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz
    tar -zxvf libuuid-1.0.3.tar.gz
    cd libuuid-1.0.3
    .
    /configure make make install # 重新执行libks的 cmake . #### 问题解决。然后执行libks的 make make install

    报错:

    make[4]: Entering directory '/home/root/code/freeswitch-1.8.5/src/mod/applications/mod_signalwire'
    Makefile:930: *** You must install signalwireto build mod_signalwire.  Stop.
    make[4]: Leaving directory '/home/root/code/freeswitch-1.8.5/src/mod/applications/mod_signalwire'
    Makefile:683: recipe for target 'mod_signalwire-all' failed
    make[3]: *** [mod_signalwire-all] Error 1
    make[3]: Leaving directory '/home/root/code/freeswitch-1.8.5/src/mod'
    Makefile:591: recipe for target 'all-recursive' failed
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory '/home/root/code/freeswitch-1.8.5/src'
    Makefile:3494: recipe for target 'all-recursive' failed
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory '/home/root/code/freeswitch-1.8.5'
    Makefile:1255: recipe for target 'all' failed
    make: *** [all] Error 2
    • 解决方法如下
    # 解决方法:下载并编译signalwire-c
    cd /usr/local/src
    git clone https://github.com/signalwire/signalwire-c.git
    cd signalwire-c
    cmake .
    make
    make install

    这时有可能会出现问题:

    报错:

    CMake Error at CMakeLists.txt:168 (string):
      string sub-command REPLACE requires at least four arguments.
    
    
    -- Configuring incomplete, errors occurred!
    See also "/home/root/code/signalwire-c/CMakeFiles/CMakeOutput.log".
    • 解决方法如下
    # 阅读CMakeLists.txt,发现出问题的地方是使用git命令生成changelog的。对编译代码无影响。注释掉相关内容:
    
    # Get git log info
    #execute_process(COMMAND ${GIT_EXECUTABLE} log --no-merges --pretty=format:"%n  [%an]%n   * %s" --since="last month"
    #        OUTPUT_VARIABLE CHANGELOG
    #        WORKING_DIRECTORY .
    #        OUTPUT_STRIP_TRAILING_WHITESPACE)
    #string(REPLACE """ "" CHANGELOG ${CHANGELOG})
    
    ## Create changelog
    #file(WRITE changelog.Debian ${CHANGELOG_HEADER}
    ${CHANGELOG}
    
    ${CHANGELOG_FOOTER})
    #execute_process(COMMAND ${GZIP_CMD} -f -9 -n changelog.Debian)
    
    # Install changelog
    #install(FILES "${CMAKE_BINARY_DIR}/changelog.Debian.gz" COMPONENT "runtime" DESTINATION "share/doc/${CPACK_DEBIAN_PACKAGE_NAME}")
    
    
    # 在signalwire下重新执行 
    cmake . 
    make
    make install
     

    接下来到freeswitch目录下

    make clean # 清除上次编译的中间文件
    
    # 重新执行FreeSWITCH的
    ./configure
    make 
    make install

    若遇到启动freeswitch报错

    '''
    [ERR] mod_local_stream.c:360 Can't open /usr/local/freeswitch/sounds/music/8000/danza-espanola-op-37-h-142-xii-arabesca.wav
    [ERR] switch_core_file.c:304 Invalid file format [wav] for [/usr/local/freeswitch/sounds/music/8000/partita-no-3-in-e-major-bwv-1006-1-preludio.wav]!
    [ERR] mod_local_stream.c:360 Can't open /usr/local/freeswitch/sounds/music/8000/partita-no-3-in-e-major-bwv-1006-1-preludio.wav
    .........................
    .........................
    '''
    • 解决方法如下

    1.先到 http://files.freeswitch.org/releases/sounds/ 下载原始的语音文件,freeswitch-sounds-zh-cn-sinmei-48000-1.0.51.tar.gz
    2.用root用户在 /usr/local/freeswitch/sounds 下解压。该路径应该是 freeswitch 安装路径下的音频路径。可以先检查该路径下是否有英文语音文件。确认没有问题后解压。
    3.进去报错的路径下  /usr/local/freeswitch/sounds/  删除music文件夹。
    4.运行 sudo freeswitch 测试是否能正常运行
    5.如果不能正常运行,则需要根据 https://www.jianshu.com/p/3400fdd29fb5 里面的3-7步设置一下。

    参考:https://www.jianshu.com/p/3400fdd29fb5


    参考:https://blog.csdn.net/shzwfq/article/details/88716584 

                                 

  • 相关阅读:
    wxpython 支持python语法高亮的自定义文本框控件的代码
    小米平板6.0以上系统如何不用Root激活Xposed框架的步骤
    vivo4.0系统怎么不ROOT激活Xposed框架的教程
    oppo设备怎么样无需root激活XPOSED框架的教程
    OPPO A7x在哪里开启usb调试模式的详细经验
    python将两个数组合并成一个数组的两种方法的代码
    (最详细)小米MIX的Usb调试模式在哪里打开的教程
    (简单)华为荣耀9i LLD-AL20的Usb调试模式在哪里开启的方法
    linux c ---raise 使用范例的代码
    oppo8.0系统怎么无需Root激活Xposed框架的经验
  • 原文地址:https://www.cnblogs.com/zhuminghui/p/10980406.html
Copyright © 2011-2022 走看看