关于从海康威视或者大华摄像头获取PS数据流中的H264视频数据

PS流数据原理网上基本能够搜索到,这里我也就没必要粘贴复制,解析PS数据包主要分 00 00 00 ba 这是ps头,然后是系统头00 00 00 bb ,然后是Program Stream map包 00 00 00 bc 然后是H264数据00 00 00 e0 。

下面我附上代码,网上有类似的代码,但是有点问题,直接用的话会在视频下半部分出现花屏显现。这里所附C++代码形成两个文件可直接编译使用。

MediaPsAnaly.h:

MediaPsAnaly.h:

#ifndef MEDIAPSANALY_H
#define MEDIAPSANALY_H


#pragma pack(1)
union littel_endian_size {
	unsigned short int	length;
	unsigned char		byte[2];
};
struct pack_start_code {
	unsigned char start_code[3];
	unsigned char stream_id[1];
};
struct program_stream_pack_header {  //14字节
	pack_start_code PackStart;// 4
	unsigned char Buf[9];
	unsigned char stuffinglen;
};
struct program_stream_system_head {  //可能有系统头,pack_start_code为00 00 01 BB
	pack_start_code PackStart;
	littel_endian_size PackLength;
};
struct program_stream_map {
	pack_start_code PackStart;
	littel_endian_size PackLength;
};
struct program_stream_e {
	pack_start_code		PackStart; //4字节
	littel_endian_size	PackLength;//we mast do exchange  2字节
	char				PackInfo1[2]; //2字节
	unsigned char		stuffing_length; //1字节
};
#pragma pack()

class MediaPsAnaly {
private:
	MediaPsAnaly();
	~MediaPsAnaly();
public:
	/* 获取MediaManage对象唯一实例 */
	static MediaPsAnaly* getInstance();
	
	/* 获取h264数据 */
	int GetH246FromPs(unsigned char* buffer,int length, unsigned char *h264Buffer, int *h264length);

private:	
	/* 解析ps头 */
	int inline ProgramStreamPackHeader(unsigned char* Pack, int length, unsigned char **NextPack, int *leftlength);

	/* 去掉系统头 */
	inline int ProgramStreamSystemHead(unsigned char* Pack,in
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
要在Java获取海康威视摄像头的像素流,您可以使用海康威视SDK提供的Java接口。以下是一些基本的步骤: 1. 首先,您需要安装海康威视SDK,并确保您的摄像头能够正常工作并连接到您的计算机。 2. 在Java项目导入海康威视SDK的Jar文件,并配置相关的依赖项。 3. 创建一个Java类,用于获取像素流。在类,您需要进行以下操作: - 初始化SDK,并登录到设备。 - 根据设备的IP地址、端口号、用户名和密码创建一个设备对象。 4. 获取像素流的方法可以参考以下步骤: - 配置并设置像素流的属性,如分辨率、编码格式等。 - 使用设备对象创建一个预览句柄。 - 打开预览,使用预览句柄开始预览像素流。 - 使用回调方法来获取像素流的数据。 5. 可以使用适当的方法将像素流数据保存到文件,或者将其传输到其他地方进行处理。 6. 当不再需要获取像素流时,记得关闭预览句柄并释放设备。 需要注意的是,具体的代码实现和SDK的使用可能因版本而异。您可以参考海康威视SDK的官方文档和示例代码来更详细地了解如何在Java获取像素流。 总结:通过海康威视SDK提供的Java接口,您可以在Java项目获取海康威视摄像头的像素流。您需要初始化SDK,登录设备,设置像素流属性,并使用预览句柄来进行预览。通过合适的方法,您可以保存像素流数据或将其传输到其他地方进行处理。具体的实现细节可以参考海康威视SDK的文档和示例代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值