|
|
RTSPget -download an RTSP stram
前言:
一个在LINUX下经常被问到问题是"有什么软件能下载RTSP协议的流媒体吗?"现在在Linux好像是没有什么完美的方案.
Mplayer如果可以看RTSP的话可以用mplayer -dumpstream -dumpfile test.rmvb rtsp://test.com/test.rmvb 来保存.
不过这个要在编译的时候加上live.com的支持.那个时候我还不知道有这个选项,因此编译的时候没有加上,GCC换成是
4.0以后好像要打补丁才可以编译mplayer了(在GCC4.0刚出来的时候是这样,不知现在是不是了).用xine也是可以保存这些
流媒体的,就是在地址后面加上 `#save:/path/to/file' ,例如: `xine rtsp://blah/asdf.rm#save:/tmp/asdf.rm' , 不
过有些不行,因为有些会说版权保护不给保存.
下载mms协议的软件有 " mimms " .这个在debian下可以直接apt到!下载rtsp的软件现在在linux还真基本没有吧(谁
知道告诉一声).
说正题:网上还是有个外国hacker写了一个下载rtsp的小软件,是通过调用xine里的rtsp现成代码实现的.下面我来介绍.
原址:http://users.comlab.ox.ac.uk/ian.collier/Misc/rtspget/
https://engineering.purdue.edu/p ... jects/RTSPget/HowTo
第一个地址是原作者的原贴地址,第二个地址是另一个hacker的改进版.英文好的兄弟可以直接去看他们的帖子,
不想看英文的兄弟可以看我下面的内容,我并不是完全地翻译他们的帖子(看原贴请访问上面的地址),而写自己的安装过程.
Notes: (Ian's original notes in italics)
//注.Ian就是原作者的名字吧,下面一段是他的声明.
* 我在最近的一个晚上写了写成了这个程序;它看起来可以工作了,但我不会很积极地去维护它,它也不是一个很好的程序.
我仅仅只是提供它只为了可以用而已.如果它不能工作,那我只能说是运气坏了!
*在你编译这个程序之前你需要configure 你的xine源码(版本不要低于 1-beta4),(你不需要编译全部的xine代码,但为什
么不这样干呢? - 下载完后可以用它来打开你的电影啊! )
*再次声明,这个页面是我提供的唯一的指导,你不能编译它,请你自己去hack.(你如果你真的发现了一个100%的bug你可以
发邮件给我,但我不一定会回复你,并且我不能修正xine里面的代码.)
*xine-lib-1-rc6a是已知的证实能工作的版本(谢谢 Trisk的更新)
//又轮到我来说两句了
rtspget的下载地址:
https://engineering.purdue.edu/p ... tspget-0.0.3.tar.gz
xine的下载地址: (下面版本实验成功)
http://prdownloads.sourceforge.net/xine/xine-lib-1.1.1.tar.gz
编译:
1. 下载rtspget-0.0.3.tar.gz ,同样解压到/path/ ,一会再回来.
下载xine-lib-1.1.1.tar.gz , 解压到/path/ (你想放入的目录) 执行configure && make . 在xine的源码目录
下拷贝编译成功的库文件到你的`rtspget`目录下. 只要src/input/librtsp/.libs/librtsp.a和 src/input/libreal/.libs/libreal.a
文件即可.
2. 现在可以编译rtsp的源文件了. 你还需要访问xine的源码树,执行下面的命令编译:
$gcc -O2 -c -I/path/xine-lib-1.1.1/src/input rtspget.c
$gcc -O2 -c xineutils.c -I/path/xine-lib-1.1.1/src/xine-engine \
-I/path/xine-lib-1.1.1/src/xine-utils
3. 连接成可执行文件并祈祷它可以工作...
$gcc -o rtspget rtspget.o xineutils.o -L/usr/X11R6/lib -lXext -L. -lrtsp -lreal -lxine
使用:
最好的结果,提供一个MRL地址和一个输出的文件名.命令的格式:
-q be quiet
-v be verbose
-o choose the output file name.
如果你没有使用 -o 来指定输出的文件名,程序只会向stdout输出数据,尽管你不想样做.
如果你没有使用-q 参数,你可以看到当前下载的字节数.(这个显示在stderr中).
提醒:
xine中的rtsp代码并不完美,所以你可能会遇到一些问题,注意它并不能工作在big-endian体系的计算机中.
*`-v` 和 `-q` 选项只能控制主程序,并不是rtsp的库.所以你在quiet模式下仍会得到输出信息.而且任何来自
rtsp库的输出信息都会写在stdout上(所以当你把数据流写到stdout时,这些输出信息会成为噪声).
*If the RTSP stream comes to an end, it takes the library a while to realise; however, it will terminate eventually.
(这句我说不出意思,自己体会了)
*到现在为止,我所下载的流媒体在xine下都可以看,但是用Realplayer 8播放却只有黑屏.这就是为什么你需要编译
xine(或者 mplayer)的原因了! :-)
本人比较少发这么长的帖子,英语水平也一般,如果不明白可以提出来或者直接参考原贴.
这个是利用了xine里的rtsp库来下载流的一个小程序.不过现在仍会是问题较多.正如作者所说,成功与否看你运气了!
昨晚试验成功后下载了一个流媒体看,xine和mplayer都没问题,但realplayer 10看不了!也如作者所说的,xine的rtsp库不完美!
rstpget源码里有个makefile文件,它可以原你完成上面的手工操作,前提是你把xine的源码目录改好! 但我没make成功.如果你也一样那就手工操作吧!很快的!:%
我用xine-lib-1.1.1 编译成功,环境是debain sarge ,gcc-4.0 .如果在其它平台都有人成功的话再发到软件版上吧!(这就是先发上这个版上来的原因)
下面附上贴图: |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|