• 大小: 31KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-04
  • 语言: 其他
  • 标签: RTP  HEVC  H265  

资源简介

1、解析rtpdump文件获取rtp包。 2、将rtp包解为hevc/h265裸流并存为265文件。 资源是一个完整的vs2012工程。 对应的CSDN博文http://blog.csdn.net/andyshengjl/article/details/79330610

资源截图

代码片段和文件信息

#include 
#include 
#include “h265frame.h“
#include “RtpDump.h“
#include “rtpframe.h“
using namespace std;

#pragma comment(lib “shlwapi.lib“)

int main(int argc char* argv[])
{
H265frame *pHevcframe = NULL;
RD_buffer_t rdBuff;
char szInFileName[256] = ““;
char szOutFileName[256] = ““;
FILE *pInFile = NULL;
FILE *pOutFile = NULL;
if(argc<2){
cout << “RD2Hevc rtpdumpfile“ << endl;
return -1;
}

strcpy(szInFileNameargv[1]);
if(strcmp(PathFindExtension(szInFileName)“.rtpdump“)!=0){
cout << “input file error:[filename].rtpdump“ << endl;
return -1;
}

strcpy(szOutFileNameszInFileName);
strcpy(szOutFileName+strlen(szOutFileName)-7“h265“);

pInFile = fopen(szInFileName “rb+“);
if (pInFile == NULL){
cout << “open input file error:“ << szInFileName << endl;
return -1;
}

pOutFile = fopen(szOutFileName“wb“);
if(pOutFile == NULL){
fclose(pInFile);
cout << “open output file error:“ << szInFileName << endl;
return -1;
}

if(RD_header(pInFileNULL1)<0){
fclose(pInFile);
fclose(pOutFile);
cout << “rtpdump file error“ << endl;
return -1;
}

unsigned long ulBeginTS = 0;
unsigned long ulEndTS = 0;
u_char *pPayload = NULL;
int iGoodframe = -1;
pHevcframe = new H265frame();
while(RD_read(pInFile&rdBuff)>0){
RTPframe hevcRtp((const unsigned char *)rdBuff.p.datardBuff.p.hdr.length);
pPayload = hevcRtp.GetPayloadPtr();
cout << “HEVC SQN:“ << hevcRtp.GetSequenceNumber() << “ time:“ << hevcRtp.GetTimestamp() << “ len:“ << rdBuff.p.hdr.length << “ payloadsize:“ << hevcRtp.GetPayloadSize() << “ marker:“ << hevcRtp.GetMarker() << endl;
iGoodframe =  pHevcframe->handleHevcframe(hevcRtp.GetSequenceNumber()hevcRtp.GetTimestamp()hevcRtp.GetPayloadPtr()hevcRtp.GetPayloadSize());
if(iGoodframe<0){
break;
}
if(iGoodframe == 0){
continue;
}
if(ulBeginTS == 0){
ulBeginTS = hevcRtp.GetTimestamp();
}
ulEndTS = hevcRtp.GetTimestamp();
fwrite(pHevcframe->m_buf1pHevcframe->m_buflenpOutFile);
}
cout << “durations: “ << (ulEndTS-ulBeginTS)/90000 << “s\n“;
delete pHevcframe;

fclose(pInFile);
fclose(pOutFile);

return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      76800  2018-02-16 21:59  RD2Hevc\Debug\RD2Hevc.exe

     文件       7179  2018-02-14 22:33  RD2Hevc\h265frame.cxx

     文件       2946  2018-02-16 18:17  RD2Hevc\h265frame.h

     文件       2225  2018-02-16 18:10  RD2Hevc\RD2Hevc.cpp

     文件        880  2018-02-14 22:25  RD2Hevc\RD2Hevc.sln

    ..A..H.     31744  2018-02-16 21:59  RD2Hevc\RD2Hevc.v11.suo

     文件       4340  2018-02-14 22:50  RD2Hevc\RD2Hevc.vcxproj

     文件       1430  2018-02-14 22:45  RD2Hevc\RD2Hevc.vcxproj.filters

     文件        383  2018-02-14 23:38  RD2Hevc\RD2Hevc.vcxproj.user

     文件       3412  2018-02-14 23:42  RD2Hevc\RtpDump.cpp

     文件       3171  2018-02-14 22:48  RD2Hevc\RtpDump.h

     文件       2312  2018-02-14 19:38  RD2Hevc\rtpframe.h

     目录          0  2018-02-16 22:00  RD2Hevc\Debug

     目录          0  2018-02-16 21:59  RD2Hevc

----------- ---------  ---------- -----  ----

               136822                    14


评论

共有 条评论