用onvif+gsoap设置海康IP摄像头的一个坑

在线程中设置码流的分辨率、帧率、gop时,如果直接用tt__VideoEncoderConfiguration 定义自己的EncoderConfiguration然后去调用soap_call___trt__SetVideoEncoderConfiguration,多半进程会挂掉。

正确的思路是先获取对应视频通道下的EncoderConfiguration,然后在调用SetVideoEncoderConfiguration接口。

但是海康的视频通过GetVideoEncoderConfiguration和GetVideoEncoderConfigurations获取到参数VideoEncoderConfiguration有时是不正常的,这种情况下,用获取到的不正常参数再去调用soap_call___trt__SetVideoEncoderConfiguration去设置视频通道参数程序就会崩溃。

具体的原因应该是海康那边的摄像头在响应GetVideoEncoderConfigurations和GetVideoEncoderConfiguration接口时返回来的数据有错。

解决办法是调用GetProfiles接口,然后获取到里面的EncoderConfiguration然后再去调用soap_call___trt__SetVideoEncoderConfiguration。

具体代码就不上了。

我用gsoap生成的cpp中间代码,不知道生成的c代码下会不会存在这种问题。


你可能感兴趣的:(multimedia)