資源簡介
rtmpdump實(shí)現(xiàn)rtmp視頻拉流存儲(chǔ)的demo程序
代碼片段和文件信息
#include?
#include?
#include?
#include?“l(fā)ibrtmp/rtmp_sys.h“
#include?“l(fā)ibrtmp/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;
}
- 上一篇:玫瑰圖制作教程
- 下一篇:mentohust_0.3.4-1-2_i386
評(píng)論
共有 條評(píng)論