鸿蒙开源组件——RTMP流的工具包
jacksky
发布于 2021-12-28 17:43
浏览
0收藏
librtmp
简介
Librtmp是用于RTMP流的工具包。 支持所有形式的RTMP,包括rtmp://,rtmpt://,rtmpe://,rtmpte://和rtmps://。
功能
- 读取rtmp流
- 写入rtmp流
集成
在openharmony中集成
-
首先在project的build.gradle中添加mavenCentral()仓库
allprojects { repositories { mavenCentral() } }
- 在需要使用的module的build.gradle中添加依赖:
implementation 'com.gitee.archermind-ti:rtmpohoslib:1.0.0'
在c/c++中集成
将librtmp/src/main/cpp/librtmp
和librtmp/src/main/cpp/ssl
两个目录的文件复制到你的cpp目录,并在你的CMakeLists.txt文件中添加如下内容:
#引入指定目录下的CMakeLists.txt
add_subdirectory(librtmp)
#指定头文件查找路径
include_directories(librtmp)
#链接librtmp,代码可参考如下:
target_link_libraries(rtmp hilog_ndk.z)
使用说明
openharmony中使用
连接rtmp url
RtmpUtil rtmpUtil= new RtmpUtil();
//第二个参数表示是否是推流,true表示推流,false表示拉流
rtmpUtil.open("rtmp://your_rtmp_server", false);
读取/写入 byte[]
//读取
byte[] bytes = new byte[2048];
int result = rtmpUtil.read(bytes, 0, bytes.length);
//写入,这里的byte数组仅作参考
byte[] bytes = new byte[]{'F', 'L', 'V', 0x1, 0x5, 0, 0, 0, 0x9, 0, 0, 0, 0};
int result = rtmpUtil.write(bytes);
暂停/恢复
//参数表示暂停还是恢复,true表示暂停,false表示恢复
rtmpUtil.pause(true);
判断是否连接到rtmp服务器
boolean isConnect = rtmpUtil.isConnected();
关闭rtmp 连接
rtmpUtil.close();
在c/c++中使用
简单示例:
#include <rtmp.h>
//分配一个RTMP
RTMP *rtmp = RTMP_Alloc();
//初始化
RTMP_Init(rtmp);
//定义rtmp服务器地址
const char *url;
//设置RTMP服务器
int result = RTMP_SetupURL(rtmp, (char *) url);
if(result){
//推流需要启用
//开启写入,在connect之前调用
//RTMP_EnableWrite(rtmp);
//连接服务器
result = RTMP_Connect(rtmp, NULL);
if(result){
//连接流
result = RTMP_ConnectStream(rtmp, 0);
if(result){
//推流和拉流分别实现,请参考sample
...
//关闭rtmp流
RTMP_Close(rtmp);
}
}
//清理会话
RTMP_Free(rtmp);
rtmp=nullptr;
}
编译说明
- 将项目通过git clone 至本地
- 使用DevEco Studio 打开该项目,然后等待Gradle 构建完成
- 点击
Run
运行即可(真机运行可能需要配置签名)
单元测试说明
-
单元测试的运行依赖于rtmp服务器,如果没有rtmp服务器,单元测试将运行失败
-
如果已有rtmp服务器,请将您的rtmp服务器的推流地址,写在
entry/src/ohosTest/RtmpTest
的HOST
属性中,如下:/** * 测试前,请先设置HOST字段值 */ public class RtmpTest { //此处需要替换为你自己的RTMP服务器地址 private static final String HOST = "这里替换为您的rtmp服务器的推流地址";
openssl编译
版权和许可信息
librtmp-master.zip 9.06M 51次下载
已于2021-12-28 17:43:04修改
赞
收藏
回复
相关推荐
博主你好,博文中”在openharmony中集成“是不是写错了,那个环境应该是harmonyOS的环境吧
博主您好,请问目前在ArkTS中可以调用该模块吗