鸿蒙开源组件——RTMP流的工具包

jacksky
发布于 2021-12-28 17:43
浏览
0收藏

librtmp

简介

Librtmp是用于RTMP流的工具包。 支持所有形式的RTMP,包括rtmp://,rtmpt://,rtmpe://,rtmpte://和rtmps://。

功能

  1. 读取rtmp流
  2. 写入rtmp流

集成

在openharmony中集成

  1. 首先在project的build.gradle中添加mavenCentral()仓库

    allprojects {
        repositories {
            mavenCentral()
        }
    }
  2. 在需要使用的module的build.gradle中添加依赖:
    implementation 'com.gitee.archermind-ti:rtmpohoslib:1.0.0'​

     

在c/c++中集成

librtmp/src/main/cpp/librtmplibrtmp/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;
}

编译说明

  1. 将项目通过git clone 至本地
  2. 使用DevEco Studio 打开该项目,然后等待Gradle 构建完成
  3. 点击Run运行即可(真机运行可能需要配置签名)
单元测试说明
  1. 单元测试的运行依赖于rtmp服务器,如果没有rtmp服务器,单元测试将运行失败

  2. 如果已有rtmp服务器,请将您的rtmp服务器的推流地址,写在entry/src/ohosTest/RtmpTestHOST属性中,如下:

    /**
     * 测试前,请先设置HOST字段值
     */
    public class RtmpTest {
    
        //此处需要替换为你自己的RTMP服务器地址
        private static final String HOST = "这里替换为您的rtmp服务器的推流地址";
openssl编译

版权和许可信息

librtmp-master.zip 9.06M 51次下载
已于2021-12-28 17:43:04修改
收藏
回复
举报
2条回复
按时间正序
/
按时间倒序
mb6256a8af577b7
mb6256a8af577b7

博主你好,博文中”在openharmony中集成“是不是写错了,那个环境应该是harmonyOS的环境吧

回复
2022-7-16 10:50:56
wx667e434964b55
wx667e434964b55

博主您好,请问目前在ArkTS中可以调用该模块吗

回复
2024-7-13 22:30:22
回复
    相关推荐