`

libRTMP使用说明

    博客分类:
  • RTMP
 
阅读更多

名称

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)协议所需的大部分客户端功能以及少量的服务器功能。尽管Adobe公司已经公布了RTMP协议规范(RTMP specification),但是本工程并不是通过Adobe的协议规范而是通过逆向工程的方式完成的。因此,它的运行方式可能和公布的协议规范有所偏离,但是一般情况下它和Adobe的客户端的运行方式是一模一样的。

RTMPDump 软件包含一个基本的客户端:rtmpdump,一些示例服务器和一个用来提供对RTMP协议进行支持的库(libRTMP)。本页面对libRTMP的函数进行一个概述。 这些函数可以在 -lrtmp 库中找到。其他还有很多函数,但是还没有为这些函数写文档。

基本的操作如下文所述。

RTMP_Alloc() :用于创建一个RTMP会话的句柄。

RTMP_Init():初始化句柄。

RTMP_SetupURL():设置会话的参数。

RTMP_Connect():建立RTMP链接中的网络连接(NetConnection)。

RTMP_ConnectStream():建立RTMP链接中的网络流(NetStream)。

RTMP_Read():读取RTMP流的内容。

客户端可以在调用RTMP_Connect()之前调用RTMP_EnableWrite(),然后在会话开始之后调用RTMP_Write()。

RTMP_Pause():流播放的时候可以用于暂停和继续

RTMP_Seek():改变流播放的位置

RTMP_Read()返回0 字节的时候,代表流已经读取完毕,而后可以调用RTMP_Close()

RTMP_Free():用于清理会话。

所有的数据都使用 FLV 格式进行传输。一个基本的会话需要一个RTMP URL。RTMP URL 格式如下所示:

rtmp[t][e|s]://hostname[:port][/app[/playpath]]

支持普通的,隧道的,以及加密的会话。

其他附加的选项可以在URL的后面添加以空格为间隔符的“key=value”形式的字符串。

选项

网络(Network)参数

这些选项定义了如何连接一个流媒体服务器。

socks=host:port

使用指定SOCKS4代理。

连接(Connection)参数

这些选项定义了RTMP连接(Connect)请求消息的内容。如果没有提供正确的值,流媒体服务器会拒绝连接请求。

app=name

连接到RTMP的应用名,覆盖RTMP URL中的app。有时rtmpdumpURL 无法正确自动解析app名称。这时必须使用该选项。

tcUrl=url

目标流的URL。默认是 rtmp[t][e|s]://host[:port]/app.

pageUrl=url

流媒体所在的网页的URL。默认情况下没有被发送的价值。

swfUrl=url

流媒体使用的SWF播放器的的URL。默认情况下没有被发送的价值。

flashVer=version

swf播放器使用的Flash版本. 默认是"LNX 10,0,32,18"。

conn=type:data

任意AMF数据追加到connect,类型说明,

B 布尔型

N 数字

S 字符串

O 对象

Z 空

对于布尔型必须是0或1作为FALSE或TRUE,

对于对象数据必须以0或1分别作为结束和开始的标制,子对象中数据项前加前缀类型N,并指定值名称,例如:

-C B:1 -C S:authMe -C O:1 -C NN:code:1.23-C NS:flag:ok -C O:0

会话(Session)参数

这些选项在连接成功后生效。

playpath=path

覆盖RTMP URL解析的playpath,rtmpdump有时不能正确解析,通过该选项明确。

playlist=0|1

在play命令之前发生set_playlist命令。否则播放列表将会值包含playpath。

live=0|1

指定媒体是实时流。在实时流中没有恢复和搜索。

subscribe=path

订阅的实时流名称。默认playpath。

start=num

开始到流的秒数(num),实时流无效。

stop=num

停止到流的秒数(num)。

buffer=num

设置缓冲时间,单位毫秒。 默认值36000000。

timeout=num

num秒后没有收到任何数据会话超时,默认值120。

安全(Security)参数

这些选项处理额外的身份验证,来自服务器的请求。

token=key

输入安全令牌响应,如果服务器需要使用安全令牌验证。

jtv=JSON

JSON令牌用于传统Justin.tv服务器 ,调用NetStream.Authenticate.UsherToken。

swfVfy=0|1

swf播放器的URL,此选项将替换所以三个--swfUrl,--swfhash, and --swfsize选项。使用此选项时,swf播放器将从指定URL检索,并自动计算哈希和大小。此外信息缓存在一个swfinfo文件在用户主目录,所以它在每次rtmpdump运行时,并不需要检索和重新计算。swfinfo记录URL,生成时间,修改SWF文件时间,它的大小,它的哈希,默认情况下,缓冲信息用于30天,然后重新检测。

swfAge=days

指定使用缓存的swf信息天数,然后重新检查,使用0为经常检查,如果检查显示swf具有相同的修改时间戳,它不会被再次检索。

例子

RTMP_SetupURL()使用的一个例子字符串:

"rtmp://flashserver:1935/ondemand/thefile swfUrl=http://flashserver/player.swfswfVfy=1"

参见

rtmpdump(1),rtmpgw(8)

作者

Andrej Stepanchuk, Howard Chu,The Flvstreamer Team

http://rtmpdump.mplayerhq.hu

 

翻译的有的地方还不是很通顺,以后再改进

原文地址:http://rtmpdump.mplayerhq.hu/librtmp.3.html

 

分享到:
评论

相关推荐

    librtmp zlib openssl源码 编译方法 编译工具 编译好的librtmp.lib合集.zip

    librtmp.lib是静态链接库,它将库的功能打包进最终的可执行文件中,便于分发和使用,但可能导致文件体积增大。librtmp.dll是动态链接库,程序运行时需要此文件才能加载库功能,可以减少应用程序的大小,但需要确保...

    librtmp静态库-不含ssl-仅支持rtmp-适合调试用

    API文档将提供详细的函数说明,帮助你理解和使用这些功能。例如,`RTMP_Alloc()`用于创建一个新的RTMP实例,`RTMP_SetupURL()`设置服务器的URL,`RTMP_Connect()`建立连接,`RTMP_SendPacket()`发送数据,最后使用`...

    librtmp VS2012 编译工程打包

    5. 创建一个README文件,说明如何使用这些文件,包括如何添加到新项目、必要的配置和编译注意事项。 五、使用打包后的librtmp 在新的VS2012项目中,引入librtmp库的步骤如下: 1. 将打包好的librtmp库文件和头文件...

    java+C++实现基于MediaCodec与srs-librtmp的Android Rtmp播放器,不依赖ffmpeg+源码

    java+openGL+C++实现基于MediaCodec与srs-librtmp的Android Rtmp播放器,不依赖ffmpeg+源码+项目文档+使用说明,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ ...

    在linux系统下安装python librtmp包的实现方法

    如果出现“ImportError: librtmp.so.1: cannot open shared object file: No such file or directory”的错误,说明还需要设置库的链接路径。可以通过以下方式解决: ``` find / -name librtmp.so.1 cp /usr/...

    librtmp-example:一些展示 LibRTMP 用法的例子

    "librtmp-example"是一个示例项目,包含了演示如何使用LibRTMP库的各种代码片段和实例。 在这个`librtmp-example-master`压缩包中,你可能会找到以下内容: 1. **源代码文件**:这些文件展示了如何初始化RTMP连接...

    librtmp学习

    整合别人的说明,自己下载的一些文件

    simplestLibrtmpExample.zip

    4. "readme.txt" 文件通常包含了项目的简要说明和使用指南,对于理解示例的运行和配置至关重要。 5. "Debug" 目录包含了编译后的可执行文件和相关的调试信息。 6. "simplest_librtmp_send_flv" 和 "simplest_librtmp...

    内存H264+PCM发布rtmp.rar

    在`readme`文档中,可能会包含如何编译和运行这个程序的说明,以及任何特定的配置或使用注意事项。为了充分利用这些源代码,你需要对FFmpeg有一定的了解,并具备C++编程能力。如果你打算部署这样的系统,还需要确保...

    SRS流媒体播放服务器源码

    SRS是国人开发的流媒体播放服务器, SRS的文档非常齐全,特别是wiki里面的各种说明,基本可以满足基础的需要。 SRS比我想的要强大的多,已经不像一款出于兴趣的开源产品,很多功能齐备的商业化产品所需要的功能几乎...

    libyuv 直播推流使用 防止丢失

    `AUTHORS` 文件记录了项目的贡献者,`README.chromium` 可能包含项目在 Chromium 项目中的使用说明,`.clang-format` 是代码格式化规则,`.gitignore` 定义了 Git 忽略的文件,`libyuv.gni` 是构建脚本,进一步细化...

    android开发rtmp直播推流源代码

    在Android开发中,我们通常使用开源库如librtmp或ijkplayer来实现RTMP推流。 1. **RTMP推流原理**: - 数据编码:音视频数据需要经过编码处理,常见的视频编码器有x264,音频编码器有AAC。 - 封装格式:编码后的...

    提供弹幕发送者查询、视频封面提取、BV号转AV号、获取直播视频流及日文注音等功能.zip

    开发者需要理解网络传输原理,以及如何使用相关库(如librtmp)与服务器建立连接,获取并播放直播流。 5. 日文注音(假名标注):日文注音是指在汉字上标注对应的平假名或片假名,帮助非母语者阅读。在编程实现中,...

    curl编译问题.rar

    在提供的压缩包中,可能包含了编译日志、错误信息以及一些说明文档。这些资料可以帮助你诊断问题,比如查看配置和编译过程的输出,找出导致编译失败的原因。如果你遇到的是一个已知问题,可能已经有人在网上分享了...

    KSYLiveiOSSDK:ksy视频流直播sdk

    KSYLiveSDK for iOS使用指南##SDK说明KSYLiveSDK for iOS(以下简称SDK)是基于RTMP的推流器###运行环境本SDK由SDK+真机进行开发,demo也只能在真机上运行,主要利用CocoaTouch官方的AVAssertWriter系列方法进行音...

    ffmpeg编译支持h265的rtmp协议 Windows版本

    你可以从它们的官方网站下载源代码,然后按照各自的编译说明进行编译安装。 4. **配置FFmpeg**:进入FFmpeg目录,运行`configure`脚本来配置编译选项。为了支持H265和RTMP,你需要包含相应的编译标志: ``` ./...

    android屏幕录制以及rtmp推流

    在Android上实现RTMP推流,我们需要使用支持RTMP的库,如librtmp或者开源的ijkplayer。这些库可以帮助我们将录制的视频流推送到支持RTMP的服务器,如Wowza、Nginx或Adobe Flash Media Server。在代码中,我们需要...

    基于RTMP直播技术的IP摄像头

    以下是相关知识点的详细说明: 1. RTMP直播技术原理 RTMP是一种支持在Flash/AIR平台和服务器之间实现实时通信的协议,广泛应用于流媒体传输。它使用TCP套接字,并在端口1935上进行数据传输。RTMP是为低延时、高质量...

    Android高级应用源码-Red5+Android 直播系统的架构服务端的直播流工程.zip

    这个源码可能包含了用于处理这些任务的类库,如Android MediaCodec用于硬件编码,以及如librtmp或ijkplayer这样的第三方库进行推流和播放。 3. **直播流处理**:直播流工程涉及到的关键技术包括音视频的采集、编码...

    Hi3516ev300+imx335开发板Qyerp-OpenHiMini-master20210325_0936.zip

    说明: 对应开发版地址: ├───────────── https://item.taobao.com/item.htm?ft=t&id=619546119474 ├───────────── 购买开发板的可以提供整套解决方案支持 ├───────────── ...

Global site tag (gtag.js) - Google Analytics