文章目录
- 一、 Java 层传入的 RTMP 推流地址处理
- 二、 RTMPDump 推流线程
- 三、 创建 RTMP 对象
- 四、 初始化 RTMP 对象
- 五、 设置 RTMP 推流地址
- 六、 启用 RTMP 写出功能
- 七、 连接 RTMP 服务器
- 八、 连接 RTMP 流
- 九、 发送 RTMP 数据包
- 十、 断开 RTMP 连接并释放资源
- 十一、 RTMPDump 推流代码
一、 Java 层传入的 RTMP 推流地址处理
1 . Java 传递字符串数据到 JNI : 启动推流时 , Java 层会将 RTMP 推流地址传递给 JNI ;
2 . jstring 类型转为 char* 类型 : 将 Java 字符串转为 C 字符串 ;
代码语言:javascript复制// 获取 Rtmp 推流地址
// 该 pushPathFromJava 引用是局部引用, 超过作用域就无效了
// 局部引用不能跨方法 , 跨线程调用
const char* pushPathFromJava = env->GetStringUTFChars(path, 0);
3 . 局部引用变量处理 : 该转换后的 const char* pushPathFromJava 字符串是局部引用变量 , 不能跨进程 , 跨作用域使用 , 之后的推流操作在独立的线程中使用 , 因此需要将字符串数据在堆内存中存储 ;
代码语言:javascript复制// 获取地址的长度, 加上 '