• 大小: 21.98MB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2023-08-02
  • 语言: C/C++
  • 标签: ps  h264  

资源简介

基于C/C++提供一个PS流的打包库PsMuxer.dll,并提供DEMO测试程序

资源截图

代码片段和文件信息


/*******************************************************************************
Copyright (c) wubihe Tech. Co. Ltd. All rights reserved.
--------------------------------------------------------------------------------

Date Created: 2014-10-25
Author: wubihe QQ:1269122125 Email:1269122125@qq.com
Description: PS流封装库PsMuxer使用Demo 试用版本Demo只能运行240S 需要授权库或者
全部源码请联系作者
--------------------------------------------------------------------------------
Modification History
DATE          AUTHOR          DEscriptION
--------------------------------------------------------------------------------

********************************************************************************/
#include “excpt.h“
#include “TIOBuffer.h“
#include “IPsMuxer.h“


#define  MAX_BUFFER_SIZE     (1024*8)
#define  MAX_OUT_BUFFER_SIZE (1024*1024)

static FILE *gInputFile = NULL;
static FILE *gOutputFile = NULL;

//读取H264数据缓存
unsigned char gszReadBuffer[MAX_BUFFER_SIZE];
//解析h264数据缓存
comn::IOBuffer gH264ParserBuff;


struct NaluPacket
{
unsigned char*  data;
int length;
int prefix;
};

//帧类型定义
enum NAL_type
{
NAL_IDR
NAL_SPS
NAL_PPS
NAL_SEI
NAL_Pframe
NAL_VPS
NAL_SEI_PREFIX
NAL_SEI_SUFFIX
NAL_other
NAL_TYPE_NUM
};

unsigned char* g_pMuxBuf;
long g_Pts = 0;
long g_Dts = 0;


//判断是否是264或者265帧如果是顺便把NalTypeChar设置一下
bool isH264Or265frame(unsigned char* buf unsigned char* NalTypeCharint *iHeadLen)
{
bool bOk = false;
unsigned char c = 0;

if (buf[0] == 0 && buf[1] == 0 && buf[2] == 0 && buf[3] == 1)
{
if (NalTypeChar)
{
*NalTypeChar = buf[4];
}
*iHeadLen = 4;
bOk = true;
}

if (buf[0] == 0 && buf[1] == 0 && buf[2] == 1 )
{

if (NalTypeChar)
{
*NalTypeChar = buf[3];
}
*iHeadLen = 3;
bOk = true;
}

return bOk;
}

NAL_type getH264NALtype(unsigned char c)
{
switch(c & 0x1f){
case 6:
return NAL_SEI;
break;
case 7:
return NAL_SPS;
break;
case 8:
return NAL_PPS;
break;
case 5:
return NAL_IDR;
break;
case 1:
return NAL_Pframe;
break;
default:
return NAL_other;
break;
}
return NAL_other;
}

NAL_type getH265NALtype(unsigned char c)
{
int type = (c & 0x7E)>>1;

if(type == 33)
return NAL_SPS;

if(type == 34)
return NAL_PPS;

if(type == 32)
return NAL_VPS;

if(type == 39)
return NAL_SEI_PREFIX;

if(type == 40)
return NAL_SEI_SUFFIX;

if((type >= 1) && (type <=9))
return NAL_Pframe;

if((type >= 16) && (type <=21))
return NAL_IDR;

return NAL_other;
}




void ProcessData(int iHandle int iStreamunsigned char* buf int len)
{
PmframeInfo stframeInfo;

stframeInfo.pframe = buf;
stframeInfo.iframeLen = len;
stframeInfo.lPts = g_Pts;
stframeInfo.lDts = g_Dts;


int MuxOutSize = 0;

PM_RESULT_TYPE eResult;
int iOutSize = MAX_OUT_BUFFER_SIZE;
eResult = PM_frameTrans(iHandle iStream stframeInfog_pMuxBuf &iOutSize);

if (eResult == PM_RESULT_OK && iOutSize > 0)
{
fwrite(g_pMuxBuf iOutSize 1 gOutputFile);
fflush(gOutputFile);
}

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

     文件    9092080  2018-06-07 16:44  PsMuxer_Trial\bin\huangdun.264

     文件    9157126  2018-06-19 22:24  PsMuxer_Trial\bin\huangdun.264.mpeg

     文件      45056  2018-06-19 22:25  PsMuxer_Trial\bin\PsMuxerDemo_T.exe

     文件     362380  2018-06-19 22:25  PsMuxer_Trial\bin\PsMuxerDemo_T.ilk

     文件     683008  2018-06-19 22:25  PsMuxer_Trial\bin\PsMuxerDemo_T.pdb

     文件      64512  2018-06-19 21:01  PsMuxer_Trial\bin\PsMuxer_T.dll

     文件       1429  2018-06-19 21:01  PsMuxer_Trial\bin\PsMuxer_T.exp

     文件     360352  2018-06-19 21:01  PsMuxer_Trial\bin\PsMuxer_T.ilk

     文件       2682  2018-06-19 21:01  PsMuxer_Trial\bin\PsMuxer_T.lib

     文件     691200  2018-06-19 21:01  PsMuxer_Trial\bin\PsMuxer_T.pdb

     文件    1641793  2016-07-04 19:34  PsMuxer_Trial\doc\iso13818-1.pdf

     文件     304071  2016-07-04 19:34  PsMuxer_Trial\doc\PS流和TS流介绍.docx

     文件     354816  2017-02-22 14:09  PsMuxer_Trial\doc\视音频数据PS封装-offset.doc

     文件        227  2018-06-12 21:35  PsMuxer_Trial\Project\PsMuxer\PsMuxer.def

     文件       6828  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\PsMuxer.vcproj

     文件       1983  2018-06-19 20:51  PsMuxer_Trial\Project\PsMuxer\PsMuxer.vcproj.wubihe-PC.wubihe.user

     文件        229  2018-06-19 21:00  PsMuxer_Trial\Project\PsMuxer\PsMuxer_T.def

     文件      13688  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\Trial\BuildLog.htm

     文件      49302  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\Trial\LogMng.obj

     文件         65  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\Trial\mt.dep

     文件      51467  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\Trial\PsMuxer.obj

     文件      82169  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\Trial\PsMuxerContext.obj

     文件      53198  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\Trial\PsMuxerContextMng.obj

     文件      11542  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\Trial\PsMuxerStream.obj

     文件        663  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\Trial\PsMuxer_T.dll.embed.manifest

     文件        728  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\Trial\PsMuxer_T.dll.embed.manifest.res

     文件        621  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\Trial\PsMuxer_T.dll.intermediate.manifest

     文件       8404  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\Trial\PsUtil.obj

     文件     658432  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\Trial\vc90.idb

     文件     266240  2018-06-19 21:01  PsMuxer_Trial\Project\PsMuxer\Trial\vc90.pdb

............此处省略53个文件信息

评论

共有 条评论