91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

基于CS結(jié)構(gòu),發(fā)送端對H264編碼的視屏文件進(jìn)行rtp打包發(fā)送至接收端,接收端在進(jìn)行逆向rtp組包,并保存為本地文件。

資源截圖

代碼片段和文件信息

#include?“h264.h“

FILE?*?poutfile?=??NULL;
char?*?outputfilename?=?“..\\H264_STREAM\\receive.264“;

int?InitiateWinsock()
{
int?Error;
WORD?Version=MAKEWORD(22);
WSADATA?WsaData;
Error=WSAStartup(Version&WsaData); ??????//Start?up?WSA ??
if(Error!=0)
return?0;
else
{
if(LOBYTE(WsaData.wVersion)!=2||HIBYTE(WsaData.wHighVersion)!=2)
{
WSACleanup();
return?0;
}
}
return?1;
}

int??OpenBitstreamFile?(char?*fn)
{
if?(NULL?==?(poutfile?=?fopen(fn?“wb“)))
{
printf(“Error:?Open?input?file?error\n“);
getchar();
}
return?1;
}


NALU_t?*AllocNALU(int?buffersize)
{
NALU_t?*n;

if?((n?=?(NALU_t*)calloc?(1?sizeof(NALU_t)))?==?NULL)
{
printf(“AllocNALU?Error:?Allocate?Meory?To?NALU_t?Failed?“);
exit(0);
}
return?n;
}

void?FreeNALU(NALU_t?*n)
{
if?(n)
{
free?(n);
}
}

