天天看点

vs2012编译librtmp(20160810)

  1. 新建一个静态库的空项目(动态库也可以)
  2. 将librtmp文件夹下的h和c文件加入到项目中。文件夹外的代码是rtmpdump示例。
  3. 不需要ssl功能,在预处理器加上NO_CRYPTO。
  4. 在rtmp.c文件中,有一个off_t类型,改成long。如果不改需要加头文件。
  5. 找到RTMP_ClientPacket函数,这里面有一些变量定义不在域开头,需要移到前面来
AMFDataType t;
AVal _result;
AMFObject obj;
double tid;
int nRes;
int i,j;
           

这几个移到while的开头。因为这是c文件,语法跟c++不一样。vs2015以后编译器就支持了,不需要修改。该项目本身在linux下也是用的较新的gcc才能编过

6. 在rtmp.c搜一下netstackdump,全部注释掉,共三处

//#ifdef _DEBUG
//extern FILE *netstackdump;
//extern FILE *netstackdump_read;
//#endif

//#ifdef _DEBUG
//      fwrite(ptr, 1, nBytes, netstackdump_read);
//#endif

//#ifdef _DEBUG
//  fwrite(buf, 1, len, netstackdump);
//#endif
           

或者你可以在外面自己实现这两个函数,用来调试的。在外面的rtmpdump代码中应该有。

现在就可以编译成功了。我是在网上查找后,发现都是比较早的针对版本,不能完全解决我的问题,不过总算找到了方法,主要就是第五点都没提到。

ps:其他一些资料提到的zlib,现在是完全不需要的。

继续阅读