7 Star 7 Fork 6

Archermind-TI / librtmp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 3.62 KB
一键复制 编辑 原始数据 按行查看 历史
杭迎秋 提交于 2021-09-29 06:48 . 更新文档

librtmp

简介

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

功能

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

集成

在OHOS中集成

  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)

使用说明

OHOS中使用

  1. 连接rtmp url

    RtmpUtil rtmpUtil= new RtmpUtil();
    //第二个参数表示是否是推流,true表示推流,false表示拉流
    rtmpUtil.open("rtmp://your_rtmp_server", false);
  2. 读取/写入 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);
  3. 暂停/恢复

    //参数表示暂停还是恢复,true表示暂停,false表示恢复
    rtmpUtil.pause(true);
  4. 判断是否连接到rtmp服务器

    boolean isConnect = rtmpUtil.isConnected();
  5. 关闭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编译

openssl源码

在linux环境,编译步骤请关注openssl/README

版权和许可信息

1
https://gitee.com/archermind-ti/librtmp.git
git@gitee.com:archermind-ti/librtmp.git
archermind-ti
librtmp
librtmp
master

搜索帮助