libRTMP
文章平均质量分 71
雷霄骅
这个作者很懒,什么都没留下…
展开
-
最简单的基于librtmp的示例:发布(FLV通过RTMP发布)
本文记录一个基于libRTMP的发布流媒体的程序:Simplest libRTMP Send FLV。该程序可以将本地FLV文件发布到RTMP流媒体服务器。是最简单的基于libRTMP的流媒体发布示例。原创 2014-12-26 00:09:33 · 46245 阅读 · 21 评论 -
最简单的基于FFmpeg的推流器(以推送RTMP为例)
本文记录一个最简单的基于FFmpeg的推流器(simplest ffmpeg streamer)。推流器的作用就是将本地的视频数据推送至流媒体服务器。本文记录的推流器,可以将本地的 MOV / AVI / MKV / MP4 / FLV 等格式的媒体文件,通过流媒体协议(例如RTMP,HTTP,UDP,TCP,RTP等等)以直播流的形式推送出去。由于流媒体协议种类繁多,不一一记录。在这里记录将本地原创 2014-10-06 00:35:29 · 305158 阅读 · 161 评论 -
RTMPdump 源代码分析 1: main()函数
rtmpdump 是一个用来处理 RTMP 流媒体的工具包,支持 rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps:// 等。之前在学习RTMP协议的时候,发现没有讲它源代码的,只好自己分析,现在打算把自己学习的成果写出来,可能结果不一定都对,先暂且记录一下。使用RTMPdump下载一个流媒体的大致流程是这样的:RTMP_Ini原创 2013-10-22 20:45:36 · 39783 阅读 · 8 评论 -
RTMPDump(libRTMP)源代码分析 2:解析RTMP地址——RTMP_ParseURL()
之前分析了一下RTMPDump的Main()函数,其中获取RTMP流媒体数据很重要的前提是RTMP的URL的解析。如果没有这一步,那程序在强大也是白搭。现在来解析一下这个函数吧:RTMP_ParseURL()。下面首先回顾一下RTMP的URL的格式:rtmp://localhost/vod/mp4:sample1_1500kbps.f4v“://”之前的是使用的协议类型,可以是原创 2013-10-22 21:04:57 · 22316 阅读 · 0 评论 -
RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据)
前一篇文章分析了RTMPdump(libRTMP) 的发送消息(Message)方面的源代码:RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)在这里在研究研究接收消息(Message)的源代码,接收消息最典型的应用就是接收视音频数据了,因为视频和音频分别都属于RTMP协议规范中的一种消息。在这里主要分析接收视音频数据。RTMPdump中完成视音频数据的接收(原创 2013-10-23 15:46:12 · 15639 阅读 · 12 评论 -
RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
之前写了一系列的文章介绍RTMPDump各种函数。比如怎么建立网络连接(NetConnection),怎么建立网络流(NetStream)之类的,唯独没有介绍这些发送或接收的数据,在底层到底是怎么实现的。本文就是要剖析一下其内部的实现。记这些消息(Message)到底是怎么发送和接收的。原创 2013-10-23 15:03:32 · 20594 阅读 · 8 评论 -
RTMPdump(libRTMP) 源代码分析 3: AMF编码
之前分析了RTMPDump解析RTMP的URL的源代码,在这里简单分析一下其AMF编码方面的源码。AMF编码广泛用于Adobe公司的Flash以及Flex系统中。由于RTMP协议也是Adobe公司的,所以它也使用AMF进行通信。具体AMF是怎么使用的在这里就不做详细讨论了。RTMPDump如果想实现RTMP协议的流媒体的下载保存,就必须可以编码和解码AMF格式的数据。amf.c是RTMPD原创 2013-10-22 21:18:47 · 16061 阅读 · 2 评论 -
RTMPdump(libRTMP) 源代码分析 10: 处理各种消息(Message)
已经连续写了一系列的博客了,其实大部分内容都是去年搞RTMP研究的时候积累的经验,回顾一下过去的知识,其实RTMPdump(libRTMP)主要的功能也都分析的差不多了,现在感觉还需要一些查漏补缺。主要就是它是如何处理各种消息(Message)的这方面还没有研究的特明白,在此需要详细研究一下。再来看一下RTMPdump(libRTMP)的“灵魂”函数RTMP_ClientPacket(),主要原创 2013-10-24 00:24:15 · 12587 阅读 · 5 评论 -
RTMPdump(libRTMP) 源代码分析 7: 建立一个流媒体连接 (NetStream部分 2)
书接上回:RTMPdump 源代码分析 6: 建立一个流媒体连接 (NetStream部分 1)上回说到,有两个函数尤为重要:RTMP_ReadPacket()RTMP_ClientPacket()而且分析了第一个函数。现在我们再来看看第二个函数吧。第二个函数的主要作用是:处理消息(Message),并做出响应。先把带注释的代码贴上://处理接收到的Ch原创 2013-10-23 14:17:40 · 12208 阅读 · 1 评论 -
RTMPdump(libRTMP) 源代码分析 6: 建立一个流媒体连接 (NetStream部分 1)
前文已经分析了 RTMPdump中建立一个NetConnection的过程:RTMPdump 源代码分析 5: 建立一个流媒体连接 (NetConnection部分)多余的话不多说,下面先来看看RTMP_ConnectStream(),该函数主要用于在NetConnection基础上建立一个NetStream。RTMP_ConnectStream()//创建流intRTMP原创 2013-10-23 00:41:04 · 15555 阅读 · 3 评论 -
RTMPdump(libRTMP) 源代码分析 5: 建立一个流媒体连接 (NetConnection部分)
本篇文章分析一下RTMPdump里面的建立一个流媒体连接过程中的函数调用。之前已经简单分析过流媒体链接的建立过程:而且分析过其函数调用过程:RTMPDump源代码分析 0: 主要函数调用分析在这里就不详细叙述了,其实主要是这两个函数:RTMP_Connect()RTMP_ConnectStream()第一个函数用于建立RTMP中的NetConnect原创 2013-10-23 00:15:50 · 18094 阅读 · 13 评论 -
RTMPdump(libRTMP)源代码分析 4: 连接第一步——握手(Hand Shake)
在这里分析一下RTMPdump连接到支持RTMP协议的服务器的第一步:握手(Hand Shake)。RTMP连接的过程曾经分析过:RTMP流媒体播放过程在这里不再细说,分析一下位于handshake.h文件里面实现握手(HandShake)功能的函数:注意:handshake.h里面代码量很大,但是很多代码都是为了处理RTMP的加密版协议的,例如rtmps;因此在这里就不做过多分析了,原创 2013-10-22 22:44:27 · 15457 阅读 · 5 评论 -
最简单的基于librtmp的示例:发布H.264(H.264通过RTMP发布)
本文记录一个基于libRTMP的发布H.264码流的程序。该程序可以将H.264数据发布到RTMP流媒体服务器。目前这个例子还不是很稳定,下一步还有待修改。本程序使用回调函数作为输入,通过自定义的回调函数,可以发送本地的文件或者内存中的数据。函数调用结构图本程序的函数调用结构图如下所示。 整个程序包含3个接口函数:RTMP264_Connect():建立RTMP连接。RTMP264_Send():原创 2014-12-27 00:26:20 · 57849 阅读 · 85 评论 -
最简单的基于librtmp的示例:接收(RTMP保存为FLV)
本文记录一个基于libRTMP的接收流媒体的程序:Simplest libRTMP Receive。该程序可以将RTMP流保存成本地FLV文件。实际上本文记录的程序就是一个“精简”过的RTMPDump。RTMPDump功能比较多,因而其代码比较复杂导致很多初学者不知从何下手。而本文记录的这个程序只保留了RTMPDump中最核心的函数,更加方便新手入门学习libRTMP。 流程图使用librtmp接原创 2014-12-25 00:50:26 · 37293 阅读 · 25 评论 -
RTMPdump 使用说明
RTMPDUMP (1) RTMPDUMP (1)RTMPDump V2.4 2011-07-20 RTMPDUMP (1)名称rtmpdump - RTMP流媒体客户端内容简介rtmpdump -R [ -n的主机名] [ - C端口] [ - L协议] [-S主机:端口] [ -A的应用程序] [ -T tcUrl ] [-P PAGEURL ] [-S swfUr转载 2013-11-06 16:24:29 · 43110 阅读 · 1 评论 -
在FFMPEG中使用libRTMP的经验
FFMPEG在编译的时候可以选择支持RTMP的类库libRTMP。这样ffmpeg就可以支持rtmp://, rtmpt://, rtmpe://, rtmpte://,以及 rtmps://协议了。但是如何使用ffmpeg支持RTMP协议还是有一定的学问的。本文总结一下部分经验。ffmpeg接受一个字符串的输入方式,比如:“rtmp://xxxx live=1 playpath=xxx ...”这种的输入形式,即第一个字符串是rtmp的url,然后加一个空格,然后再附加一些参数。附加的参数的格式形如“p原创 2013-11-06 17:48:30 · 25795 阅读 · 5 评论 -
libRTMP使用说明
名称librtmp − RTMPDump Real-Time Messaging Protocol API库RTMPDump RTMP(librtmp, -lrtmp)简介#include<librtmp/rtmp.h>描述实时流协议(Real-TimeMessaging Protocol,RTMP)是用于互联网上传输视音频数据的网络协议。本API提供了支持RTMP, RTMPT,RTMPE, RTMP RTMPS以及以上几种协议的变种(RTMPTE, RTMPTS)协议所需的大部分客户端功能翻译 2013-11-07 00:25:48 · 56884 阅读 · 5 评论 -
基于RTMP的实时流媒体的QoE分析
Holly French等人在论文《Real Time Video QoE Analysis of RTMP Streams》中,研究了基于RTMP的实时视频的QoE。在此记录一下。 他们的研究结果表明,码率(bitrate)与帧率或者带宽结合,可以相对准确的反映RTMP视频流的QoE。 他们的实验设计如下图所示。分析服务器包含质量分析器以及相应的数据库。web服务器提供了显示视频的页面。Flash流媒体服务器是提供视频源。Flash流媒体服务器和客户端之间有一个网络模拟器,可以模拟网络上的丢包和延时原创 2013-11-11 19:16:03 · 8175 阅读 · 0 评论 -
RTMP流媒体播放过程
本文描述了从打开一个RTMP流媒体到视音频数据开始播放的全过程。注意:RTMP中的逻辑结构RTMP协议规定,播放一个流媒体有两个前提步骤:第一步,建立一个网络连接(NetConnection);第二步,建立一个网络流(NetStream)。其中,网络连接代表服务器端应用程序和客户端之间基础的连通关系。网络流代表了发送多媒体数据的通道。服务器和客户端之间只能建立一个网络连接,但是基于该连接可原创 2013-09-15 11:19:49 · 85756 阅读 · 46 评论 -
RTMPDump源代码分析 0: 主要函数调用分析
rtmpdump 是一个用来处理 RTMP 流媒体的开源工具包,支持 rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://.也提供 Android 版本。最近研究了一下它内部函数调用的关系。下面列出几个主要的函数的调用关系。RTMPDump用于下载RTMP流媒体的函数Download:用于建立网络连接(原创 2013-09-19 01:00:15 · 6091 阅读 · 1 评论 -
Flash Media Live Encoder 使用帮助
翻译了一下Flash Media Live Encoder的帮助内容。Flash Media Live Encoder包含两个工具:•Flash Media Live Encoder GUI(图像化界面)•Flash Media Live Encoder command-line(命令行)关于Flash MediaLive Encoder GUI预览窗口位于上方,包含了输入视频,输出视频,以及音量的预览。预览窗口的上方可以调节窗口的大小。在编码的过程中,如果您同时编码了多个流,您可以翻译 2013-11-24 19:53:48 · 12510 阅读 · 2 评论 -
Red5开发第一步-Hello World
安装好Red5服务器之后,接下来就是测试运行众人皆知的Hello World了。按照教程上一步一步来做,可惜一直没运行起来,老是NetConnection.Connect.Rejected,NetConnection.Connect.Closed,郁闷了半天,最后通过与Red5自带的例子SOSample对比,终于给运行起来了。其过程如下:第一步:把Red5安装目录中doc/template转载 2013-10-09 23:39:58 · 8358 阅读 · 0 评论 -
北广传媒RTMP流媒体服务器漏洞
北广传媒移动电视(http://www.bj-mobiletv.com/)的RTMP流媒体服务器有漏洞该漏洞可以上我们通过他们的服务器向互联网直播视频使用任意可以发布RTMP流媒体的客户端(例如:Adobe Flash Media Encoder,或者自己做一个Flash文件)随便给流媒体起个名字,可以直接Publish到他们的服务器的名字叫“live”的地址上。URL:rtm原创 2013-09-15 11:44:30 · 9945 阅读 · 8 评论 -
XBMC源代码分析 7:视频播放器(dvdplayer)-输入流(以libRTMP为例)
本文我们分析XBMC中视频播放器(dvdplayer)中的输入流部分。由于输入流种类很多,因此以RTMP输入流为例进行分析。XBMC中输入流部分文件目录结构如下图所示。原创 2014-01-10 01:05:43 · 10109 阅读 · 0 评论 -
RTMP规范简单分析
RTMP协议是一个互联网TCP/IP五层体系结构中应用层的协议。RTMP协议中基本的数据单元称为消息(Message)。当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)。1 消息消息是RTMP协议中基本的数据单元。不同种类的消息包含不同的Message Type ID,代表不同的功能。RTMP协议中一共规定了十多种消息类型,分别发挥着不同的作用。例原创 2013-09-14 20:56:45 · 47831 阅读 · 37 评论 -
[总结]RTMP流媒体技术零基础学习方法
本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工程的源代码。看完本文的话应该会对RTMP流媒体技术有比较完整的了解。0.背景知识本章主要介绍一下RTMP流媒体技术都用在了哪里(在这里仅列几个我所知的,其实远比这个多)。说白了就是为了原创 2013-11-18 00:10:34 · 148867 阅读 · 82 评论