macOS虚拟机+Qt编译pjsip以及运行环境的配置

初来乍到mac平台,对mac上的依赖库格式完全不了解,而网上基于macOS的教程绝大多数都是基于iOS系统的。于是只能一点点摸索,搞了三天多,终于把pjsip工程编译通过,并且QT工程成功引用,也可以编译通过并运行。

编译版本:PJSIP2.9+Qt5.10.1

 

先附上官方说明:

https://www.pjsip.org/using.htm

https://trac.pjsip.org/repos/wiki/Getting-Started/Autoconf

环境准备

1.通过App Store安装Xcode,可以直接按以下教程,这样接下来的几个就都包含了

如何在Mac OS X 操作系统中安装gcc和make

2.安装Xcode的命令行工具

3.安装make

4.安装gcc

5.安装binutils

brew install binutils

安装这个之前,需要先保证电脑里安装了brew……

mac安装brew 软件包管理工具Homebrew

由于我的电脑死活安不上brew,我选择了直接用源码编译

https://ftp.gnu.org/gnu/binutils/

6.下载SDL2安装

http://www.libsdl.org/download-2.0.php

7.下载FFmpeg源码包

我用的是3.4.7版本

http://ffmpeg.org/download.html#releases

8.下载PJSIP源码包

https://www.pjsip.org/download.htm

开始编译

编译并安装FFmpeg

双击ffmpeg压缩包,解压,打开终端,将目录定位到解压后的文件夹内

执行命令,进行配置,并且指定生成动态库和静态库

./configure --enable-shared --enable-static 

 编译&安装

make && make install

然后就是漫长的等待,安装完成之后,通过命令ffmpeg -v查看是否安装成功,出现版本号即为安装成功

编译PJSIP

1. 解压PJSIP源码包,使用终端进入目录

打开目录pjlib/include/pj/,建立文件config_site.h,输入以下内容,打开视频的支持,并指定使用Mac平台下的编解码工具VideoToolBox,保存关闭

#define PJMEDIA_HAS_VIDEO 1
#define PJMEDIA_HAS_VID_TOOLBOX_CODEC 1

2. 返回PJSIP根目录

如果需要使用VP8解码,则参见文章最后的内容

执行命令

./configure --enable-shared --enable-static 

一开始FFmpeg和PISIP都没有指定生成动态库和静态库,就怎么都编译不过去,指定之后就好了

3. 编译&安装

make && make install

按照上面的方法进行配置的话,基本就可以直接安装成功了,接下来是调用。

Qt工程调用

1.新建qt工程

在工程文件夹内创建文件夹lib,里面再建立几个文件夹,分别命名为third_party,ffmpeg,sdl2,pjsip

下一步将把依赖的库都考进来

2.拷贝依赖库

third_party

打开pjproject/third_party/lib,将里面所有.a结尾的库,都拷到上一步建立的third_party文件夹

打开finder,使用快捷键⌘+shift+G打开/usr/local/lib目录,因为都进行了安装,我们需要的后三个库都在这里面

ffmpeg

将ffmpeg相关的,以dylib结尾的库拷贝到上一步建立的ffmpeg文件夹

尝试一开始通过依赖.a的库来编译,但是.a为后缀的库里没有libpostproc这个库,于是改为依赖dylib

sdl2

将sdl2相关的以下库也拷到对应文件夹

pjsip

pjsip同理,拷.a结尾的文件

3.配置Qt工程

库配置

项目上右键-添加库-外部库-选择依赖的库文件,再将windows和linux的勾去掉

添加成功后,pro文件会出现以下形式的内容,作为一个有追求的程序猿,通常我都会把后几条删掉,只保留第一条,更简洁

macx: LIBS += -L$$PWD/../lib/third_party/ -lg7221codec-x86_64-apple-darwin19.2.0

INCLUDEPATH += $$PWD/../lib/third_party
DEPENDPATH += $$PWD/../lib/third_party

macx: PRE_TARGETDEPS += $$PWD/../lib/third_party/libg7221codec-x86_64-apple-darwin19.2.0.a

 其他的库同理,不过比起一条条这样加,直接在pro文件里改会更快

头文件配置

头文件依赖路径也需要添加,如下面的格式

INCLUDEPATH += ../../include\
../include/pjsip/pjsip\
../include/pjsip/pjlib\
../include/pjsip/pjlib-util\
../include/pjsip/pjmedia\
../include/pjsip/pjnath\
../include/sdl

 

到这里,qt工程里就可以调用pjsip的函数,进行编译了!

 

使用VP8解码

VP8解码需要安装额外的内容,否则编出来的pjsip库用不了VP8

参考文章

http://www.linuxfromscratch.org/blfs/view/svn/multimedia/libvpx.html

Support for VP8 and VP9 video codec

posted @ 2019-12-26 14:51  0小野人0  阅读(913)  评论(0编辑  收藏  举报