資源簡介
RTSP視頻播放器,包括發(fā)送端和接收端。
代碼片段和文件信息
#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
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????879??2016-08-09?16:32??RTSP視頻播放器\rtpRecv\Backup\rtpRecv.sln
????..A..H.?????27648??2016-08-10?01:33??RTSP視頻播放器\rtpRecv\Backup\rtpRecv.v12.suo
?????文件??????35739??2017-07-04?22:09??RTSP視頻播放器\rtpRecv\Debug\Rtp2H264.obj
?????文件??????45568??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\rtpRecv.exe
?????文件?????315768??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\rtpRecv.ilk
?????文件???????2548??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\rtpRecv.log
?????文件??????59790??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\rtpRecv.obj
?????文件?????749568??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\rtpRecv.pdb
?????文件???????1802??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\rtpRecv.tlog\cl.command.1.tlog
?????文件??????42462??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\rtpRecv.tlog\CL.read.1.tlog
?????文件???????2302??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\rtpRecv.tlog\CL.write.1.tlog
?????文件???????1444??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\rtpRecv.tlog\li
?????文件???????2976??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\rtpRecv.tlog\li
?????文件????????660??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\rtpRecv.tlog\li
?????文件????????179??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\rtpRecv.tlog\rtpRecv.lastbuildstate
?????文件???????3779??2017-07-04?22:04??RTSP視頻播放器\rtpRecv\Debug\stdafx.obj
?????文件?????707584??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\vc120.idb
?????文件?????167936??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\Debug\vc120.pdb
?????文件???????5069??2017-07-04?22:08??RTSP視頻播放器\rtpRecv\h264.h
?????文件???????8988??2012-07-29?16:32??RTSP視頻播放器\rtpRecv\main.c
?????文件???????1302??2016-08-09?16:32??RTSP視頻播放器\rtpRecv\ReadMe.txt
?????文件???????3557??2017-07-05?11:17??RTSP視頻播放器\rtpRecv\Rtp2H264.cpp
?????文件????????949??2015-11-09?11:41??RTSP視頻播放器\rtpRecv\Rtp2H264.h
?????文件???????9707??2017-07-05?09:37??RTSP視頻播放器\rtpRecv\rtpRecv.cpp
?????文件???30081024??2017-07-05?11:54??RTSP視頻播放器\rtpRecv\rtpRecv.sdf
?????文件????????959??2017-07-04?21:06??RTSP視頻播放器\rtpRecv\rtpRecv.sln
????..A..H.?????27648??2016-08-10?01:33??RTSP視頻播放器\rtpRecv\rtpRecv.suo
????..A..H.?????47616??2017-07-05?11:54??RTSP視頻播放器\rtpRecv\rtpRecv.v12.suo
?????文件???????4364??2016-08-09?17:34??RTSP視頻播放器\rtpRecv\rtpRecv.vcproj
?????文件???????1411??2016-08-09?19:19??RTSP視頻播放器\rtpRecv\rtpRecv.vcproj.DELL-PC.DELL.user
............此處省略65個文件信息
- 上一篇:固體激光工程
- 下一篇:某企業(yè)財務(wù)管理系統(tǒng)PB
評論
共有 條評論