unsigned?char?*?rtp_unpackage(char?*bufInint?len)
{
????unsigned?char?recvbuf[1500];
RTPpacket_t?*p?=?NULL;?
RTP_HEADER?*?rtp_hdr?=?NULL;
NALU_HEADER?*?nalu_hdr?=?NULL;
NALU_t?*?n??=?NULL;
FU_INDICATOR *fu_ind?=?NULL;
FU_HEADER *fu_hdr=?NULL;
int?total_bytes?=?0;?????????????????//當(dāng)前包傳出的數(shù)據(jù)
static?int?total_recved?=?0;?????????//一共傳輸?shù)臄?shù)據(jù)
int?fwrite_number?=?0;???????????????//存入文件的數(shù)據(jù)長度

memcpy(recvbufbufIn?len);??????????//復(fù)制rtp包?
printf(“包長度+?rtp頭:???=?%d\n“l(fā)en);

//////////////////////////////////////////////////////////////////////////
//begin?rtp_payload?and?rtp_header

p?=?(RTPpacket_t*)&recvbuf[0];
if?((p?=?malloc?(sizeof?(RTPpacket_t)))==?NULL)
{
printf?(“RTPpacket_t?MMEMORY?ERROR\n“);
}
if?((p->payload?=?malloc?(MAXDATASIZE))==?NULL)
{
printf?(“RTPpacket_t?payload?MMEMORY?ERROR\n“);
}

if?((rtp_hdr?=?malloc(sizeof(RTP_HEADER)))?==?NULL)
{
printf(“RTP_HEADER?MEMORY?ERROR\n“);
}
????
rtp_hdr?=(RTP_HEADER*)&recvbuf[0];?
printf(“版本號?:?%d\n“rtp_hdr->version);
p->v??=?rtp_hdr->version;
p->p??=?rtp_hdr->padding;
p->x??=?rtp_hdr->extension;
p->cc?=?rtp_hdr->csrc_len;
printf(“標(biāo)志位?:?%d\n“rtp_hdr->marker);
p->m?=?rtp_hdr->marker;
printf(“負(fù)載類型:%d\n“rtp_hdr->payloadtype);
p->pt?=?rtp_hdr->payloadtype;
printf(“包號???:?%d?\n“rtp_hdr->seq_no);
p->seq?=?rtp_hdr->seq_no;
printf(“時間戳?:?%d\n“rtp_hdr->timestamp);
p->timestamp?=?rtp_hdr->timestamp;
printf(“幀號???:?%d\n“rtp_hdr->ssrc);
p->ssrc?=?rtp_hdr->ssrc;

//end?rtp_payload?and?rtp_header
//////////////////////////////////////////////////////////////////////////
//begin?nal_hdr
if?(!(n?=?AllocNALU(800000)))??????????//為結(jié)構(gòu)體nalu_t及其成員buf分配空間。返回值為指向nalu_t存儲空間的指針
{
printf(“NALU_t?MMEMORY?ERROR\n“);
}
if?((nalu_hdr?=?malloc(sizeof(NALU_HEADER)))?==?NULL)
{
printf(“NALU_HEADER?MEMORY?ERROR\n“);
}

nalu_hdr?=(NALU_HEADER*)&recvbuf[12];????????????????????????//網(wǎng)絡(luò)傳輸過來的字節(jié)序?,當(dāng)存入內(nèi)存還是和文檔描述的相反,只要匹配網(wǎng)絡(luò)字節(jié)序和文檔描述即可傳輸正確。
printf(“forbidden_zero_bit:?%d\n“nalu_hdr->F);??????????????//網(wǎng)絡(luò)傳輸中的方式為:F->NRI->TYPE..?內(nèi)存中存儲方式為?TYPE->NRI->F?(和nal頭匹配)。
n->fo

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????5366??2012-05-08?15:58??sender\h264.h

?????文件??????10794??2012-05-08?15:58??sender\main.c

?????文件??????10240??2012-09-05?11:05??sender\sender\debug\sender.exe

?????文件????3082081??2012-03-28?15:22??sender\sender\H264_STREAM\sender.264

?????文件???????6862??2012-07-29?18:54??sender\sender\sender\Debug\BuildLog.htm

?????文件????????486??2012-09-05?11:05??sender\sender\sender\Debug\cl.command.1.tlog

?????文件??????13560??2012-09-05?11:05??sender\sender\sender\Debug\CL.read.1.tlog

?????文件????????334??2012-09-05?11:05??sender\sender\sender\Debug\CL.write.1.tlog

?????文件???????1202??2012-09-05?11:05??sender\sender\sender\Debug\link.command.1.tlog

?????文件???????2146??2012-09-05?11:05??sender\sender\sender\Debug\link.read.1.tlog

?????文件????????414??2012-09-05?11:05??sender\sender\sender\Debug\link.write.1.tlog

?????文件??????34277??2012-09-05?11:05??sender\sender\sender\Debug\main.obj

?????文件????????464??2012-09-05?11:05??sender\sender\sender\Debug\mt.command.1.tlog

?????文件?????????67??2012-07-29?18:54??sender\sender\sender\Debug\mt.dep

?????文件????????804??2012-09-05?11:05??sender\sender\sender\Debug\mt.read.1.tlog

?????文件????????290??2012-09-05?11:05??sender\sender\sender\Debug\mt.write.1.tlog

?????文件????????381??2012-09-05?11:05??sender\sender\sender\Debug\sender.exe.intermediate.manifest

?????文件?????????66??2012-09-05?11:05??sender\sender\sender\Debug\sender.lastbuildstate

?????文件???????1850??2012-09-05?11:05??sender\sender\sender\Debug\sender.log

?????文件??????69632??2012-09-05?11:05??sender\sender\sender\Debug\vc100.pdb

?????文件?????125952??2012-07-29?18:54??sender\sender\sender\Debug\vc80.idb

?????文件???????3101??2012-07-29?18:55??sender\sender\sender\sender.vcproj

?????文件???????1427??2012-07-29?22:41??sender\sender\sender\sender.vcproj.PC-200909201114.Administrator.user

?????文件???????2580??2012-09-05?11:04??sender\sender\sender\sender.vcxproj

?????文件???????1056??2012-09-05?11:04??sender\sender\sender\sender.vcxproj.filters

?????文件????????143??2012-09-05?11:04??sender\sender\sender\sender.vcxproj.user

?????文件????6753280??2012-07-29?22:41??sender\sender\sender.ncb

?????文件????????885??2012-09-05?11:04??sender\sender\sender.sln

????..A..H.??????7168??2012-07-29?22:41??sender\sender\sender.suo

?????文件???????2054??2012-09-05?11:04??sender\sender\UpgradeLog.xml

............此處省略58個文件信息

評論

共有 條評論