2024年1月31日发(作者:)
SDK简介SDK的主要功能包括:监控点预览、回放功能。开发者拿到的SDK压缩文件,解压后包括 《移动端视频SDK编程指南》
文档一份、 HikVideoPlayerDemo
示例Demo一份。Demo仅作为示例,旨在直观的展示SDK的功能,界面较为简单,界面的实现不在本文档解释,请开发者参考demo中的示例代码及注释开发自己的界面和程序。 请开发者认真阅读本文档,以便于顺利进行SDK的接入和开发工作
。环境要求:AndroidStudio 3.0.0版本及以上,Android 4.3及以上更新说明Version 1.3.0(build20200106)支持软硬解码、智能信息展示设置。增加电子放大功能支持。增加arm64-v8a 64位库支持。Version 1.2.1(build20191128)修复播放视频概率性卡死问题。修复录像定位跳跃问题。Version 1.2.0(build20190517)修复语音对讲啸叫问题。Version 1.1.0(build20181213)新增语音对讲功能。Version 1.0.0(build20180928)首个版本提供监控点的预览、回放相关功能。在预览、回放过程中,提供抓图、声音控制、录像等功能。快速集成创建工程用户需要自行通过Android Studio创建新项目,并配置应用的名称、软件包名称和项目的位置。如果项目已创建,请忽略此步骤。
SDK导入在 Android Studio 完成新项目的创建后,请从 IDE 左侧打开
Project
窗格并选择
Project
视图。然后请严格按照以下步骤执行:1. 首先将
添加到 Module 的
libs
文件夹中,如果没有则先创建再添加。2. 然后将SDK包括的全部so 库 添加到
jniLibs
文件夹中,如果没有则先创建再添加。注意:由于Android官方已不再支持生成ABI为:'armeabi'的so库,因此海康威视不再提供'armeabi'的so库。如果您的项目中引用了其他三方'armeabi'的so库,可以将'armeabi'的so库直接置于'armeabi-v7a'中。如果您的项目中存在多种ABI文件夹,例如同时存在'armeabi'和'armeabi-v7a'文件夹,您必须保证项目中的各个ABI文件夹都有一份相应ABI格式的so库。建议您只需要保留ABI为'armeabi-v7a'的so即可。arm64-v8a同理。如下图所示:
3. 接着在 Module 的
文件 的
dependencies
中添加如下代码,并同步项目:dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')}4. 最后打开 Module 的
,添加网络权限;如需使用SDK本地录像功能,需申请Android系统读写存储权限;如需使用SDK语音对讲功能,还需申请Android系统麦克风权限。示例代码
如下:
类的 onCreate()
方法中调用。b(String appKey, boolean enableLog); appKey
为保留字段,目前只需传入null或空字符串即可。 enableLog
为日志开关选项,传入 true
可以在debug模式下打开SDK的日志打印。预览功能使用//创建HikVideoPlayer实例HikVideoPlayer mPlayer = eHikVideoPlayer();
//设置播放画面显示surface,仅支持TextureViewTextureView textureView = findViewById(eView);
faceTexture(faceTexture());
//开启预览//realPlayUrl为预览短链接,需要通过调用openApi获取//此方法需要在子线程中执行
ealPlay(realPlayUrl, new HikVideoPlayerCallback(){
//播放结果回调
//status 共三种状态:SUCCESS(播放成功)、FAILED(播放失败)、EXCEPTION(取流异常)
//错误码,只有 FAILED 和 EXCEPTION 才有值
//注意:回调仍为子线程
@Override
public void onPlayerStatus(@NonNull Status status, int errorCode) {
}});回放功能使用
//创建HikVideoPlayer实例HikVideoPlayer mPlayer = eHikVideoPlayer();
//设置播放画面显示surface,仅支持TextureViewTextureView textureView = findViewById(eView);
faceTexture(faceTexture());
//开启回放//playbackUrl为回放短链接,需要通过调用openApi获取//回放方法需要传入播放的录像片段的开始时间和结束时间//时间格式为 "yyyy-MM-dd'T'HH:mm:",例如:"2018-05-07T14:41:57.819+03:00"//此方法需要在子线程中执行
layback(playbackUrl,startTime, stopTime, new HikVideoPlayerCallback(){
//播放结果回调
//status 共四种状态:SUCCESS(播放成功)、FAILED(播放失败)、EXCEPTION(取流异常)、FINISH(回放结 //错误码,只有 FAILED 和 EXCEPTION 才有值
//注意:回调仍为子线程
@Override
public void onPlayerStatus(@NonNull Status status, int errorCode) {
}});语音对讲功能使用//创建HikVideoPlayer实例HikVideoPlayer mPlayer = eHikVideoPlayer();
//开启对讲//talkUrl为对讲短链接,需要通过调用openApi获取//此方法需要在子线程中执行
oiceTalk(talkUrl, new VoiceTalkCallback(){
//播放结果回调
//status 共三种状态:SUCCESS(开启对讲成功)、FAILED(开启对讲失败)、EXCEPTION(取流异常)
//错误码,只有 FAILED 和 EXCEPTION 才有值
//注意:回调仍为子线程
@Override
public void onTalkStatus(@NonNull status, int errorCode) {
}});混淆配置如果App需要使用proguard进行混淆打包,请添加以下混淆代码:
-dontwarn
# 保留类内部使用@keep注解的成员变量
-keep @ class **{
@
}
# natvie 方法不混淆
-keepclasseswithmembernames class * {
native
}
# 海康威视视频取流播放相关库的混淆配置
-keep class 4.** {*;}
-keep class .** {*;}
-keep class .** {*;}
-keep class ent.** {*;}
-keep class eoplayer.** {*;}
编程引导实时预览实时预览功能可以实时查看摄像机的监控画面,从而进行实时监控。本节对实时预览的接入流程进行详细说明。接口调用流程如下:
图中虚线框部分的模块是与预览模块相关,这些模块之间是并列的关系,各自完成相应的功能。录像回放该流程介绍录像回放功能接入,接口调用流程如下:
图中虚线框部分的模块是与回放模块相关,这些模块之间是并列的关系,各自完成相应的功能。语音对讲该流程介绍语音对讲功能接入,接口调用流程如下:
函数说明1.初始化1.1 SDK初始化接口名称:public static boolean initLib(@Nullable String appKey, boolean enableLog)接口描述:SDK初始化,调SDK其它接口的前提。参数说明:成员名appKeyenableLog返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:1. 只需在APP启动时调用一次即可;2. 建议在debug模式下打开日志,release关闭日志打印;数据类型Stringboolean必填否是说明保留参数,直接传null即可日志开关控制,ture-打开 fasle-关闭
1.2 获取视频播放器接口名称:public static HikVideoPlayer provideHikVideoPlayer()接口描述:用来获取一个海康播放器实例,可以用于实时预览播放或录像回放播放。参数说明:无返回值:海康视频播放器实例备注:每一路视频须获取一个HikVideoPlayer。1.3 设置视频显示窗口接口名称:void setSurfaceTexture(@NonNull SurfaceTexture surfaceTexture);接口描述:设置视频显示画面。参数说明:成员名surfaceTexture数据类型SurfaceTexture必填是说明视频流渲染画面,通过faceTexture获得。返回值:无备注:目前只支持TextureView,不支持SurfaceView。
关联接口:无2.视频预览2.1 开始预览接口名称:boolean startRealPlay(@NonNull String liveRtspUrl, @NonNull HikVideoPlayerCallback callback);接口描述:开启视频预览。参数说明:成员名liveRtspUrlcallback返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。使用场景:主子码流切换、视频实时画面监控。备注:1. 有些第三方设备可能不支持子码流,只能以主码流形式预览,请求预览URL时注意取主码流的URL。2. 对该接口功能,开放平台OpenAPI 自V1.1版本支持在获取监控点取流URL的请求体 "expand"
字段中指定扩展字段为:
"expand": " transcode=1&videotype=h264"
。否则SDK无法解码大华协议的码流,导致画面无法显示。如果是非大华设备,即在获取监控点取流URL的请求体"expand"字段中必须指定封装格式为: "expand": "streamform=ps"
。3. 调用开始预览接口若返回false代表开启预览失败,但是预览成功需要根据HikVideoPlayerCallback的回调结果确定,详情请查看Demo。4. 预览中可能因网络波动导致取流发生异常,需要在 异常回调中主动重新开启或者停止播放
。关联接口:详见 stopPlay
。数据类型StringHikVideoPlayerCallback必填是是说明预览取流URL,不能为空播放结果回调函数,详见 HikVideoPlayerCallback
2.2 码流平滑切换接口名称:boolean changeStream(@NonNull String liveRtspUrl, @NonNull HikVideoPlayerCallback liveCallback);接口描述:切换码流清晰度接口,用于码流无缝切换高清-标清,不会出现黑屏。参数说明:成员名liveRtspUrlcallback返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。使用场景:主子码流平滑无缝切换,提升用户体验。备注:1.使用码流平滑切换接口之前,必须先调用 开始预览
接口;2.使用方式与 开始预览
接口一致;关联接口:详见 开始预览
、 stopPlay
。数据类型StringHikVideoPlayerCallback必填是是说明要切换的码流URL,不能为空播放结果回调函数,详见 HikVideoPlayerCallback
3.网络录像回放3.1 开始回放接口名称:boolean startPlayback(@NonNull String playbackUrl, @NonNull String start, @NonNull String end, @NonN接口描述:开始回放。
参数说明:成员名playbackUrlstart数据类型StringString必填是是说明回放URL,不能为空回放录像文件的开始时间,时间格式为'yyyy-MM-dd'T'HH:mm:'回放录像文件的结束时间,时间格式为'yyyy-MM-dd'T'HH:mm:'播放结果回调函数,详见 HikVideoPlayerCallback
endcallback返回值:StringHikVideoPlayerCallback是是true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:1. 在开始回放之前,需要先从录像存储服务器中查询录像片段列表,录像回放的开始时间是录像片段列表中第一个片段的开始时间,结束时间是录像片段列表中最后一个片段的结束时间。2. 对该接口功能,开放平台OpenAPI 自V1.1版本支持在获取监控点取流URL的请求体 "expand"
字段中指定扩展字段为:
"expand": " transcode=1&videotype=h264"
。否则SDK无法解码大华协议的码流,导致画面无法显示。如果是非大华设备,即在获取监控点取流URL的请求体"expand"字段中必须指定封装格式为: "expand": "streamform=ps"
。3. 调用开始回放接口若返回false代表开启回放失败,但是回放成功需要根据HikVideoPlayerCallback的回调结果确定,详情请查看Demo。4. 回放中可能因网络波动导致取流发生异常,需要在 异常回调中主动重新开启或者停止播放
。5. 开始时间和结束时间为 AbsTime
的 startPlayback()
方法已不推荐使用。关联接口:详见 stopPlay
。3.2 按绝对时间回放定位接口名称:boolean seekAbsPlayback(@NonNull String seekTime, @NonNull HikVideoPlayerCallback callback);接口描述:在录像回放的开始时间和结束时间之间进行播放定位控制。参数说明:
成员名seekTimecallback返回值:数据类型StringHikVideoPlayerCallback必填是是说明定位录像文件的开始时间,时间格式为'yyyy-MM-dd'T'HH:mm:'播放结果回调函数,详见 HikVideoPlayerCallback
true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:1. 使用按绝对时间回放定位接口之前,必须先调用开始回放接口;2. 定位播放时,时间戳单位为秒。3. 调用录像回放定位操作返回false代表录像定位失败,但是定位成功需要根据HikVideoPlayerCallback的回调结果确定,详情请查看Demo。4. 定位时间为 AbsTime
的 seekAbsPlayback()
方法已不推荐使用。关联接口:详见 startPlayback
。3.3 查询当前播放时间戳接口接口名称:long getOSDTime();接口描述:查询当前播放时间戳。参数说明:无返回值:-1表示失败,大于等于0时表示当前回放的时间戳,单位:秒。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:无。关联接口:
无。3.4 暂停回放接口名称:boolean pause();接口描述:暂停录像回放取流及解码播放。参数说明:无。返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:无。关联接口:详见 resume
。3.5 恢复回放接口名称:boolean resume();接口描述:恢复录像回放取流及解码播放。参数说明:无。返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:
无。关联接口:详见 pause
。4.停止播放4.1 停止播放接口名称:boolean stopPlay();接口描述:停止实时预览或录像回放。参数说明:无。返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:停止播放失败不影响下次开启。关联接口:详见 startRealPlay
、 startPlayback
。5.语音对讲5.1 开启语音对讲接口名称:boolean startVoiceTalk(@NonNull String talkUrl, alkCallback voiceTalkCa接口描述:开启语音对讲。
参数说明:成员名talkUrl数据类型String必填是说明语音对讲取流URL,不能为空开启对讲结果回调函数,详见 HikVideoPlayerCallback
alkCallback是返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。使用场景:移动端与设备端进行实时语音对讲。备注:1. 调用开始预览接口若返回false代表开启对讲失败,但是对讲成功需要根据alkCallback的回调结果确定,详情请查看Demo。2. 对讲过程中可能因网络波动或对讲通道被占用导致发生异常,需要在异常回调中主动关闭语音对讲。关联接口:详见 stopVoiceTalk
。5.2 关闭语音对讲接口名称:boolean stopVoiceTalk();接口描述:关闭语音对讲。参数说明:无。返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:
关闭失败不影响下次开启。关联接口:详见 startVoiceTalk
。6.播放抓图6.1 预览回放抓图接口名称:boolean capturePicture(@NonNull String bitmapPath);接口描述:在视频预览或回放时,从视频中抓取一帧,并保存至指定的本地文件路径。参数说明:成员名数据类型必填说明要保存的图片绝对路径(含文件名),bitmapPathString是根据文件名后缀确定保存的图片格式(支持jpg),例:“/SnapShot/测试监控点.jpg”。返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:本地抓图文件可以通过手机自带图片应用查看。关联接口:无。7.本地录像7.1 开启本地录像接口名称:boolean startRecord(@NonNull String mediaFilePath);
接口描述:在视频预览或回放时,保存录像数据流,并保存至指定的本地文件路径。参数说明:成员名mediaFilePath数据类型String必填是说明要保存的录像文件绝对路径(含文件名),例:“/SnapShot/测试监控点.mp4”。返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:1. 因缓存原因录像会有 2~3 秒延时。2. 本地录像文件可以通过手机自带视频播放器查看。关联接口:详见 stopRecord
。7.2 关闭本地录像接口名称:boolean stopRecord();接口描述:在视频预览或回放时,关闭录像流。参数说明:无返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:1. 因缓存原因录像会有 2~3 秒延时。2. 本地录像文件可以通过手机自带视频播放器查看。
关联接口:详见 startRecord
。8.声音控制8.1 声音控制接口名称:boolean enableSound(boolean enable);接口描述:打开预览或回放中的声音,只管一路预览或回放。参数说明:成员名enable返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:1. 打开声音,同一时刻只能有一路声音。如果现在已经有声音打开,则自动关闭原来已经打开的声音。2. 默认情况下是不开启声音的。关联接口:无。数据类型boolean必填是说明打开预览或回放中的声音,只管一路预览或回放。9.电子放大9.1 开启电子放大接口名称:boolean openDigitalZoom(@NonNull CustomRect original, @NonNull CustomRect target)接口描述:执行电子放大功能。
参数说明:成员名originaltarget返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:1. 电子放大支持倍率为1-10倍。2. 默认情况下不开启电子放大的。关联接口:详见 closeDigitalZoom
数据类型CustomRectCustomRect必填是是说明最初的显示区域的坐标矩形目标显示区域的坐标矩形9.2 关闭电子放大接口名称:boolean closeDigitalZoom();接口描述:关闭电子放大功能。参数说明:无。返回值:true表示成功,false表示失败。接口返回失败请调用 getLastError
获取错误码,通过错误码判断出错原因。备注:1. 电子放大支持倍率为1-10倍。2. 默认情况下是不开启电子放大的。关联接口:详见 openDigitalZoom
10.播放配置10.1 解码设置接口名称:void setHardDecodePlay(boolean isHardDecode);接口描述:开启预览或回放前,设置码流解码是否使用硬件解码;参数说明:成员名isHardDecode返回值:无。备注:1. 开启硬件解码后,智能信息不会显示。2. 此方法必须在预览或回放开启前设置才会应用到本次播放,否则本次播放不起作用。3. 默认使用软件解码;关联接口:无。数据类型boolean必填是说明开启或关闭硬件解码,只管一路预览或回放。10.2 智能信息显示设置接口名称:void setSmartDetect(boolean isShow);接口描述:开启预览或回放前,设置智能信息是否展示;参数说明:成员名数据类型必填说明
成员名isShow返回值:无。备注:数据类型boolean必填是说明开启或关闭智能信息显示,只管一路预览或回放。1. 开启硬件解码后,智能信息不会显示。2. 此方法必须在预览或回放开启前设置才会应用到本次播放,否则本次播放不起作用。3. 默认不展示智能信息。关联接口:无。11.错误码11.1 获取错误码接口名称:int getLastError();接口描述:接口调用失败时,调用此函数获取错误码;参数说明:无返回值:错误码。备注:此接口返回的错误码为10进制int值,需要转换成16进制错误码,才能对照 取流库错误码
中的取流库错误码查看出错原因。关联接口:无。
12.获取版本号12.1 获取版本号接口名称:String getVersion();接口描述:获取版本号。参数说明:无返回值:成功表示版本号,如“V1.1.0”,null表示失败。备注:无。关联接口:无。回调函数定义1. 播放状态回调回调接口:public interface HikVideoPlayerCallback {@WorkerThread
void onPlayerStatus(@NonNull Status status, int errorCode);}回调接口描述:用于开始实时预览或开始录像回放,注册监听播放器状态回调。参数说明:成员名数据类型必填说明
成员名数据类型必填说明Status为枚举,表示播放器状态。有四种类型: SUCCESS
:解码播放成功,视频画面显示; FAILED
:statusStatus是开启实时预览或录像回放失败,取流失败; EXCEPTION
:播放过程中发生异常,请从新取流; FINISH
:录像回放取流结束,录像播完了。errorCodeint否错误码,只有在 status 状态为:
FAILED
、 EXCEPTION
才有值 ,其他status 值为 -1。备注:无。关联接口:详见 startRealPlay
、 startPlayback
错误码及说明取流库错误码说明|0x017是媒体网关或媒体取流SDK的错误,0x018是视频点播服务的错误码,0x019是设备接入框架的错误码。下表是部分媒体取流客户端的错误码:错误代码数值0x0173ea600x0173ea610x0173ea620x0173ea630x0173ea640x0173ea650x0173ea660x0173ea670x0173ea68宏定义HPS_PUBLIC__SOCKET_CREATE_FAILEDHPS_PUBLIC__SOCKET_SETREUSEADDR_FAILEDHPS_PUBLIC__SOCKET_MAKEADDR_FAILEDHPS_PUBLIC__SOCKET_SETBUFFERSIZE_FAILEDHPS_PUBLIC__SOCKET_BIND_FAILEDHPS_PUBLIC__SOCKET_LISTEN_FAILEDHPS_PUBLIC__SOCKET_CONNECT_FAILEDHPS_PUBLIC__SOCKET_HANDLE_INVALIDHPS_PUBLIC__ASYNCIO_BINDIOQUENE_FAILED说明创建socket失败设置socket地址重用失败生成socket地址结构失败设置socket缓冲区失败绑定socket端口失败监听socket失败连接socket失败socket句柄无效绑定io完成端口队列失败
错误代码数值0x0173ea690x0173ea6a0x0173ea6b0x0173ea6c0x0173ea6d0x0173ea6e0x0173ea6f0x0173ea700x0173ea710x0173ea720x0173ea730x0173ea740x0173ea750x0173ea760x0173ea770x0173ea780x0173ea790x0173ea7b0x0173ea7c0x0173ea7d0x0173ea7e0x0173ea7f0x0173ea800x0173ea810x0173ea82宏定义HPS_PUBLIC__ASYNCIO_SENDDATA_FAILEDHPS_PUBLIC__ASYNCIO_RECVDATA_FAILEDHPS_PUBLIC__ASYNCIO_POSTIOSTATUS_FAILEDHPS_PUBLIC__ASYNCIO_ACCEPT_FAILEDHPS_PUBLIC__ASYNCIO_BINDIOHANDLE_FAILEDHPS_PUBLIC__MELLOC_MEM_FAILEDHPS_PUBLIC__FUNC_PARAMS_INVALIDHPS_PUBLIC__FUNC_NOT_SUPPORTHPS_PUBLIC__IDENTIFY_TOKEN_INVALIDHPS_PUBLIC__SESSIONHANDLE_INVALIDHPS_PUBLIC__URL_FORMAT_INVALIDHPS_PUBLIC__LENGTH_OUTLIMITHPS_PUBLIC__RTSP_RSP_ERRORHPS_PUBLIC__TRANSMETHOD_INVALIDHPS_PUBLIC__HTRACE_FUNC_FAILHPS_TRANS__REPEAT_OPEN_FAILEDHPS_TRANS__SOCKET_SETMULTITTL_FAILEDHPS_RTSP__RSAKEY_INIT_FAILEDHPS_RTSP__RSA_ENCRYPT_FAILEDHPS_RTSP__AES_ENCRYPT_FAILEDHPS_RTSP__BASIC_ENCODE_FAILEDHPS_RTSP__GET_RAND_NUM_FAILHPS_RTSP__ASYNC_CB_EXCEPTIONHPS_RTSP__SESSION_STATE_INVALIDHPS_RTSP__ASYNCINFO_INVALID说明iocp发送数据失败iocp接收数据失败投递iocp完成状态失败iocp接收连接失败绑定io完成端口句柄失败内存申请失败函数参数无效功能不支持或未实现身份认证token无效会话handle无效url格式错误数据长度超出限制范围rtsp协议报文异常传输方式无效或不支持埋点库调用异常重复打开传输连接设置socket多播ttl失败rsa公钥初始化失败rsa公钥加密失败aes加密失败base64编码失败获取随机数失败异步消息回调异常rtsp会话状态无效rtsp异步会话信息无效
错误代码数值0x0173ea830x0173ea850x0173ea860x0173ea870x0173ea880x0173ea890x0173ea8a0x0173ea8b0x0173ea8c0x0173ea8d0x0173ea8e0x0173ea8f0x0173ea900x0173ea910x0173ea920x0173ea930x0173ea940x0173ea950x0173ea960x0173ea970x0173ea980x0173ea990x0173ea9a0x0173ea9b0x0173ea9c宏定义HPS_RTSP__CONFIG_SESSION_INVALIDHPS_RTSP__IPCONVERT_FAILEDHPS_RTSP__SEND_DESCRIBE_ERRORHPS_RTSP__RECV_DESCRIBE_TIMEOUTHPS_RTSP__SEND_SETUP_ERRORHPS_RTSP__RECV_SETUP_TIMEOUTHPS_RTSP__SEND_PLAY_ERRORHPS_RTSP__RECV_PLAY_TIMEOUTHPS_RTSP__SEND_TREARDOWN_ERRORHPS_RTSP__RECV_TREARDWN_TIMEOUTHPS_RTSP__SEND_OPTIONS_ERRORHPS_RTSP__RECV_OPTIONS_TIMEOUTHPS_RTSP__SEND_PAUSE_ERRORHPS_RTSP__RECV_PAUSE_TIMEOUTHPS_RTSP__SEND_FORCEIFRAME_ERRORHPS_RTSP__RECV_FORCEIFRAME_TIMEOUTHPS_RTSP__SEND_SETPARAMETER_ERRORHPS_RTSP__RECV_SETPARAMETER_TIMEOUTHPS_RTSP__ASYNC_RECV_TIMEOUTHPS_RTSP__RECV_NOT_FULLHPS_RTSP__PARSE_RTSP_FAILEDHPS_RTSP__HEARTBEAT_TIMEOUTHPS_RTSP__PROC_RECVDATA_EXCEPTIONHPS_RTSP__GET_SERVER_UDPPORT_FAILHPS_RTSP__CREATE_UDPTRANS_FAIL说明会话配置信息无效ip/域名转换ip失败发送describe失败接收describe响应超时发送setup失败接收setup响应超时发送play失败接收play响应超时发送teardown失败接收teardown响应超时发送options失败接收options响应超时发送pause失败接收pause响应超时发送forceiframe失败接收forceiframe响应超时发送setparameter失败接收setparameter响应超时异步接收超时数据接收不完整解析rtsp报文失败心跳超时(client与server间)处理接收到的数据异常获取server端udp端口失败创建udp传输失败
错误代码数值0x0173ea9d0x0173ea9e0x0173ea9f0x0173eaa00x0173eaa10x0173eaa20x0173eaa30x0173eaa40x0173eaa50x0173eaa60x0173eaa7宏定义HPS_RTSP__CREATE_TCPTRANS_FAILHPS_RTSP__OPEN_UDPTRANS_FAILHPS_RTSP__OPEN_TCPTRANS_FAILHPS_RTSP__SOCKET_SETOPT_FAILHPS_RTSP__SERVER_NOT_VTMHPS_RTSP__THREAD_HANDLE_INVALIDHPS_RTSP__NO_RTSP_SESSIONHPS_RTSP__HANDLE_ALREADY_IN_QUENEHPS_RTSP__CREATE_ASYNC_QUENE_FAILHPS_STREAM__CB_BLOCKHPS_STREAM__SYSTRANS_FAIL说明创建tcp传输失败开启udp传输失败开启tcp传输失败socket设置失败请求端不是集群调度节点线程句柄无效无可用会话句柄会话句柄已经在队列中创建异步io队列失败回调线程出现阻塞转封装库接口调用失败获取/0x0173eaa8HPS_STREAM__GET_EXEPATH_FAIL设置当前程序运行路径失败0x0173eaa90x0173eaaa0x0173eaab0x0173eaac0x0173eaad0x0173eaae0x0173eaaf0x0173eab00x0173eab1HPS_STREAM__FILE_OPEN_FAILHPS_STREAM__JSON_PARSE_FAILHPS_STREAM__PARSE_SDP_FAILHPS_STREAM__NOT_INITHPS_STREAM__RTSP_CLIENT_INIT_FAILHPS_STREAM__MEDIACOUNT_LESS_ZEROHPS_STREAM__ABSTIME_ERRORHPS_STREAM__BUFFER_TOO_SHORTHPS_STREAM__TRY_TIMES_FAIL文件打开失败json解析失败sdp解析失败sdk未初始化rtsp协议栈未初始化sdp媒体信息少于等于0绝对时间转换失败buffer长度不足多次尝试取流后依旧失败常见问题排查初始化的appKey从哪获取?
目前V1.0和V1.1版本的SDK无需appKey,直接填null即可。2.按照文档将so库拷贝到项目中,运行后崩溃,提示某些so库找不到?sfiedLinkError: dlopen failed: library "/system/lib64/" needed or b(null, true);由于Android官方已不再支持生成ABI为:'armeabi'的so库,因此海康威视不再提供'armeabi'的so库。如果您的项目中引用了其他三方'armeabi'的so库,可以将'armeabi'的so库直接置于'armeabi-v7a'中。如果您的项目中存在多种ABI文件夹,例如同时存在'armeabi'和'armeabi-v7a'文件夹,您必须保证项目中的各个ABI文件夹都有一份相应ABI格式的so库。建议您只需要保留ABI为'armeabi-v7a'的so即可。目前的Android应用已无需支持'armeabi'格式的ABI。有关海康SDK或三方SDK中的so库导入请查看 SDK导入
小节。3.开启实时预览或录像回放后,始终不显示画面?首先请确认要查看的监控设备是否是大华设备,开放平台OpenAPI 自V1.1版本支持在获取监控点取流URL的请求体"expand"字段中指定扩展字段为:
"expand": " transcode=1&videotype=h264"
。否则SDK无法解码大华协议的码流,导致画面无法显示。如果是非大华设备,即在获取监控点取流URL的请求体"expand"字段中必须指定封装格式为: "expand": "streamform=ps"
。4.开启语音对讲失败?开放平台OpenAPI目前仅支持海康、国标、Ehome协议接入的监控设备语音对讲,大华和onvif协议接入的监控设备不支持语音对讲。5.进行本地录像后发现没有录像文件生成?使用移动端SDK在预览或回放时进行本地录像,如果是非大华设备,必须在获取时URL中指定PS封装格式,即在获取监控点取流URL的请求体"expand"字段中指定封装格式为:
"expand": "streamform=ps"
。否则会出现录像无法生成的问题。对于大华设备,开放平台OpenAPI 自V1.1版本支持在获取监控点取流URL的请求体"expand"字段中指定扩展字段为:
"expand": " transcode=1&videotype=h264"
。否则移动端SDK无法解码大华协议的码流,导致画面无法显示。
本文发布于:2024-01-31 23:04:22,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170671346232028.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |