★怎样下载基于rtmp协议的网络在线视频?★

★怎样下载基于rtmp协议的网络在线视频?★,第1张

1唯影视频下载器支持下载使用HTTP、RTMP、RTMPT、RTMPTE等协议的在线视频。

硕鼠最新内测版已经可以支持rtmp协议了,不过首先开放的rtmp解析的站点就cntv和搜狐两家。

还有一个CCTV/CNTV视频下载器(xmlbar),它支持下载CNTV网站中采用rtmp协议以流媒体方式播放的视频。

而比较流行的维棠、迅雷则都不支持rtmp协议。

2关于rtmp :

这里所说的 rtmp 全称是 real time messaging protocol(实时消息传送协议)。

两种协议HTTP和RTMP,有点点不同:

用HTTP方式:先通过IIS 将FLV下载到本地缓存,然后再通过NetConnection的本地连接来播放这个FLV,这种方法是播放本地的视频,并不是播放服务器的视频。因此在本地缓存里可以找到这个FLV。其优点就是服务器下载完这个FLV,服务器就没有消耗了,节省服务器消耗。其缺点就是FLV会缓存在客户端,对FLV的保密性不好。

用RTMP方式:通过NetConnection连接到FMS/Red5服务器,并实时播放服务器的FLV文件,这种方式可以任意选择视频播放点(SEEK()),并不象HTTP方式需要缓存完整个FLV文件到本地才可以任意选择播放点,其优点就是在本地缓存里是找不到这个FLV文件的。其优点就是FLV不会缓存在客户端,FLV的保密性好,其缺点就是消耗服务器资源,连接始终是实时的。

一句话,HTTP方式是本地播放,RTMP方式是服务器实时播放,因需而定。

是通过RTMP直播推送SDK的编码后数据输入接口,把回调上来的数据,传给RTMP直播推送模块,实现RTSP数据流到RTMP服务器的转发。根据相关资料查询显示,海康威视是以视频为核心的智能物联网解决方案和大数据服务提供商,其产品和解决方案应用到全球150多个国家和地区。

遇到一个问题,FMS与WOWZA中如何使用RTMPE加密协议。

  Wowza作为一个Media Delivery System,它要起很重要的作用。一直在摸索如何保证文件不会被下载。RTMP协议肯定是不行的。然后我就把目光放到了RTMP协议的众多变体上。

首 先是RTMPT协议,用HTTP协议封装的RTMP协议。不知道怎么回事,服务器似乎不能很好的接受RTMPT协议,不知道是设置问题还是别的什么。而且 在Wowza官方论坛上,Wowza的开发者也不建议使用RTMPT协议,因为它需要500ms轮询一次,而且服务器的CPU开销(协议封装需要消耗 CPU)和带宽开销(封装成HTTP协议时需要额外内容)都比较大,唯一的优点就只有可以突破带有协议扫描的防火墙。

然后就是RTMPS和RTMPE。前者是用SSL协议加密的,后者是Adobe自己的128位加密算法。Wowza和Adobe都推荐后者,因为使用简单无需设置。而RTMPS需要设置证书等比较复杂的设置,而且安全性据说也不比RTMPE协议高。

最后就是RTMPTS和RTMPTE协议,看名字也知道是怎么回事了。

最后我选择了RTMPE协议,简单就是美。

接 下来的问题是如何屏蔽RTMP协议。不像Red5和Adobe Flash Media Server那样可以通过修改端口来简单的屏蔽,Wowza的RTMP,RTMPE,RTMPT协议是捆绑在一个端口上的。因为这个问题我甚至一度放弃了 Wowza而改用Adobe Flash Media Interactive Server,不过怎么都读取不到内容。

仔细研究了一下Wowza的论坛,发现原来官方发布过一个源码可以只使用RTMPE,RTMPS,RTMPTS这一类加密的协议。然后自然就是下载Wowza IDE,建了个工程,把代码粘贴进去,保存后再把自动生成的jar文件复制到服务器上。然后把applicationxml文件修改一下,大功告成!

这样设置后如果尝试使用RTMP协议,会提示拒绝连接,要求加密。而且现有的所有下载工具都不能下载RTMPE协议。连网址变换都可以不用做了。

不得不赞叹一下Wowza的接口,确实很强大,而且是Java的。虽然FMIS也有接口,不过ActionScript语言毕竟是门冷门语言。

