LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2990|回复: 10

编译下载rtsp协议的小程序!

[复制链接]
发表于 2005-12-26 16:14:02 | 显示全部楼层 |阅读模式
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
发表于 2005-12-27 12:32:40 | 显示全部楼层
红旗的布谷据说可以下Rtsp的,等源代码吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-27 12:43:25 | 显示全部楼层
上面不是提供了源码嘛!
我才知道原来大家对这个不感兴趣!
回复 支持 反对

使用道具 举报

发表于 2006-1-4 16:38:25 | 显示全部楼层
正好这个月我也做了这方面的开发,我做的是协议分析。

刚做了一个对流媒体的协议分析,包括了rtsp协议,用旁路监听的方法抓取数据包后,解析数据包,形成新的文件,包括rm,asf,wmv等文件

  我实现了把rm文件的重现,可以在realone中播放的!
回复 支持 反对

使用道具 举报

发表于 2006-1-5 11:36:46 | 显示全部楼层
8cuo
;)
回复 支持 反对

使用道具 举报

发表于 2008-3-7 14:30:03 | 显示全部楼层
我尝试编译了一下,但是前面都正确,就是最后一步
$gcc -o rtspget rtspget.o xineutils.o -L/usr/X11R6/lib -lXext -L. -lrtsp -lreal -lxine

根本找不到libxine.a这个库,请帮我一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-7 14:42:08 | 显示全部楼层
兄弟也真行啊,四年前的帖子你也找出来啊。
zsdelphi
你是否没有编译libxine.a这个库啊? 如果只是找不到,把这个文件拷贝到/usr/lib/里试试看
回复 支持 反对

使用道具 举报

发表于 2008-3-11 09:14:21 | 显示全部楼层
Post by leros_H;1824120
兄弟也真行啊,四年前的帖子你也找出来啊。
zsdelphi
你是否没有编译libxine.a这个库啊? 如果只是找不到,把这个文件拷贝到/usr/lib/里试试看


这么老的帖子,楼主竟然回了,更加不容易。

现在就是没有这个库,搜索整个 xine-lib-1.1.1\src\xine-engine\.libs 目录,也没有 libxine.a 文件,就是不知道如何把这个库编译出来。
回复 支持 反对

使用道具 举报

发表于 2008-3-11 21:36:00 | 显示全部楼层
还没有做过rtsp,回头自已做次试试
回复 支持 反对

使用道具 举报

发表于 2008-3-12 09:57:23 | 显示全部楼层
楼上做做看看,一起看看

楼主今天没有来啊???
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表