开发PS/TS流转ES的SDK

一、概述

PS和TS流在广播电视、影音制作、安防监控等领域应用得很广泛。其中,PS流很久前就被应用于DVD光盘里的电影格式的封装容器,我们看过的很多DVD格式电影(即VOB)就是用PS容器封装的;PS流最近几年也迅速应用在安防领域,国标GBT 28181标准规定了视音频流通过网络传输要封装为PS格式;而TS流(传输流)则应用于电视直播领域很长一段时间,电视机顶盒接收的节目数据格式就是MPEG2-TS格式。

关于PS、TS格式的结构组成和解析这篇文章就不提了,主要讲一下我写的PS/TS解析库的使用。

二、分离PS、TS流的SDK

我实现了一个支持PS、TS流解析的模块,该模块支持对PS/TS解封包,最终分立出ES帧,并通过回调接口将数据传给上层。该模块封装成动态库的形式,下面看看库接口的声明:

#include "SDKDef.h"


//初始化SDK
PLAYPT_API BOOL  PT_InitSDK();
//注销SDK
PLAYPT_API BOOL  PT_UnitSDK();
//获取SDK版本号
PLAYPT_API LONG  PT_GetSDKVersion();

//设置缓冲的条件,根据帧数或字节数
//下面两个条件只能一个生效,如果nBufferFrames非0则根据帧数缓冲;如果nBufferFrames为0,BufferBytes不为0,则根据字节数缓冲。
//参数:
//nBufferFrames -- 缓冲要达到的帧数
//BufferBytes -- 缓冲要达到的字节数

PLAYPT_API void  PT_SetBufferStreamParams(UINT nBufferFrames, UINT BufferBytes); //设置缓冲参数

//打开PS/TS格式的流,支持从文件或内存读取流
//参数:
//srcType -- 流来自于文件或内存,_FILE_SOURCE--来自于文件,_MEM_SOURCE---来自于内存
// lpszFilePath -- 文件路径,如果是内存流,传NULL
// nFileType --流类型(1--PS, 2--TS)
// bParseESStream -- 是否解析视音频流,提取信息。如果视频流格式不是MPEG2/MPEG4/H264这几种之一,则将该参数设为FALSE
// handle -- 返回的这个句柄来调用其他函数; 
// dwError -- 失败时返回的错误码; 
//
PLAYPT_API BOOL    PT_OpenFile(SOURCE_TYPE srcType, LPCTSTR lpszFilePath, int nFileType, BOOL bParseESStream, int & handle, DWORD & dwError);
PLAYPT_API BOOL    PT_CloseFile(int handle);  //关闭文件或内存流
PLAYPT_API BOOL    PT_Pause(int handle);  //暂停播放
PLAYPT_API BOOL    PT_Play(int handle);  //开始播放
PLAYPT_API BOOL    PT_IsRunning(int handle); //是否正在播放
PLAYPT_API BOOL    PT_AddStreamData(int handle, BYTE * pData, int nBytes 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值