# librtmp **Repository Path**: archermind-ti/librtmp ## Basic Information - **Project Name**: librtmp - **Description**: Librtmp是用于RTMP流的工具包。 支持所有形式的RTMP,包括rtmp://,rtmpt://,rtmpe://,rtmpte://和rtmps://。 本库针对openharmony编译。 - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 7 - **Created**: 2021-04-28 - **Last Updated**: 2025-07-23 ## Categories & Tags **Categories**: harmonyos-multimedia **Tags**: None ## README ## librtmp ### 简介 Librtmp是用于RTMP流的工具包。 支持所有形式的RTMP,包括rtmp://,rtmpt://,rtmpe://,rtmpte://和rtmps://。 ### 功能 1. 读取rtmp流 2. 写入rtmp流 ### 集成 #### 在OHOS中集成 1. 首先在project的build.gradle中添加mavenCentral()仓库 ```groovy allprojects { repositories { mavenCentral() } } ``` 2. 在需要使用的module的build.gradle中添加依赖: ```groovy implementation 'com.gitee.archermind-ti:rtmpohoslib:1.0.0' ``` #### 在c/c++中集成 将`librtmp/src/main/cpp/librtmp`和`librtmp/src/main/cpp/ssl`两个目录的文件复制到你的cpp目录,并在你的CMakeLists.txt文件中添加如下内容: ```cmake #引入指定目录下的CMakeLists.txt add_subdirectory(librtmp) #指定头文件查找路径 include_directories(librtmp) #链接librtmp,代码可参考如下: target_link_libraries(rtmp hilog_ndk.z) ``` ### 使用说明 #### OHOS中使用 1. 连接rtmp url ```java RtmpUtil rtmpUtil= new RtmpUtil(); //第二个参数表示是否是推流,true表示推流,false表示拉流 rtmpUtil.open("rtmp://your_rtmp_server", false); ``` 2. 读取/写入 byte[] ```java //读取 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. 暂停/恢复 ```java //参数表示暂停还是恢复,true表示暂停,false表示恢复 rtmpUtil.pause(true); ``` 4. 判断是否连接到rtmp服务器 ```java boolean isConnect = rtmpUtil.isConnected(); ``` 5. 关闭rtmp 连接 ```java rtmpUtil.close(); ``` #### 在c/c++中使用 请查阅[官方文档](http://rtmpdump.mplayerhq.hu/librtmp.3.html),[中文翻译文档](https://blog.csdn.net/leixiaohua1020/article/details/14229543) 简单示例: ```c++ #include //分配一个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/RtmpTest`的`HOST`属性中,如下: ```java /** * 测试前,请先设置HOST字段值 */ public class RtmpTest { //此处需要替换为你自己的RTMP服务器地址 private static final String HOST = "这里替换为您的rtmp服务器的推流地址"; ``` ##### openssl编译 [openssl源码](openssl) 在linux环境,编译步骤请关注[openssl/README](openssl/README) ### 版权和许可信息 * [GPL-2.0 License](LICENSE)