1 准备工作
环境:ubuntu14.04 64位
oRTP(1.0.2)链接:https://github.com/BelledonneCommunications/ortp
bctoolbox(0.6.0) 的链接:https://github.com/BelledonneCommunications/bctoolbox
mbedtls (2.9.0)的链接:https://github.com/ARMmbed/mbedtls
说明:oRTP依赖bctoolbox,而bctoolbox依赖mbedtls,所以需要上面3个库,如下图
另外需要说明的是,首先必须安装软件开发必要的工具,gcc、g++、make、cmake、git等,特别注意cmake的版本必须高于 3.0,如果版本太低,需要下载高版本的安装。
2 源码下载
oRTP官网:http://www.linphone.org/technical-corner/ortp/overview
GitHub链接:https://github.com/BelledonneCommunications/ortp
注意看oRTP源码的 README.md
3 mbedtls库编译安装
解压源码包
tar xvfz mbedtls-mbedtls-2.9.0.tar.gz
进入源码
cd mbedtls-mbedtls-2.9.0/
生成makefile
cmake . -DUSE_SHARED_MBEDTLS_LIBRARY=On
编译
make
安装
sudo make install
说明:上面编译同时生成静态库和动态库,库安装在/usr/local/lib/下,头文件在/usr/local/include/mbedtls/下。
4 bctoolbox库编译安装
解压源码包
tar xvzf bctoolbox-0.6.0.tar.gz
进入源码
cd bctoolbox-0.6.0/
生成makefile(安装在/usr下)
cmake . -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_TESTS_COMPONENT=NO
编译
make
安装
sudo make install
说明:上面编译同时生成静态库和动态库,库安装在/usr/lib/x86_64-linux-gnu/下,头文件在/usr/include/bctoolbox/下。
5 ortp库编译安装
解压源码包
tar xvzf ortp-1.0.2.tar.gz
进入源码
cd ortp-1.0.2/
生成makefile(安装在/usr下)
cmake . -DCMAKE_INSTALL_PREFIX=/usr
编译
make
安装
sudo make install
说明:上面编译同时生成静态库和动态库,库安装在/usr/lib/x86_64-linux-gnu/下,头文件在/usr/include/ortp/下。
6 源码自带例程体验
说明:源码自带测试例程是针对PCMU格式音频文件的发送
编译/src/tests/rtpsend.c
gcc -o rtpsend rtpsend.c -lortp
查看可执行文件的动态依赖库情况
ldd rtpsend
可以看到找不到libmbedtls.so.10、libmbedx509.so.0、libmbedcrypto.so.2 这些动态链接库,我们可以建立软连接
sudo ln -s /usr/local/lib/libmbedtls.so.10 /usr/lib/x86_64-linux-gnu/
sudo ln -s /usr/local/lib/libmbedx509.so.0 /usr/lib/x86_64-linux-gnu/
sudo ln -s /usr/local/lib/libmbedcrypto.so.2 /usr/lib/x86_64-linux-gnu/
复制一个音频测试文件test.g711放到 /src/tests/ 下
执行RTP send程序
./rtpsend test.g711 192.168.2.105 6664
有可能会有段错误---Segmentation fault (core dumped),这是因为网上下载的测试文件的音频文件test.g711不是pcmu编码,而是pcma,所以负载类型要改为8,另外socket的connect使能了。
改rtpsend.c测试代码,如下,改两处
重新编译,运行,成功
编写.sdp文件,使用VLC接收音频文件,可以听到声音,sdp文件内容如下(根据目的IP和端口号写)
下一节分析音频g711推流。