2011年那会儿就开始研究rtmp, 但是后来很快又换了公司转作Android移动浏览器项目,就一直没有机会
继续进行下去.现在因为工作需要,我又重新捡使起来, 继续进行中断了几年的工作.下面记录下我的安装
实录,以备以后参考.
1.从官网
http://rtmpdump.mplayerhq.hu/
下载rtmpdump 2.4源码包
git clone git://git.ffmpeg.org/rtmpdump
cd rtmpdump
为了得到调试信息,这里简单修改一下文件夹rtmpdump和librtmp的Makefile文件,添加-g参数,注意去掉优化参数-O2那项
在rtmpdump的Makefile中的
OPT=-O2
CFLAGS=-Wall
-g $(XCFLAGS) $(INC) $(DEF) $(OPT)
在librtmp的Makefile中的
CFLAGS=-Wall .... -g
2.安装相关依赖类
需要用到的依赖库是zlib, openssl库,使用如下命令安装
sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install zlib1g-dev
可以先查看可用的安装包
sudo apt-cache search openssl
通过阅读Makefile文件,我发现rtmpdump需要引用的动态库如下
-lz -lssl -lcrypto -lrtmp -lpthread
make后会生成4个可执行文件, 分别是rtmpdump,rtmpsvr, rtmpsuck, rtmpgw, 其中pthread直会在rtmpsvr, rtmpsuck, rtmpgw这3个程序中用到.
3.编译安装
make
sudo make install
首先要保证相关库已经成功安装到/usr/local/lib下面
再要保证/usr/local/lib在/etc/ld.so.conf配置文件中,然后
sudo ldconfig
来更新动态库缓存
检查rtmpdump所有依赖库是否都引用成功
ldd rtmpdump
4.打开一个rtmp直播流或者可以点播文件的rtmp服务器
我这里使用srs来提供一个rtmp直播流,参见上篇博文,得到如下直播流地址
rtmp://demo.srs.com:1935/live...vhost...players/demo
为了保证rtmp直播流的有效性,你可以点击"播放RTMP"按钮进行播放来判断.
开启rtmpdump打印模式,在命令行输入如下命令
rtmpdump -r rtmp://demo.srs.com:1935/live...vhost...players/demo -V -z -v -o out.flv
我们将会看到如下rtmp client和server之间交互的打印信息,同时在当前目录下会生成out.flv文件,使用其他的播放器可以播放.
5.rtmpdump命令选项说明
-o 指定输出文件名称
-q 禁止所有的命令行输入
-V Verbose命令输出
-z Debug级别的输出
-h 打印所有的命令行选项
6.gdb调试
为了详细了解rtmp协议,在熟读该协议文档的基础上, 你可以使用gdb来调试交互信息, 同时阅读rtmpdump的源码实现了
参考文献
[1].rtmpdump/librtmp/librtmp.3.html
[2].rtmpdump/rtmpgw.8.html
[3].rtmpdump/rtmpdump.1.html