项目简介
本项目是基于C语言开发的RTMP协议传输工具,涵盖了建立和管理RTMP连接、处理流数据以及记录日志信息等模块。它不仅能作为RTMP下载工具连接服务器下载音视频流,还具备简单的RTMP服务器、代理服务器以及HTTP网关等功能,可用于RTMP流的调试、分析和监控。
项目的主要特性和功能
- RTMP下载:可连接RTMP服务器下载音视频流到本地文件,支持断点续传和显示下载进度。
- RTMP服务器:接收并处理RTMP客户端的连接与播放请求,向客户端发送响应。
- RTMP代理服务器:捕获并保存RTMP流数据,用于监控和分析,可记录未加密数据。
- 线程管理:提供创建新线程功能,支持多线程环境执行不同任务。
- AMF数据处理:实现AMF数据的编码和解码,处理Adobe应用程序使用的数据格式。
- SWF文件哈希处理:生成并缓存SWF文件哈希值,验证文件完整性。
- 日志记录:可设置日志级别、输出位置和回调函数,记录RTMP库日志信息。
- URL解析:从RTMP URL提取协议、主机名、端口号、应用程序路径和播放路径等信息。
- HTTP网关:接受含rtmpdump参数的HTTP请求,连接指定RTMP服务器并返回数据。
安装使用步骤
编译
确保已安装OpenSSL和zlib,也可用GnuTLS或polarssl代替OpenSSL。使用以下命令编译:
- Linux、Unix等:make SYS=posix
- MacOSX:make SYS=darwin
- Windows:make SYS=mingw
若进行交叉编译,使用CROSS_COMPILE
变量,如:
make CROSS_COMPILE=arm-none-linux- INC=-I/my/cross/includes
其他编译选项
- 仅使用rtmpe支持,无rtmps/https支持:
make XDEF=-DNO_SSL
或make CRYPTO=POLARSSL XDEF=-DNO_SSL
- 关闭所有加密支持:
make CRYPTO=
- 关闭共享库的构建:
make SHARED=
使用示例
RTMP下载
运行rtmpdump程序,如:./rtmpdump -r rtmp://server/myapp -y somefile
SWF验证
使用-W (--swfVfy)
选项自动验证,或手动操作:
1. 解压SWF文件:flasm -x file.swf
,获取解压后文件大小用于--swfsize
。
2. 生成哈希值:openssl sha -sha256 -hmac "Genuine Adobe Flash Player 001" file.swf
,用--swfhash
传递哈希值。
连接参数
用--auth
或--conn
选项添加自定义连接参数,如:--conn B:0 --conn S:hello --conn N:3.14159
服务器使用
- rtmpsrv:运行程序获取Flash客户端发往RTMP服务器的所有参数,当前版本解析客户端请求后自动调用rtmpdump。
- rtmpsuck:运行代理服务器,将Flash客户端重定向到运行该服务器的机器,捕获并保存RTMP流数据,可用
-z
选项开启调试日志。 - rtmpgw:作为HTTP网关,接受含rtmpdump参数的HTTP请求,如:
GET /?r=rtmp:%2f%2fserver%2fmyapp&y=somefile HTTP/1.0
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】