如何抓取rtmp串流影音

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何抓取rtmp串流影音相关的知识,希望对你有一定的参考价值。

参考技术A 网路上许多影音都利用flash player来播放,大部分的原始格式为.flv,如有名的youtube等,若其档案走的协定为http协定,那大部分的软体都可以直接下载,有名的如:Jdownloader、Orbit downloader…,但若走的协定为rtmp,这些软体就没办法下载了,以下介绍如何下载rtmp协定的线上影音,我以中天电视的网站为例(http://www.ctitv.com.tw/drama_video.html ):
操作的逻辑为:先取得影音档案的rtmp url (格式为rtmp://aaa.bbb.ccc./x.flv),再利用rtpdump程式,将线上影音档存到档案中:
1.首先到 http://rtmpdump.mplayerhq.hu/ 下载rtmpdump,这裏我用的是 windows版的rtmpdump 。

2.接著到中天电视的网站,假设我要抓的是沈春华Life Show的影音(http://www.ctitv.com.tw/drama_video_c96.html ),点选要下载的页面。

3.在浏览器中按右键,选择检视原始档,找到url的所在,有的网站会直接列出.flv的位置,有的则是像中天电视一样,给一个.xml档,可以用搜寻(Ctrl+F)关键字的方式,试试.flv或.xml,本例子是找到如下的.xml位置 (http://www.ctitv.com.tw/ctiplayer/a/60192/1/flashvars.xml )。

4.打开上面的xml档案,可以找到rtmp的位置 (rtmp://video.ctitv.com.tw/vod/media/2011/10/31/fb4b76f4-2fb9-4075-b97d-71ef3444d729.flv),用浏览器是无法打开的,这时候就需要rtmpdump来帮忙。

5.先将rtmpdump解到c:\rtmpdump中

6.开启dos视窗到rtmpdump目录中,cd c:\rtmpdump

7.rtmpdump是命令列的程式,使用的方式为 rtmpdump -r rtmp的url -o 输出的档名.flv,本例中使用的命令列是
c:\rtmpdump>rtmpdump -r rtmp://video.ctitv.com.tw/vod/media/2011/10/31/fb4b76f4-2fb9-4075-b97d-71ef3444d729.flv -o saved.flv
可以将要抓的串流档存成saved.flv

8.等抓完就可以看到如下的画面。

9.dir 後,就可以看到存下来的saved.flv,此时就可以用支援flv的播放器来播放了。

如何利用VLC或FFMPEG将HTTP的串流转换成RTMP

参考技术A  这个应用主要是将HTTP的串流(非HLS或DASH)转换成RTMP协议传送到Adobe Flash Media Server或Wowza Media Server的媒体服务器。

  根据维基百科: “Real Time Messaging Protocol (RTMP) was initially a proprietary protocol developed by Macromedia for streaming audio, video and data over the Internet, between a Flash player and a server. Macromedia is now owned by Adobe, which has released an incomplete version of the specification of the protocol for public use.”

  RTMP的协议有以下的参数:

  RTMP: 其原始采用TCP port 1935
  RTMPS: 将RTMP加载到SSL的安全机制,就类似HTTPS。
  RTMPE: 采用Adobe所提供给RTMP所发展的加密版本。
  RTMPT: 在RTMP上加挂he RTMP protocol 封装在HTTP请求中,可以穿越防火墙。这是一个很不错的协议,使用TCP端口80和443绕过公司对防火墙。封装的会话可能携带纯RTMP,RTMPS或RTMPE包内。
  RTMP 串流
  VLC 在 2.0.x版本里可以支持RTMP协议。不过,有些环境却没法执行,例如2.0.2, 2.0.3, 2.0.4, 2.0.6在Windows 2008 Server 64的服务器上确实没法执行。可以开启VLC然后开启网络串流,如“RTMP://aaa.bbb.com:1935/live/串流源“,看看可否开启。主要是VLC 2.0.x采用 ffmpeg/libav的程序库,但是, 有的包装却没法支持。所以必须先做确认。当 librtmp 的支持被启动于 ffmpeg/libav 则RTMPS才可以有功用。

以上是关于如何抓取rtmp串流影音的主要内容,如果未能解决你的问题,请参考以下文章

使用wireshark抓取手机的rtmp推流包

vlc手机版串流地址

[Python爬虫] 之九:Selenium +phantomjs抓取活动行中会议活动(单线程抓取)

android中如何将抓取到的视频流转换为能播放的视频格式?

通过 Java/Actionscript/JavaScript 抓取 URL?

ffmpeg.串流_资料(包含一些vlc)