rtmpdump 捕获 rtmp视频数据 本地存储为 flv文件

1、rtmpdump相关参考

rtmpdump 实现 flv视频数据的rtmp推流功能
http://blog.csdn.net/ternence_hsu/article/details/58594687

2、rtmpdump 捕获 rtmp视频数据 本地存储为 flv文件

Makefile
#!/bin/sh
INCLUDE = /ternence/test/rtmpdump/
LIB_DIR = /ternence/test/rtmpdump/librtmp/
LDFLAGS = -lrtmp

SRC=rtmp_recv.c

all:$(SRC)
	gcc -g -Wall $(SRC) -o target -I $(INCLUDE) -L $(LIB_DIR)  $(LDFLAGS)

rtmp_recv.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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(buf,0,bufsize);
	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 timeout,default 30s
	rtmp->Link.timeout=10;	

	if(!RTMP_SetupURL(rtmp,RTMP_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(rtmp,NULL)){
		RTMP_Log(RTMP_LOGERROR,"Connect Err\n");
		RTMP_Free(rtmp);
		CleanupSockets();
		return -1;
	}

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

	while(nRead=RTMP_Read(rtmp,buf,bufsize)){
		fwrite(buf,1,nRead,fp);

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

	if(fp)
		fclose(fp);

	if(buf){
		free(buf);
	}

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

http://download.csdn.net/detail/ternence_hsu/9766463

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值