资源简介
基于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.em
文件 728 2018-06-19 21:01 PsMuxer_Trial\Project\PsMuxer\Trial\PsMuxer_T.dll.em
文件 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个文件信息
相关资源
- 公交车GPS报站系统设计
- 物联网GPS跟踪器demo程序
- 基于STM32F407的W5500 tcpserver(官网例程
- H264 封包解包 CH264_RTP_PACK
- c++ 画图(14Qt-XPS)
- 无人机飞控+ps2遥控代码
- 支付宝公积金截图psd分层编辑
- H264转化MP4源码
- AES-128-CBC算法C语言源码已经修改,可
- c++使用ffmpeg把h264/h265和mp3写入mp4文件
- FPS射击游戏《林海雪原》完整c++源代
- C H264格式 转MP4格式
- H264 转 YUV
- GPS网间接平差C语言程序
- C++写太阳/月球坐标计算,在地固坐标
- 粒子群优化算法PSOC++
- Eclipse C/C++ 自动补全的cdt补丁
- MFC根据广播星历计算GPS卫星位置
- 统计软件SPSS系列 二次开发篇
- 计算BMP24位真彩色图像PSNR的C++小程序
- C++轨迹优化软件PSOPT使用手册
- Borland Turbo C++ 1.01
- GPS-广播星历计算卫星位置
- epson 热敏打印机 打印 源码
- MOPSO多目标粒子群优化算法c++实现内附
- c++伪距单点定位
- GPS RINEX o文件、n文件和sp3文件c++读取
- 网络编程HttpServer c++实现
- Parasoft C++ test 9.2官方用户手册_eclips
- Linux下C语言FLV文件拆解成h264视频流和
评论
共有 条评论