海康sdk进行历史回放时,码流数据回调过快问题的解决方法

海康sdk进行历史回放时,码流数据回调过快问题的解决方法

码云(Gitee)地址:https://gitee.com/banmajio/HCSDKtoRTMP
github地址:https://github.com/banmajio/HCSDKtoRTMP
个人博客:banmajio’s blog

海康sdk二次开发系列文章
海康sdk捕获码流数据通过JavaCV推成rtmp流的实现思路(PS流转封装RTMP)
海康sdk进行历史回放时,码流数据回调过快问题的解决方法
海康sdk项目(java)部署Linux环境相关问题总结
海康sdk部署Linux环境下无法播放子码流的问题
海康sdk项目部署Linux系统时出现java.lang.UnstisfiedLinkError:jnidispatch(xxx)not found in resource path错误

问题描述

在进行海康sdk二次开发过程中,通过海康sdk来进行历史回放时,发现回调函数执行的特别快,导致要回放5分钟左右的视频经过20秒所有就完成了。
带来的影响就是,播放器点击暂停,过5秒后再点击播放,画面时间点可能已经偏移了1分钟。正确的方式应该是和实时预览保持一致,比如暂停到再次点击播放按钮的时间间隔应该与画面时间点偏移时间间隔一致。

问题分析

通过咨询海康的技术支持了解到,在进行历史回放的时候,设备是按照最大码流速度来发送数据的,数据流控制需要自己去实现。也就是说在进行实时预览时,每1s回调的数据量就是1s视频的实际大小,而进行历史回放的时候,回调的数据是从nvr缓存的视频文件里来的,相当于下载这个历史视频的文件,1s回调的数据量是下载1s得到的数据量。
在这里插入图片描述

解决方法

通过sdk控制历史回放的回调数据的速度。
在这里插入图片描述

		fPlayDataCallBack = new PlayDataCallBack(outputStream);
		// 注册回调函数
	    HCNetSDK.INSTANCE.NET_DVR_SetPlayDataCallBack(lHisPlayHandle, fPlayDataCallBack,0);
		// 控制录像回放状态  开始回放
		HCNetSDK.INSTANCE.NET_DVR_PlayBackControl(lHisPlayHandle,HCNetSDK.NET_DVR_PLAYSTART, 0, null);
		// 控制历史回放拉流推流时的速度和直播一致
		HCNetSDK.INSTANCE.NET_DVR_PlayBackControl(lHisPlayHandle, HCNetSDK.NET_DVR_SETSPEED,
			bitrate, null);

其中将bitrate设置成nvr上配置的设备码率上限的值即可。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
海康SDK是一种用于视频监控和安防系统的软件开发工具包,可以帮助开发者实现监控视频的采集、传输和播放等功能。在使用海康SDK,可以通过回调函数来设置流类型。 回调函数是在特定事件发生自动触发的函数,用于处理相应的事件。在海康SDK中,可以通过注册回调函数来处理视频流相关的事件,例如获取流数据、控制流的传输等。 要设置流类型,可以通过设置回调函数的参数来实现。在注册回调函数,可以指定需要接收的视频流类型,比如主码流、子码流、双码流等。这样在接收到相应的流数据回调函数将会触发,并根据设置的流类型进行相应的处理。 具体来说,可以按照以下步骤设置流类型的回调: 1. 定义一个回调函数,用于接收视频流数据。 2. 在需要接收视频流的地方,使用SDK提供的函数注册回调函数,同指定期望接收的流类型。 3. 在回调函数中,对接收到的视频流数据进行处理,可以进行解码、显示等操作。 例如,如果想要接收主码流,可以在注册回调函数指定流类型为主码流。当有主码流数据到达回调函数将会触发,并将这些数据传递给相应的处理函数。通过这种方式,就可以实现对不同流类型的选择和处理。 总之,海康SDK提供了回调函数来设置流类型,通过注册回调函数并指定流类型,可以实现对不同类型的视频流进行处理和操作。这样可以满足不同应用场景对流的需求,提升视频监控和安防系统的效果。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

banmajio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值