代码拉取完成,页面将自动刷新
Librtmp是用于RTMP流的工具包。 支持所有形式的RTMP,包括rtmp://,rtmpt://,rtmpe://,rtmpte://和rtmps://。
首先在project的build.gradle中添加mavenCentral()仓库
allprojects {
repositories {
mavenCentral()
}
}
在需要使用的module的build.gradle中添加依赖:
implementation 'com.gitee.archermind-ti:rtmpohoslib:1.0.0'
将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)
连接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();
简单示例:
#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;
}
Run
运行即可(真机运行可能需要配置签名)单元测试的运行依赖于rtmp服务器,如果没有rtmp服务器,单元测试将运行失败
如果已有rtmp服务器,请将您的rtmp服务器的推流地址,写在entry/src/ohosTest/RtmpTest
的HOST
属性中,如下:
/**
* 测试前,请先设置HOST字段值
*/
public class RtmpTest {
//此处需要替换为你自己的RTMP服务器地址
private static final String HOST = "这里替换为您的rtmp服务器的推流地址";
在linux环境,编译步骤请关注openssl/README
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。