rtmpdump命令行详解

本文详细介绍了rtmpdump命令行工具的使用,涵盖网络参数、连接参数、会话参数、安全参数以及杂项设置。通过这些选项,用户可以抓取RTMP协议的流媒体内容并确保安全连接和定制化传输设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rtmpdump使用说明

​ rtmpdump是一个命令行工具,它可以接收通过RTMP协议传输的流媒体内容,并转存下来。

​ rtmpdump的工作原理:首先rtmpdump会连接到指定的RTMP服务器,然后播放给定URL指定的媒体。Url的形式如下:

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

​ 支持rtmp以及其变种协议,也支持安全加密链路以及加密的会话。

命令行语法

  • rtmpdump −r  url
          [ −n  hostname]
          [ −c  port]
          [ −l  protocol]
          [ −S  host:port]
          [ −a  app]
          [ −t  tcUrl]
          [ −p  pageUrl]
          [ −s  swfUrl]
          [ −f  flashVer]
          [ −u  auth]
          [ −C  conndata]
          [ −y  playpath]
          [ −Y]
          [ −v]
          [ −d  subscription]
          [ −e]
          [ −k  skip]
          [ −A  start]
          [ −B  stop]
          [ −b  buffer]
          [ −m  timeout]
          [ −T  key]
          [ −j  JSON]
          [ −w  swfHash]
          [ −x  swfSize]
          [ −W  swfUrl]
          [ −X  swfAge]
          [ −o  output]
          [ −#]
          [ −q]
          [ −V]
          [ −z]

    rtmpdump −h

选项

网络参数

​ 这些选项用于定义如何连接媒体服务器。

–rtmp -r url

​ 指定服务器以及媒体内容的url。

–host -n hostname

​ 指定服务器的主机名,这个参数优先级更高,会覆盖RTMP URL中的主机名。

–port -c port

​ 指定服务器的端口号,这个参数优先级更高,会覆盖RTMP URL中的端口号。

–protocol -l number

​ 指定服务器的协议,这个参数优先级更高,会覆盖RTMP URL中的协议。

​ 可使用的值以及其含义如下:

​ 0 = rtmp

​ 1 = rtmpt

​ 2 = rtmpe

​ 3 = rtmpte

​ 4 = rtmps

​ 5 = rtmpts

–socks -s host:port

​ 指定要使用的SOCKS4代理地址。

连接参数

​ 这些选项用于指定RTMP连接中发送的请求数据包中的内容。如果请求数据包中没有提供正确的值,媒体服务器可能会拒绝连接请求。

–app -a app

​ 指定要连接的媒体服务器上的应用程序,这个参数优先级更高,会覆盖RTMP URL中的app部分。有时候,rtmpdump不能从RTMP URL中自动解析出正确的应用程序名,这时就需要我们使用这个选项明确指定它。

–tcUrl -t url

​ 指定要连接的目标流的URL。默认值为:rtmp[e]😕/host[:port]/app/playpath ,由解析出的各个字段值拼接而成。

–pageUrl -p url

​ 嵌入网页的媒体的URL。默认情况下不发送任何值。

–swfUrl -s url

​ 媒体的SWF播放器的URL。默认情况下不发送任何值。

–flashVer -f version

​ 用于运行SWF播放器的Flash插件的版本。默认为“LUX 10,0,32,18"。

–auth -u string

​ 验证字符串,它会追加到Connect Message的末尾。使用这个选项,实际上将会追加一个布尔值TRUE然后才是这个验证字符串。这个选项只有某些特殊的服务器需要,而且已经被废弃。现在我们使用**–conn -c**选项来替换它。

–conn -c type:data

​ 追加在Connect Message末尾的任意AMF数据。type的取值为:B表示boolean,N表示number,S表示string,O表示object,Z表示null。对于boolean值来说,data的取值必须为:0,1,FALSE,TRUE。同样地,对于object,data必须使用0表示一个对象的结束,1表示一个对象的开始。我们可以命名子对象中的数据项,这是通过在type前加上一个’N’,然后在value之前指定名称来完成的。例如:NB:myFlag:1。这个选项可以多次使用,这样就可以构造出任意的AMF序列,例如:

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

会话参数

​ RTMP发送Connect Message来连接服务器,以下选项在连接成功后起作用。

–playpath -y path

​ 指定要请求的RTMP服务器上媒体流的路径,这个参数优先级更高,会覆盖RTMP URL中的playpath部分。有时候,rtmpdump不能从RTMP URL中自动解析出正确的playpath,这时就需要我们使用这个选项明确指定它。

–playlist -Y

​ 在发送play命令之前发送set_playlist命令。播放列表将只包含当前播放路径。

–live -v

​ 指出当前的媒体流是实时流。在实时流上不能进行resume和seek操作。

–subscribe -d stream

​ 要订阅的实时流或直播流的名称。默认为playpath。

–resume -e

​ 恢复一个未完成的RTMP下载。

–skip -k num

​ 当resume流程中查找最后一个关键帧时跳过的关键帧的数量。如果常规的resume失败时,这个设置可能会有用。默认为0。

–start -A num

​ 从流的num秒处开始传输。本选项对实时流无效。

–stop -B num

​ 在流的num秒处停止传输。

-buffer -b num

​ 设置缓冲时间为num毫秒。默认为36000000。

–timeout -m num

​ 中断时间,当我们在一段时间内没有收到服务器的任何数据,我们就认为与服务器的连接断开了,这个选项用于指定中断的时间。默认为120。

安全参数

​ 这些选型用于处理来自服务器的额外的验证请求。

–token -t key

​ SecureToken Response中要使用的key。当服务器需要一个SecureToken验证时使用。

-jtv -j JSON

​ 被 legacy Justin.tv 服务器使用的JSON token。调用NetStream.Authenticate.UsherToken。

–swfhash -w hexstring

​ 压缩后的SWF文件的SHA256 Hash值。如果服务器使用SWF验证,那么可能需要使用这个选型,另外请查看下面的**–swfVfy选项。请注意,它的值为16进制字符串值。–swfsize**选项总是和这个选项一起配合使用。

–swfsize -x num

​ 压缩后的SWF文件的大小。如果服务器使用SWF验证,那么可能需要使用这个选型,另外请查看下面的**–swfVfy选项。–swfhash**选项总是和这个选项一起配合使用。

–swfVfy -W url

​ 当前媒体的SWF播放器的URL。这个选项替代了以下三个选项:–swfUrl–swfhash和**–swfsize**。当使用这个选项时,会从指定的URL检索SWF播放器,并自动计算其hash值和大小。此外,这些信息会缓存在用户主目录的.swfinfo文件中,因此不需要在每次运行rtmpdump时都检索和重新计算它。swfinfo文件记录URL、获取它的时间、SWF文件的修改时间戳、它的大小和它的Hash。默认情况下,缓存的信息的有效时间为30天。

–swfAge -X days

​ 指定缓存的SWF信息的有效天数,超过这个天数后,将重新检查。当指定为0时表示每次都需要检测SWF URL。注意,如果检查显示SWF文件具有与以前相同的修改时间戳,则不会再次检索该文件。

杂项

–flv -o output

​ 指定输出文件名称。如果名称为 - 或者不指定,流会写到 stdout。

–hashes -#

​ 不使用默认的字节计数,而是使用#来显示流的进度,每个#表示1%进度。

–quiet -q

​ 禁止所有的命令输出,即将Log Level设置为RTMP_LOGCRIT。

–verbose -V

​ 详细的命令输出,即将Log Level设置为RTMP_LOGDEBUG。

–debug -z

​ 全部的命令输出,即将Log Level设置为RTMP_LOGCRIT。此时输出非常冗长,包括所有Message数据包的16进制表示。

–help -

​ 显示rtmpdump的使用用例帮助文档。

退出状态

​ 0:命令行执行成功

​ 1:不可恢复的错误

​ 2:未完成传输,可在后续恢复下载

环境变量

​ HOME:其中必须要包含 .swfinfo 文件的路径,其中包含SWF验证信息的缓存。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值