rtmp是常见的一种流媒体协议,它是由Adobe公司提出的一种应用层协议。rtmp传输的是flv格式的封装数据,flv中保存的一般是H.264视频流和AAC音频流。librtmp库实现了rtmp协议的客户端功能,以及少数服务端功能。 librtmp的下载地址:RTMPDump

1、rtmp播放流步骤
1)初始化

RTMP *pRtmp = RTMP_Alloc();
if(pRtmp != NULL)
{RTMP_Init();if(!RTMP_SetupURL(pRtmp,"http://127.0.0.1:1935/live/test")){RTMP_Free(pRtmp);pRtmp = NULL;}
}

2)连接服务器

RTMP_Connect(pRtmp, NULL);

3)是否连接服务器成功

bool bIsConnectedSuccess = false;
if(RTMP_IsConnected(pRtmp) == 0)
{bIsConnectedSuccess  = false;
}
else
{bIsConnectedSuccess = true;
}

4)连接流

bool bSuccess = false;
if(RTMP_ConnectStream(pRtmp,0) == 0)
{bSuccess = false;
}
else
{bSuccess = true;
}

5)读取流
循环调用RTMP_ReadPacket

6)断开流

RTMP_DeleteStream(pRtmp);
RTMP_SendCreateStream(pRtmp);

7)断开服务器

RTMP_Close(pRtmp);

8)反初始化

if(pRtmp != NULL)
{RTMP_Free(pRtmp);pRtmp = NULL;
}

//播放流过程中服务器断开,重连处理。调用ReConnect函数或者RTMP_ReconnectStream函数

bool ReConnect()
{
bool bIsConnected = false;
if(RTMP_IsConnected(pRtmp) == 0)
{RTMP_Close(pRtmp);if(RTMP_SetupURL(pRtmp,"http://127.0.0.1:1935/live/test")){if(RTMP_Connect(pRtmp, NULL)){if(RTMP_ConnectStrream(pRtmp,0)){bool bIsConnected = true;}}}
}return bIsConnected;
}

2、rtmp发布流步骤
1)初始化

RTMP *pRtmp = RTMP_Alloc();
if(pRtmp != NULL)
{RTMP_Init();if(!RTMP_SetupURL(pRtmp,"http://127.0.0.1:1935/live/test")){RTMP_Free(pRtmp);}
else{RTMP_EnableWrite(pRtmp);}
}

2)连接服务器

RTMP_Connect(pRtmp, NULL);

3)是否连接服务器成功

bool bIsConnectedSuccess = false;
if(RTMP_IsConnected(pRtmp) == 0)
{bIsConnectedSuccess  = false;
}
else
{bIsConnectedSuccess = true;
}

4)连接流

bool bSuccess = false;
if(RTMP_ConnectStream(pRtmp,0) == 0)
{bSuccess = false;
}
else
{bSuccess = true;
}

5)写入流
循环调用RTMP_SendPacket

6)断开流

RTMP_DeleteStream(pRtmp);
RTMP_SendCreateStream(pRtmp);

7)断开服务器

RTMP_Close(pRtmp);

8)反初始化

if(pRtmp != NULL)
{RTMP_Free(pRtmp);pRtmp = NULL;
}

//写入流过程中服务器断开,重连处理。调用ReConnect函数或者RTMP_ReconnectStream函数

bool ReConnect()
{
bool bIsConnected = false;
if(RTMP_IsConnected(pRtmp) == 0)
{RTMP_Close(pRtmp);if(RTMP_SetupURL(pRtmp,"http://127.0.0.1:1935/live/test")){RTMP_EnableWrite(pRtmp);if(RTMP_Connect(pRtmp, NULL)){if(RTMP_ConnectStrream(pRtmp,0)){bool bIsConnected = true;}}}
}return bIsConnected;
}

参考资料:
https://blog.csdn.net/qq_34305316/article/details/109401401
https://blog.csdn.net/leixiaohua1020/article/details/42104893
https://blog.csdn.net/leixiaohua1020/article/details/42104945

