博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rtmpdump 捕获 rtmp视频数据 本地存储为 flv文件
阅读量:4200 次
发布时间:2019-05-26

本文共 2070 字,大约阅读时间需要 6 分钟。

1、rtmpdump相关参考

rtmpdump 实现 flv视频数据的rtmp推流功能

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

Makefile
#!/bin/shINCLUDE = /ternence/test/rtmpdump/LIB_DIR = /ternence/test/rtmpdump/librtmp/LDFLAGS = -lrtmpSRC=rtmp_recv.call:$(SRC)	gcc -g -Wall $(SRC) -o target -I $(INCLUDE) -L $(LIB_DIR)  $(LDFLAGS)

rtmp_recv.c

#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(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://befli.baihongyu.com/

你可能感兴趣的文章
SSH中各个框架的作用以及Spring AOP,IOC,DI详解
查看>>
openstack juno 配置vmware(vcenter、vsphere)
查看>>
远程debug调试(eclipse)之openstack windows
查看>>
PAAS平台对比:OpenShift VS CloudFoundry【51CTO调研报告】
查看>>
JAX-RS(java restful实现讲解)(转)
查看>>
Spring MVC与JAX-RS比较与分析
查看>>
openstack官方docker介绍
查看>>
头痛与早餐
查看>>
[转]在ASP.NET 2.0中操作数据::创建一个数据访问层
查看>>
Linux命令之chmod详解
查看>>
【java小程序实战】小程序注销功能实现
查看>>
Java中子类能否继承父类的私有属性和方法
查看>>
JVM内存模型详解
查看>>
(二)Git--工作区和暂存区、管理修改与撤销
查看>>
(七)Git--自定义Git
查看>>
(五)Git--分支管理
查看>>
(四)Git--远程仓库
查看>>
(六) Git--标签管理
查看>>
java中继承,子类是否继承父类的构造函数
查看>>
什么是Spring Cloud ?
查看>>