如何保存这个 RTMP Flash 视频流?

4

我妹妹想让我保存http://esewingworkshop.com/video-lesson/overview-zipper-typesflash视频和其他一些内容以便离线观看,并问我如何保存它。

我立即在Firefox中启用了Firebug,但令人惊讶的是视频源不在请求中。http://hwcdn.net/m7n9i8d5/fms/videos/5_Standard_Zipper/B_Overview_of_Zipper_Types.flv.smil是最后一个被请求的内容。响应为:

<smil>
<head>
<meta base="rtmp://fms006.lo1.hwcdn.net/m7n9i8d5/_definst_">
</head>
<body>
<video
src="fms/videos/5_Standard_Zipper/B_Overview_of_Zipper_Types?doppl=965d6485db1d06d2&dopsig=867922856d781b57521a1dd3f7c28c5b"></video>
</body>
</smil>

所以,它使用rtmp流媒体传输协议。我试图找出该流的来源。我使用“wireshark”分析了流量并跟踪了TCP流。
POST http://fms006.lo1.hwcdn.net/fcs/ident2 HTTP/1.1
Content-Type: application/x-fcs
User-Agent: Shockwave Flash
Host: fms035.lo1.hwcdn.net
Content-Length: 1
Proxy-Connection: Keep-Alive
Pragma: no-cache

HTTP/1.1 200 OK
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 14
Server: FlashCom/3.5.5
Content-Type: text/plain
209.197.11.150POST http://209.197.11.219/open/1 HTTP/1.1 Content-Type: application/x-fcs User-Agent: Shockwave Flash Host: 209.197.11.219 Content-Length: 1 Proxy-Connection: Keep-Alive Pragma: no-cache HTTP/1.1 200 OK Cache-Control: no-cache Connection: Keep-Alive Content-Length: 17 Server: FlashCom/3.5.5 Content-Type: application/x-fcs
Wubmcmj7Q1T-6Tic POST http://209.197.11.219/idle/Wubmcmj7Q1T-6Tic/0 HTTP/1.1 Content-Type: application/x-fcs User-Agent: Shockwave Flash Host: 209.197.11.219 Content-Length: 1 Proxy-Connection: Keep-Alive Pragma: no-cache HTTP/1.1 200 OK Cache-Control: no-cache Connection: Keep-Alive Content-Length: 1 Server: FlashCom/3.5.5 Content-Type: application/x-fcs
POST http://209.197.11.219/send/Wubmcmj7Q1T-6Tic/1 HTTP/1.1 Content-Type: application/x-fcs User-Agent: Shockwave Flash Host: 209.197.11.219 Content-Length: 1537 Proxy-Connection: Keep-Alive Pragma: no-cache HTTP/1.1 200 OK Cache-Control: no-cache Connection: Keep-Alive Content-Length: 3074 Server: FlashCom/3.5.5 Content-Type: application/x-fcs
这些是由Shockwave Flash播放器(plugin-containter.exe)依次发出的HTTP POST请求。
http://fms006.lo1.hwcdn.net/fcs/ident2
http://209.197.11.150/open/1
http://209.197.11.150/idle/2BZmcmj6mhTWexFa/0
http://209.197.11.150/send/2BZmcmj6mhTWexFa/1
http://209.197.11.150/send/2BZmcmj6mhTWexFa/2
http://209.197.11.150/idle/2BZmcmj6mhTWexFa/3
http://209.197.11.150/send/2BZmcmj6mhTWexFa/4
http://209.197.11.150/send/2BZmcmj6mhTWexFa/5
http://209.197.11.150/idle/2BZmcmj6mhTWexFa/6
_直到 /407..._

我不理解。我有点困惑关于这个通信是如何进行的?我无法找到视频源。据我了解,从SMIL请求(由浏览器发起)获取服务器地址,然后ShockwavePlayer接管通信,这些HTTP POST请求的响应是分块的视频。

但是它如何识别要获取哪个视频?RTMP在哪里?URL是什么?我该如何下载它?


如果你正在使用Linux,视频文件会在/tmp文件夹中保存,只要它正在播放。它的名称类似于Flash*,其中其余的字符是随机的。 - mhitza
2个回答

2

我不知道这个问题与编程有什么关联,但是让我来回答一下:

  • 如何/在哪里?

    在SMIL文件中,您可以看到base和视频源。因此完整的URL(可能受保护)如下:

    rtmp://fms006.lo1.hwcdn.net/m7n9i8d5/_definst_fms/videos/5_Standard_Zipper/B_Overview_of_Zipper_Types?doppl=965d6485db1d06d2&dopsig=867922856d781b57521a1dd3f7c28c5b

  • RTMP在哪里?

    我不确定你在问什么。 SMIL明确引用了RTMP流URL。

  • 如何下载?

    最好的方法可能是尝试使用任何数量的第三方工具,通过各种机制捕获HTTP / RTMP流。

虽然你没有问(而且这个问题似乎与编程无关),但是许多网站会不允许未经许可下载他们的内容。


-1
rtmpdump -r rtmp://fms.484C.edgecastcdn.net/00484C/videos/5_Standard_Zipper \ -a 00484C/videos/5_Standard_Zipper -y B_Overview_of_Zipper_Types \ -W http://esewingworkshop.com/sites/default/libraries/mediaplayer-5/player_5.6.swf \ -o a.flv RTMPDump v2.4-84-gdd57cd0 (c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL 连接中... 信息: 已连接... 开始下载: 0.000 kB [...] 10780.451 kB / 241.50 秒 (99.9%) 下载完成

2
我在想这怎么可能是被接受的答案。它没有解释任何关于SMIL或RTMP的内容...只有一个带有一堆常量(如“00484C”)的命令,这些常量在OP发布的原始请求中并不存在。 - David Costa
2
我的意思是答案非常狭窄,只回答了问题的前三行。你在找到流和参数方面做得很好,但没有办法理解如何达到相同的结果。我认为这个问题非常具体,接受的答案甚至更加具体,所以没有理由让它留在SO上。 - David Costa
2
@DavidCosta 这个问题被点赞了3次,这意味着有3个人认为这个问题应该保留,而我的答案被接受了,这意味着有一个人认为这个答案应该保留。如果你不喜欢它们,那么请使用可用的标记工具。 - Zombo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接