librtmp使用方法相关推荐

  1. 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群

    作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...

  2. Java面试题大全2021版

    一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...

  3. 1小时学会:最简单的iOS直播推流(十)librtmp使用介绍

    最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!! 源 ...

  4. 【基于libRTMP的流媒体直播之 AAC、H264 推送】

    这段时间在捣腾基于 RTMP 协议的流媒体直播框架,其间参考了众多博主的文章,剩下一些细节问题自行琢磨也算摸索出个门道,现将自己认为比较恼人的 AAC 音频帧的推送和解析.H264 码流的推送和解析以 ...

  5. SRS提供的librtmp

    librtmp是一个客户端库,好像是rtmpdump提供的一个客户端RTMP库. 应用场景 librtmp的主要应用场景包括: 播放RTMP流:譬如rtmpdump,将服务器的流读取后保存为flv文件 ...

  6. 最简单的基于librtmp的示例:发布H.264(H.264通过RTMP发布)

    ===================================================== 最简单的基于libRTMP的示例系列文章列表: 最简单的基于librtmp的示例:接收(RT ...

  7. RTMPdump(libRTMP)源代码分析 4: 连接第一步——握手(Hand Shake)

    ===================================================== RTMPdump(libRTMP) 源代码分析系列文章: RTMPdump 源代码分析 1: ...

  8. librtmp实时消息传输协议(RTMP)库代码浅析

    没事碰到了librtmp库,这个库是ffmpeg的依赖库,用来接收,发布RTMP协议格式的数据. 代码在这里:git clone git://git.ffmpeg.org/rtmpdump 先看一段通 ...

  9. python摄像头推流_树莓派使用python-librtmp实现rtmp推流h264的方法

    目的是能使用Python进行rtmp推流,方便在h264帧里加入弹幕等操作. librtmp使用的是0.3.0,使用树莓派noir官方摄像头适配的. 通过wireshark抓ffmpeg的包一点点改动 ...

最新文章

  1. 零基础该如何系统地自学Python编程?五个阶段带你从小白到大佬
  2. Java设计模式(访问者模式-迭代器模式-观察者模式-中介者模式)
  3. linux系列(六):rmdir命令
  4. 【struts2】struts2配置文件—struts.properties
  5. 获取Extjs文本域中的内容
  6. 图表相同数据会自动合并问题(finereport)
  7. 算法高级(6)-共识(Raft)算法
  8. Bootstrap Page header
  9. 4大华为云“安全镖局”秘密法宝揭秘
  10. JavaWeb练习项目--JEE商城
  11. 点钞机语音怎么打开_这才是华为手机语音助手正确打开方式,远比你想象的要强大很多!...
  12. Ajax学习笔记-get请求参数-3
  13. C语言 矩阵相似度
  14. 【每日爬虫】:生产者与消费者模式爬取王者荣耀壁纸
  15. Android Mars XLog的编译
  16. 经典蓝色横向二级导航栏
  17. 网安刮起东风:360、深信服决战智能化
  18. 用机器学习算法来求取战斗力公式
  19. CSDN 博客已式微?
  20. 最近心血来潮想做黑客

热门文章

  1. Spring定时器的时间表达式
  2. Django—中间件详解
  3. xxl-job分布式任务调度中心部署实践(1)
  4. 针对Unity导出的exe如果提示运行库报错或者系统缺少XX组件的对话框的话。一般解决办法如下:
  5. 基于stc15f2k60s2芯片单片机编程(数码管)
  6. openjudge 1.5.7 奥运奖牌计数
  7. elastic-job 是如何保证分布式环境下任务只有一个实例运行
  8. java ajax同步请求,成都汇智动力-java ajax实现异步同步请求全面详解
  9. 3.数据挖掘——房价项目预测(三)Pandas学习
  10. android刷机工具mac版,Android刷机教程(mac系统)