热门标签 | 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的代码,否则会出现无法播放的问题。

 


推荐阅读
  • Java 架构:深入理解 JDK 动态代理机制
    代理模式是 Java 中常用的设计模式之一,其核心在于代理类与委托类共享相同的接口。代理类主要用于为委托类提供预处理、过滤、转发及后处理等功能,以增强或改变原有功能的行为。 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 在Java开发中,如何利用ProcessBuilder类调用外部程序是一个常见的需求。本文将详细介绍ProcessBuilder类的使用方法,并提供示例代码帮助你更好地理解和应用。 ... [详细]
  • 在软件开发过程中,MD5加密是一种常见的数据保护手段。本文将详细介绍如何在C#中使用两种不同的方式来实现MD5加密:字符串加密和流加密。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • 本文详细探讨了Java中的ClassLoader类加载器的工作原理,包括其如何将class文件加载至JVM中,以及JVM启动时的动态加载策略。文章还介绍了JVM内置的三种类加载器及其工作方式,并解释了类加载器的继承关系和双亲委托机制。 ... [详细]
  • 2017-2018年度《网络编程与安全》第五次实验报告
    本报告详细记录了2017-2018学年《网络编程与安全》课程第五次实验的具体内容、实验过程、遇到的问题及解决方案。 ... [详细]
  • 近期我们开发了一款包含天气预报功能的万年历应用,为了满足这一需求,团队花费数日时间精心打造并测试了一个稳定可靠的天气API接口,现正式对外开放。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • Java实现文本到图片转换,支持自动换行、字体自定义及图像优化
    本文详细介绍了如何使用Java实现将文本转换为图片的功能,包括自动换行、自定义字体加载、抗锯齿优化以及图片压缩等技术细节。 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
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社区 版权所有