IM音视频通信开发(3)--点对点视频实现

上一篇大体说明了点对点单聊和nat穿越的问题,这一篇就开始单对单的视频聊天说明。

一、环境:

ubutun 14  AS3.0  android-ndk-r14

二、软件:

pjsip,opensips,restund

依旧使用pjsip作为客户端,opensips做注册,restund做nat穿越。接上一篇的ndk编译说明和安卓对应库的安装,支持视频需要以下几步:

1、配置文件config_site.h中添加

#define PJMEDIA_HAS_VIDEO 1 //视频支持

#define PJMEDIA_HAS_LIBYUV 1 //YUV开启

2、下载openHttpH264

https://github.com/cisco/openh264

将对应的zip在/opt目录下解压,进入目录执行

make OS=android NDKROOT=/opt/android-ndk-r14b TARGET=android-14 PREFIX=./androidlib install-shared APP_ABI=armeabi

会在/opt/openh264-master/androidlib/lib目录下生成对应so文件

3、进入pjsip工程目录下(我的是/home/pjsip/pjproject-2.7.2)

执行

NDK_TOOLCHAIN_VERSION=4.9 APP_PLATFORM=android-14 TARGET_ABI=armeabi ./configure-android --use-ndk-cflags --with-openh264=/opt/openh264-master/androidlib/

make dep && make clean && make

make install 此操作会将所有的安卓用的.a文件安装到用户目录下

参数说明:

--with-openh264=/opt/openh264-master/androidlib/ 指定寻找的.so文件和对应的头文件目录

至此所有的.a文件全部支持视频编译

4、根据上一篇中的ndk编译自己的jni库的配置,进入自己的jni目录下,执行ndk-build clean && ndk-build生成的动态so库中就支持了视频聊天。

5、具体的视频需要展示在安卓端的一个surfaceview的控件之上,故需要将对应的控件id传入pjsip中,在pjsip注册成功后拨打电话,接通后会走到回调函数on_call_media_state中:

IM音视频通信开发(3)--点对点视频实现_第1张图片

 IM音视频通信开发(3)--点对点视频实现_第2张图片

 绑定对应的surfaceview,传入的参数类型是Object。

以下图片是根据pjsip自己的demo中绑定surfaceview改造的代码

 IM音视频通信开发(3)--点对点视频实现_第3张图片

 这样在接通电话之后视频图像信息也会同步的传输过来。

你可能感兴趣的:(IM音视频相关)