• 大小: 1KB
    文件类型: .gz
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: 其他
  • 标签: rtmp  rtmpdump  flv  直播  

资源简介

rtmpdump实现rtmp视频拉流存储的demo程序

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include “librtmp/rtmp_sys.h“
#include “librtmp/log.h“

#define SAVE_FILE_NAME  “receive.flv“
#define RTMP_SERVER_URL “rtmp://172.16.1.65:1935/vod/mp4:sample.mp4“

int InitSockets()
{
    /*
WORD version;
WSADATA wsaData;
version = MAKEWORD(1 1);
return (WSAStartup(version &wsaData) == 0);
    */
    return 0;
}


void CleanupSockets()
{
//WSACleanup();
}

int main(int argc char* argv[])
{
InitSockets();

//double duration=-1;
int nRead;
//is live stream ?
int bLiveStream=1;


int bufsize=1024*1024*10;
char *buf=(char*)malloc(bufsize);
memset(buf0bufsize);
long countbufsize=0;

FILE *fp=fopen(SAVE_FILE_NAME“wb“);
if (!fp){
RTMP_LogPrintf(“Open File Error.\n“);
CleanupSockets();
return -1;
}

/* set log level */
//RTMP_LogLevel loglvl=RTMP_LOGDEBUG;
//RTMP_LogSetLevel(loglvl);

RTMP *rtmp=RTMP_Alloc();
RTMP_Init(rtmp);
//set connection timeoutdefault 30s
rtmp->link.timeout=10;

if(!RTMP_SetupURL(rtmpRTMP_SERVER_URL))
{
RTMP_Log(RTMP_LOGERROR“SetupURL Err\n“);
RTMP_Free(rtmp);
CleanupSockets();
return -1;
}
if (bLiveStream){
rtmp->link.lFlags|=RTMP_LF_LIVE;
}

//1hour
RTMP_SetBufferMS(rtmp 3600*1000);

if(!RTMP_Connect(rtmpNULL)){
RTMP_Log(RTMP_LOGERROR“Connect Err\n“);
RTMP_Free(rtmp);
CleanupSockets();
return -1;
}

if(!RTMP_ConnectStream(rtmp0)){
RTMP_Log(RTMP_LOGERROR“ConnectStream Err\n“);
RTMP_Close(rtmp);
RTMP_Free(rtmp);
CleanupSockets();
return -1;
}

while(nRead=RTMP_Read(rtmpbufbufsize)){
fwrite(buf1nReadfp);

countbufsize+=nRead;
RTMP_LogPrintf(“Receive: %5dByte Total: %5.2fkB\n“nReadcountbufsize*1.0/1024);
}

if(fp)
fclose(fp);

if(buf){
free(buf);
}

if(rtmp){
RTMP_Close(rtmp);
RTMP_Free(rtmp);
CleanupSockets();
rtmp=NULL;
}
return 0;
}

评论

共有 条评论