我正在尝试使用脂to来处理数据包,但是得到了一个"free():无效指针“错误。
#include <stdio.h>
#include <stdlib.h>
#include <librtmp/rtmp.h>
#include <librtmp/log.h>
int main(){
RTMP *r;
RTMPPacket packet;
char uri[] = "rtmp://167.114.171.21:1936/tinyconf app=tinyconf timeout=180000 live=1 conn=S:ROOMNAME swfurl=http://tinychat.com/embed/Tinychat-11.1-1.0.0.0602.swf";
RTMP_LogLevel loglvl=RTMP_LOGDEBUG2;
RTMP_LogSetLevel(loglvl);
r = RTMP_Alloc();
RTMP_Init(r);
RTMP_SetupURL(r, (char*)uri);
RTMP_Connect(r, NULL);
while (RTMP_IsConnected(r)) {
RTMP_ReadPacket(r, &packet);
if (!RTMPPacket_IsReady(&packet))
continue;
RTMP_ClientPacket(r, &packet);
RTMPPacket_Free(&packet);
}
RTMP_Close(r);
RTMP_Free(r);
return 1;
}
下面是日志/回溯跟踪的链接。(因为它很长)
我不知道为什么会发生这种情况,这是我的代码或库本身的问题吗?
发布于 2015-05-06 21:05:04
使用RTMPPacket_Alloc(packet, size);
是有效的,尽管我已经看到其他代码没有使用它(我认为)。总之,这是一个有用的例子。
#include <stdio.h>
#include <stdlib.h>
#include <librtmp/rtmp.h>
#include <librtmp/log.h>
int main(){
RTMP *r;
RTMPPacket packet;
RTMPPacket_Alloc(&packet, 4096);
char uri[] = "rtmp://167.114.171.21:1936/tinyconf app=tinyconf timeout=180000 live=1 conn=S:ROOMNAME swfurl=http://tinychat.com/embed/Tinychat-11.1-1.0.0.0602.swf";
RTMP_LogLevel loglvl=RTMP_LOGDEBUG2;
RTMP_LogSetLevel(loglvl);
r = RTMP_Alloc();
RTMP_Init(r);
RTMP_SetupURL(r, (char*)uri);
RTMP_Connect(r, NULL);
while (RTMP_IsConnected(r)) {
RTMP_ReadPacket(r, &packet);
if (!RTMPPacket_IsReady(&packet))
continue;
RTMP_ClientPacket(r, &packet);
RTMPPacket_Free(&packet);
}
RTMP_Close(r);
RTMP_Free(r);
return 1;
}
https://stackoverflow.com/questions/30068377
复制相似问题