附上链接:http://wwwcuplayercom/player/PlayerCode/Wowza/2015/1230/2212html

  这个应用主要是将HTTP的串流转换成RTMP协议传送到Adobe Flash Media Server或Wowza Media Server的媒体服务器。

  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 在 20x版本里可以支持RTMP协议。不过,有些环境却没法执行,例如202, 203, 204, 206在Windows 2008 Server 64的服务器上确实没法执行。可以开启VLC然后开启网络串流,如“RTMP://aaabbbcom:1935/live/串流源“,看看可否开 启。主要是VLC 20x采用 ffmpeg/libav的程序库,但是, 有的包装却没法支持。所以必须先做确认。当 librtmp 的支持被启动于 ffmpeg/libav 则RTMPS才可以有功用。

  VLC和RTMP的情形主要是用来捕获和转码应用程序生成一个单一的流。是通过另一个应用程序分配给多个客户端。这在Wowza是非常重要的。虽然,Wowza也支持VLC采用UDP/RTP/RTSP方式接收串流,但是,很多情况下是很不稳定的。

  LC直接连接到一个的RTMP串流,如WOWZA,不听传入的请求。因此,它是不可能的,以查看的RTMP流直接从VLC。您需要连接到WOWZA,观看流。这是可以用VLC做到的:

  $ vlc rtmp://rtmpservercom:1935/path/to/stream

  有件事必须提醒的。从VLC将RTMP串流传送给Wowza服务器并不是都很稳定的。有一些时间关系的“虫”会造成Wowza关闭连线。 这样的问题都是与“音频”与”视频“时间戳(Timestamp)有关系的。采用“audio-desync” 选项来整合RTMP也不是个好点子,但是, 可以不断调整与修改。

  Webcam RTMP streaming

  以下是有关webcam的应用。其他的有采集装置、设备、视频文档等应用。

  Windows 的范例

  在windows的采集装置都是利用DirectShow这个界面的。在VLC的模块也是用这样的界面,成为“DirectShow“或”dshow”。以下是范例:

  $ vlc dshow://"" --sout '#transcode{vcodec=h264,vb=300,fps=25,scale=1,acodec=mp4a,

  ab=64,channels=2}:std{access=rtmp,mux=ffmpeg{mux=flv},dst=rtmp://rtmpservercom:1935/path/to/stream}'

  DirectShow选项也可在QT界面里采用

  Linux 的范例

  通常在Linux的采集装置上都是采用“video for linux” (v4l2)这个界面。使用指令方式来采集webcam装置(或称为”v4l2 装置”)送出RTMP串流的范例如下:

  $ vlc v4l2:// --v4l2-fps=25 --sout '#transcode{vcodec=h264,vb=300,fps=25,scale=1,

  acodec=mp4a,ab=64,channels=2}:std{access=rtmp,mux=ffmpeg{mux=flv},dst=rtmp://rtmpservercom:1935/path/to/stream}'

  这个例子可以自动侦测 v4l2 装置并且选择第一个装置来采集讯号。其他的参数选项如视频标准(PAL, NTSC)、Chroma、宽度、长度等等可以自行设置。必须要注意的是,这些参数设置跟本身的设备有关。 当我门使用debug模式 (-vvv),VLC自身的video for linux (v4l2) 模块会显示出执行时所出现的数值讯息。v4l2 模块提供以下可作为优化的选项:

  –v4l2-dev=: 指定所要采集的特定装置

  –v4l2-standard=: 使用哪种视频标准,例如: SECAM, PAL, NTSC and more

  –v4l2-width=: 视频呈现的宽度(in pixels)

  –v4l2-height=: 视频呈现的长度度(in pixels)

  以上是描述有关v4l2的参数选项。完整的v4l2模块讯息,可以利用下面的指令查询。

  $ vlc -H -p v4l2 --advanced

  以下是另一个将http串流转码(transcode)到RTMP给Adobe Flash Media Server或Wowza Media Server等视频服务器

  cvlc -I dummy http。//orginalstreamIPaddress:50014 --sout-mux-caching=5000

  --sout='#transcode{venc=x264{keyint=60},vcodec=h264,vb=800}:std{access=rtmp,

  mux=ffmpeg{mux=flv},dst=rtmp。//destinationIPaddress:1935/live/StreamFile}}' &

  这是用ffmpeg的方法:

  ffmpeg -i http。//OriginalIPAddress:50010 -vcodec libx264 -vb 800k

  -acodec libfaac -ab 64k -f flv rtmp。//DestinationIPAddress:1935/live/StreamFile

推流到Nginx的时候,推流地址是指向appname的,每路流是根据streamname来保证原子性的,所以当有两路流的时候,更改推流地址的streamname即可保证流的原子性。

PS:

推流地址为rtmp://localhost:1935/appname/streamname

rtmp的视频流使用video-js插件即可直接播放。

rtsp的视频流无法直接在浏览器端播放,http的视频流工作中需要播放格式为mjpeg的视频流,所以,也无法直接播放。

通过使用插件vlc可以使以上两类视频流直接播放,即在电脑上安装vlc插件,播放视频时打开该插件,并且播放时浏览器版本不可使用新版本的,我使用的是chrom 300可以正常播放这两类视频。

如果有用户名密码,可以在协议后方加入。

但由于使用插件及浏览器版本限制,这种方式并不是首选,只能用作备用。

rtsp视频流播放可以依据下方链接, 搭建nginx服务器 ,将rtsp流转成rtmp流后进行播放。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » ★怎样下载基于rtmp协议的网络在线视频?★

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情