音视频7安卓硬编推送到rtmp服务器之librtmp导入
目录
音视频7——安卓硬编推送到rtmp服务器之librtmp导入
音视频开发路线:
demo地址:
一.RTMP协议
rtmp协议主要应用在音视频的传输上的一套协议,跟Http、蓝牙等协议一样都是在某种应用状态下的使用规范,rtmp协议由C编写,源码很少,出去RTMPZ之外,常用的还有RTSP,主要应用于安防领域,相比与RTMP他更安全可靠,尽量的去避免产生丢帧等事情的发生,但是连接数量有限,RTMP不会对连接数有要求,广泛应用于直播领域,RTMP协议的实现库下载地址为:
此处直接下载源码即可:
二.AndroidStudio配置NDK开发
AndroidStudio新建Native项目,新版的studio都是使用CMarke来实现NDK的开发,构建好ndk项目后,记得配置ndk路径
如果当前电脑没下载过ndk,先去下载一下
将我们下载好的rtmp源码解压之后得到librtmp目录,将该目录全部添加到cpp文件夹下:
在librtmp目录下新建CMakeLists.txt,将librtmp的源码添加到编译路径中
编写CMake代码,以下代码的目的是将librtmp目录下的.c文件编译成名为 rtmp 的静态库
#关闭ssl验证,不让rtmp进行加密验证
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNO_CRYPTO")
#将后缀名是.c结尾的代码放到 rtmp_source 中
file(GLOB rtmp_source *.c)
#将remp_source的代码 生成 rtmp 静态库
add_library(
rtmp
STATIC
${rtmp_source}
)
在cpp目录下的CMake中将librtmp编译成的rtmp库引入到项目中
cmake_minimum_required(VERSION 3.10.2)
project("rtmpdemo2")
#添指向librtmp文件夹,编译该文件夹下的文件
add_subdirectory(librtmp)
add_library(
native-lib
SHARED
native-lib.cpp)
find_library(
log-lib
log)
target_link_libraries(
native-lib
rtmp #将rtmp添加进来
${log-lib})
好了,到此我们就成功导入了rtmp源码,先导入rtmp:
#include <jni.h>
#include <string>
extern "C" {
#include "librtmp/rtmp.h"
}
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_rtmpdemo2_MainActivity_stringFromJNI(
JNIEnv *env,
jobject /* this */) {
RTMPPacket rtmpPacket;
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}