热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于Linux开源VOIP系统LinPhone[四]

******************************************************************************************

***************************************************************************************************************************
作者:EasyWave                                                                                 时间:2013.03.23

类别:Linux 应用LinPhone                                                              声明:转载,请保留链接

注意:如有错误,欢迎指正。这些是我学习的日志文章……

***************************************************************************************************************************

在《 基于Linux开源VOIP系统LinPhone[三] 》中,简单的介绍了SPEEX的编译和所需的库文件,如果需要编译linphone的话,最好先只需编译不带UI和不带视频传输的,这样在后期调试的时候,会比较方便,如果想要自己修改linphone的代码,需要熟悉ffmpeg(libav)、speex、readline、SDL、x264、osip、eXosip等等一大堆的第三方库函数,如果不带视频的话,一般只需要speex、readline、osip、eXosip以及ncurses库即可。至于G722和G729,需要熟悉mediastreamer2之后,才可以根据具体的项目,进行二次开发。如下图所示:

《基于Linux开源VOIP系统LinPhone[四]》

看到了吗,不过,如果你的平台中本身就带有摄像头的接口的话,图中的libv4l其实用不上,我后来仔细分析了mediastreamer2之后,发现根本就没有用上它,因为在mediastreamer2中有msv4l.c和msv4l2.c。

1):ncurses的编译

最好在ncurses的目录下建立一个build.sh文件,这样每次就执行./build.sh文件即可。如下所示:

#!/bin/bash
INSTALL_PATH=`pwd`/_install
mkdir -p $INSTALL_PATH
#autoreconf -iv
make distclean
./configure --prefix=$INSTALL_PATH \
--host=arm-none-linux-gnueabi \
--target=arm-none-linux-gnueabi \
--build=i486-linux-gnu \
--with-shared \
if [ $? -eq 0 ]; then
make
if [ $? -eq 0 ]; then
make install
exit 0
fi
fi
exit 1

2):readline的编译

build.sh的脚本文件如下所示:

#!/bin/bash
INSTALL_PATH=`pwd`/_install
mkdir -p $INSTALL_PATH
#autoreconf -iv
make distclean
./configure --prefix=$INSTALL_PATH \
--host=arm-none-linux-gnueabi \
--build=i486-linux-gnu \
--enable-multibyte \
--enable-shared \
--disable-static
if [ $? -eq 0 ]; then
make
if [ $? -eq 0 ]; then
make install
exit 0
fi
fi
exit 1

3):osip的编译

osip的build.sh文件如下所示:

#!/bin/bash
INSTALL_PATH=`pwd`/_install
mkdir -p $INSTALL_PATH
make distclean
./configure --prefix=$INSTALL_PATH \
--host=arm-none-linux-gnueabi \
--build=i486-linux-gnu \
--disable-option-checking \
--disable-dependency-tracking \
--enable-shared=yes \
--enable-static=no \
--enable-fast-install=no \
--disable-libtool-lock \
--disable-debug \
--enable-trace \
--disable-mpatrol \
--disable-gprof \
--enable-mt \
--enable-pthread \
--enable-semaphore \
--enable-sysv \
--disable-gperf \
--disable-hashtable \
--enable-test \
--disable-minisize \
--with-gnu-ld
if [ $? -eq 0 ]; then
make
if [ $? -eq 0 ]; then
make install
exit 0
fi
fi
exit 1

4):libeXosip的编译

#!/bin/bash
INSTALL_PATH=`pwd`/_install
mkdir -p $INSTALL_PATH
make distclean
./configure --prefix=$INSTALL_PATH \
--host=arm-none-linux-gnueabi \
--build=i486-linux-gnu \
--disable-option-checking \
--disable-dependency-tracking \
--enable-shared=yes \
--enable-static=no \
--enable-fast-install=no \
--disable-libtool-lock \
--disable-tool \
--disable-debug \
--enable-trace \
--disable-mpatrol \
--disable-gprof \
--enable-mt \
--enable-pthread \
--enable-semaphore \
--enable-sysv \
--disable-openssl \
--enable-srvrec \
--disable-minisize \
--with-gnu-ld \
OSIP_LIBS="-lpthread -losip2 -losipparser2 -L$INSTALL_PATH/lib" \
OSIP_CFLAGS="-I$INSTALL_PATH/include"
if [ $? -eq 0 ]; then
make
if [ $? -eq 0 ]; then
make install
exit 0
fi
fi
exit 1

最后,就是编译linphone的代码了。这个自己去运行./configure -h来进行设置和编译了。最后,还需要根据具体的芯片去修改oss和alsa的代码,否则会出现无法播放的问题。

 


推荐阅读
  • 在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转
    本文探讨了在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转的技术细节。通过详细分析Swscale的工作原理和实际应用,展示了如何在Android环境中高效地进行图像格式转换。此外,还介绍了FFmpeg的全平台编译过程,包括x264和fdk-aac的集成,并在Ubuntu系统中配置Nginx和Nginx-RTMP-Module以支持直播推流服务。这些技术的结合为音视频处理提供了强大的支持。 ... [详细]
  • Android开发常见问题汇总(含Gradle解决方案)第二篇
    本文继续深入探讨Android开发中常见的问题及其解决方案,特别聚焦于Gradle相关的挑战。通过详细分析和实例演示,帮助开发者高效解决构建过程中的各种难题,提升开发效率和项目稳定性。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在腾讯云服务器上部署Nginx的详细指南中,首先需要确保安装必要的依赖包。如果这些依赖包已安装,可直接跳过此步骤。具体命令包括 `yum -y install gcc gcc-c++ wget net-tools pcre-devel zlib-devel`。接下来,本文将详细介绍如何下载、编译和配置Nginx,以确保其在腾讯云服务器上顺利运行。此外,还将提供一些优化建议,帮助用户提升Nginx的性能和安全性。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 在Linux环境下编译安装Heartbeat时,常遇到依赖库缺失的问题。为确保顺利安装,建议预先通过yum安装必要的开发库,如glib2-devel、libtool-ltdl-devel、net-snmp-devel、bzip2-devel和ncurses-devel等。这些库是编译过程中不可或缺的组件,能够有效避免编译错误,确保Heartbeat的稳定运行。 ... [详细]
  • PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化
    PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化 ... [详细]
  • Nginx入门指南:从零开始掌握基础配置与优化技巧
    Nginx入门指南:从零开始掌握基础配置与优化技巧 ... [详细]
  • 在 CentOS 7 上部署和配置 RabbitMQ 消息队列系统时,首先需要安装 Erlang,因为 RabbitMQ 是基于 Erlang 语言开发的。具体步骤包括:安装必要的依赖项,下载 Erlang 源码包(可能需要一些时间,请耐心等待),解压源码包,解决可能出现的错误,验证安装是否成功,并将 Erlang 添加到环境变量中。接下来,下载 RabbitMQ 的 tar.xz 压缩包,并进行解压和安装。确保每一步都按顺序执行,以保证系统的稳定性和可靠性。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 优化Vite 1.0至2.0升级过程中遇到的某些代码块过大问题解决方案
    本文详细探讨了在将项目从 Vite 1.0 升级到 2.0 的过程中,如何解决某些代码块过大的问题。通过具体的编码示例,文章提供了全面的解决方案,帮助开发者有效优化打包性能。 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • openssh其他版本有漏洞,需要升级,本文以我升级的机器centos6为例一、准备工作1.1检查openssh版本查看系统版本catetcre ... [详细]
author-avatar
一切近乎完美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有