用librtmp 接收数据
来源:互联网 发布:海南跨亚欧网络骗局 编辑:程序博客网 时间:2024/06/05 06:15
使用librtmp 接收RTMP流的流程图如下:
注意用到的函数有:
InitSockets(): 初始化Socket
RTMP_Alloc() :为结构体“RTMP”分配内存
RTMP_Init():初始化结构体“RTMP”中的成员变量
RTMP_SsetupURL(): 设置输入的RTMP连接的URL
RTMP_Connect(): 建立RTMP连接,创建一个RTMP协议规范的NetConnection
RTMP_ConnectStream(): 创建一个RTMP协议规范中的NetStream
RMTP_Read():从服务器读取数据
RTMP_Close():关闭RMTP连接
RTMP_FREE():释放结构体"RTMP",与RTMP_Alloc 对应
CleanupSockets(): 关闭Socket
在编译过程中,需要注意以下几点:
1.把librtmp文件夹拷贝到工程的上一级目录下,即vcxproj文件的上一级目录的位置
【为什么是上一级目录比较好呢?因为这些不属于这个工程的,与该工程是并列的,】
2.在源文件中,把librmtp的cpp加进来
3.这个时候发现找不到openssl的相关东西,把OpenSSL的文件夹拷贝到工程文件的上一级目录,并且在工程属性--》C/C++ --》常规 里面把相关的目录加进来,
同时把其他几个文件夹也拷贝进来:stdint zlib.
所添加的目录如下:
..\OpenSSL-Win32\include;..\stdint;..\zlib\include;
4.这个时候,提示找不到 外部符号
1>rtmp.obj : error LNK2019: 无法解析的外部符号 __imp__closesocket@4,该符号在函数 _RTMPSockBuf_Close 中被引用
此时,要设置lib的路径。
工程属性--》链接器--》
..\OpenSSL-Win32\lib\VC;..\zlib\lib;
需要的lib有
需要的lib有
zlib.lib;ssleay32MT.lib;libeay32MT.lib;Ws2_32.lib;
=================
5.发现zlib的几个文件还没有放到工程里,出现以下错误:
5.发现zlib的几个文件还没有放到工程里,出现以下错误:
1>hashswf.obj : error LNK2019: 无法解析的外部符号 _inflateEnd,该符号在函数 _RTMP_HashSWF 中被引用
1>hashswf.obj : error LNK2019: 无法解析的外部符号 _inflateInit_,该符号在函数 _RTMP_HashSWF 中被引用
1>hashswf.obj : error LNK2019: 无法解析的外部符号 _inflate,该符号在函数 "unsigned int __cdecl swfcrunch(void *,unsigned int,unsigned int,void *)" (?swfcrunch@@YAIPAXII0@Z) 中被引用
1>rtmp.obj : error LNK2001: 无法解析的外部符号 "struct _iobuf * netstackdump_read" (?netstackdump_read@@3PAU_iobuf@@A)
1>rtmp.obj : error LNK2001: 无法解析的外部符号 "struct _iobuf * netstackdump" (?netstackdump@@3PAU_iobuf@@A)
1>F:\rtmp\rtmpCode\rtmpReceive\Debug\rtmpReceive.exe : fatal error LNK1120: 5 个无法解析的外部命令
加进来几个zlib的文件, 3个。 adler32.c crc32.c inflate.c
因为看到inflate,找到这个属于zlib的。
==========================
1>rtmp.obj : error LNK2001: 无法解析的外部符号 "struct _iobuf * netstackdump_read" (?netstackdump_read@@3PAU_iobuf@@A)
1>rtmp.obj : error LNK2001: 无法解析的外部符号 "struct _iobuf * netstackdump" (?netstackdump@@3PAU_iobuf@@A)
根据
http://blog.sina.com.cn/s/blog_62949ff40101efk1.html 这个链接
可以去掉这个netstackdump_read 的定义。
这样可以。
===========================
但是流出不来。
ERROR: Problem accessing the DNS. (addr: live.hkstv.tv.lxdns.com)
DNS 不对
但是用ffmpeg 是可以的。
URL 写错了!!!!!!
正确的是
char *url = "rtmp://live.hkstv.hk.lxdns.com/live/hks";
0 0
- 用librtmp 接收数据
- 关于librtmp接收数据
- 关于librtmp接收数据(接收网络电视的数据流)
- RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据)
- RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据)
- RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据)
- RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据)
- LibRTMP源代码分析9:接收消息
- 使用librtmp推送AVC数据
- LibRTMP源代码分析9:接收消息(Receive Message)
- 使用librtmp接收直播流和点播流并保存
- 使用librtmp接收直播流和点播流并保存
- linux下基于libRTMP的接收流媒体的程序
- H264/ACC数据使用librtmp推流到服务器
- PL SQL 用记录集接收数据
- C# 用HTTP协议发送、接收数据
- 用select接收数据的方法
- 用NSURLSession的delegate实现接收数据
- 欢迎使用CSDN-markdown编辑器
- 11.5 关联容器类
- 11.6 容器适配器
- 网络负载均衡配置说明
- Eclipse中修改SVN用户名和密码方法
- 用librtmp 接收数据
- hydra dvwa brute force password
- 流媒体服务器总结
- okhttp使用
- Oracle开发之分析函数(Rank, Dense_rank, row_number)
- c#复制目录中的文件
- 容易忽视的java知识点
- 主流架构打造社交游戏《谁是卧底》(一)
- JavaScript 基础知识--对象