X3派开发板解析海康的DS-IPC-T12HV3-IA网络摄像头的RTSP流失败

我使用X3派开发板解析海康的DS-IPC-T12HV3-IA网络摄像头的RTSP流失败,具体操作如下:

sunrise@ubuntu:~$ cd /app/media_cdev/rtsp2display

sunrise@ubuntu:/app/media_cdev/rtsp2display$ sudo make #可能会打印一些警告信息,无需理会

root@ubuntu:/app/media_cdev/rtsp2display# sudo ./rtsp2display -i rtsp://admin:hik123456@192.168.1.64:554//Streaming/Channels/1 -t tcp

出现的问题如下:

Expanded Security Maintenance for Applications is not enabled.

44 updates can be applied immediately.

23 of these updates are standard security updates.

To see these additional updates run: apt list --upgradable

22 additional security updates can be applied with ESM Apps.

Learn more about enabling ESM Apps service at https://ubuntu.com/esm

Last login: Mon Apr 24 18:12:12 2023 from 192.168.1.110

root@ubuntu:~# cd /app/media_cdev/rtsp2display

root@ubuntu:/app/media_cdev/rtsp2display# ls

Makefile rtsp2display rtsp2display.c rtsp2display.o

root@ubuntu:/app/media_cdev/rtsp2display# sudo make

make: Nothing to be done for ‘all’.

root@ubuntu:/app/media_cdev/rtsp2display# sudo ./rtsp2display -i rtsp://admin:hik123456@192.168.1.64:554//Streaming/Channels/1 -t tcp

avformat_open_input ok!

avformat_find_stream_info ok!

Input #0, rtsp, from ‘rtsp://admin:hik123456@192.168.1.64:554//Streaming/Channels/1’:

Metadata:

title : Media Presentation

Duration: N/A, start: 0.000000, bitrate: N/A

Stream #0:0: Video: hevc (Main), yuvj420p(pc, bt709), 1920x1080, 25 fps, 25 tbr, 90k tbn, 25 tbc

Stream #0:1: Audio: pcm_alaw, 8000 Hz, 1 channels, s16, 64 kb/s

Input #1, rtsp, from ‘rtsp://admin:hik123456@192.168.1.64:554//Streaming/Channels/1’:

Metadata:

title : Media Presentation

Duration: N/A, start: 0.000000, bitrate: N/A

Stream #1:0: Video: hevc (Main), yuvj420p(pc, bt709), 1920x1080, 25 fps, 25 tbr, 90k tbn, 25 tbc

Stream #1:1: Audio: pcm_alaw, 8000 Hz, 1 channels, s16, 64 kb/s

av_dump_format ok!

rtsp_w:1920,rtsp_h:1080

display_w:1920,dispaly_h:1080

sp_open_vps success!

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.59184][3750:3755][VideoDecoder] DecodeHeader:1568 FAILED TO DEC_PIC_HDR: ret(1), SEQERR(00005000)

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.59194][3750:3755][COMPONENT] Component wave_decoder will be terminated.

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60022][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600286]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60031][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600334]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60035][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600372]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60039][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600410]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60043][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600447]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60046][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600484]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60050][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600522]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60054][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600559]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60058][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600594]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60061][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600628]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60064][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600665]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60068][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600702]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60072][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600739]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60075][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600773]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60079][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600810]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“multimedia”][src/vdi/linux/vdi_osal.c:174] [ERROR][72.60083][3750:3762][TASK] It’s not allowd to do this operation. Please check the task state 6.

[ERROR][“vdec”][video/src/vdec_group.c:348] [72.600847]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

我这几天测试了很多网络摄像头的RTSP协议,发现最近几年的网络摄像头好像都不一定包含PPS和SPS的参数信息,包括海康最近几年出的网络摄像头,还包括我从网上购买的其他小牌子的网络摄像头,这个通过root@ubuntu:/app/media_cdev/rtsp2display# sudo ./rtsp2display -i rtsp://admin:hik123456@192.168.1.64:554//Streaming/Channels/1 -t tcp进行解码,都是输出上面我所填写的错误,都是一样的,这个能否请地平线公司的技术人员帮助解决一下,因为这些网络摄像头我使用VLC软件都能正常打开RTSP视频流。希望地平线公司的技术支持人员能重视一下这个RTSP视频流的界面BUG问题,非常感谢!

最近我又测试了天视通公司的网络摄像头,使用地平线公司的root@ubuntu:/app/media_cdev/rtsp2display# sudo ./rtsp2display -i rtsp://admin:hik123456@192.168.1.64:554//Streaming/Channels/1 -t tcp这个例子来进行解码RTSP视频流,还是出现上面的一样的解码错误,我也问了其他公司的网络摄像头,他们的RTSP视频流都没有确定包含PPS和SPS参数,也因此测试时都出现上面的错误,不知道地平线公司有没有解决的办法,能解码当前市场上的主流的RTSP视频流产品,多谢了!

然后我参考了一下旭日X3派用户手册3.2.1.3注意事项。以及5.1. 参考示例 — 旭日X3派用户手册 1.0.1 文档 (horizon.ai)。都没有解决问题,请地平线公司的技术人员重视一下这个解码RTSP视频流的BUG问题,现在购买的最新的网络摄像头的RTSP视频流都不能正常解码,这个是一个普遍问题,希望能得到解决,非常感谢!

您好,目前我们这边支持的解码功能是需要PPS与SPS参数的,如果所用摄像头视频流不包含PPS与SPS参数则无法解码

您好,请问是否方便发一段码流给到我们呢?我们这边安排工程师来处理这个问题,您可以发一个百度网盘链接

麻烦问一下没有sps,spp这个问题解决了吗!

那个我现在问了很多做网络摄像头的商家,有很多支持RTSP视频流的产品,但是都不包含PPS和SPS参数,这个是什么原因?包括现在海康出的最新的网络摄像头,虽然也支持RTSP视频流功能,但是里面也没有包含这两个参数,这个是什么原因啊?难道现在的RTSP视频流都不再支持或包含PPS和SPS参数吗?这个你们有没有解决办法?

您好,目前来说X3派只能支持包含PPS以及SPS参数的视频流处理,这块我们后续会进行优化,可以持续关注一下

我使用的代码就是/app/media_cdev/rtsp2display# sudo ./rtsp2display -i rtsp://admin:hik123456@192.168.1.64:554//Streaming/Channels/1 -t tcp这个例子,然后就出错了。

#include <stdio.h>

#include <stdlib.h>

#include <stdint.h>

#include <stdbool.h>

#include <unistd.h>

#include <string.h>

#include <time.h>

#include <libavformat/avformat.h>

#include <libavutil/timestamp.h>

#include <sp_codec.h>

#include <sp_display.h>

#include <sp_sys.h>

#include <sp_vio.h>

#include <vio/hb_common_vot.h>

#include <argp.h>

#include <stdatomic.h>

#include <signal.h>

//#define SP_DEBUG

#include <sys/shm.h>

#define MILLION 1000000

static char doc = “decode2display sample – An example of streaming video decoding to the display”;

atomic_bool is_stop;

struct arguments

{

char *rtsp_url;

char *transfer_type;

};

static struct argp_option options = {

{“input”, ‘i’, “path”, 0, “rtsp url”},

{“type”, ‘t’, “type”, 0, “tcp or udp”},

{0}};

static error_t parse_opt(int key, char *arg, struct argp_state *state)

{

struct arguments *args = state->input;

switch (key)

{

case ‘i’:

args->rtsp_url = arg;

break;

case ‘t’:

args->transfer_type = arg;

break;

case ARGP_KEY_END:

{

if (state->argc != 5)

{

argp_state_help(state, stdout, ARGP_HELP_STD_HELP);

}

}

break;

default:

return ARGP_ERR_UNKNOWN;

}

return 0;

}

static struct argp argp = {options, parse_opt, 0, doc};

void open_rtsp(const char *rtsp_url, const char *transfer_type)

{

unsigned int i;

int ret;

int video_st_index = -1;

int audio_st_index = -1;

AVFormatContext *ifmt_ctx = NULL;

AVPacket pkt;

AVStream *st = NULL;

char errbuf[64];

AVDictionary *optionsDict = NULL;

av_register_all(); // Register all codecs and formats so that they can be used.

avformat_network_init(); // Initialization of network components

av_init_packet(&pkt); // initialize packet.

pkt.data = NULL;

pkt.size = 0;

bool nRestart = false;

AVStream *pVst;

uint8_t *buffer_rgb = NULL;

AVCodecContext *pVideoCodecCtx = NULL;

AVFrame *pFrame = av_frame_alloc();

AVFrame *pFrameRGB = av_frame_alloc();

int got_picture;

AVCodec *pVideoCodec = NULL;

av_dict_set(&optionsDict, “stimeout”, “3000000”, 0); // if don’t setting this property,av_read_frame will run as block mode (ms)

av_dict_set(&optionsDict, “bufsize”, “1024000”, 0); // buffer size

av_dict_set(&optionsDict, “rtsp_transport”, transfer_type, 0); // transfer type,udp will faster but may lost some packet,tcp slower but stable

if ((ret = avformat_open_input(&ifmt_ctx, rtsp_url, 0, &optionsDict)) < 0)

{ // Open the input file for reading.

printf(“Could not open input file ‘%s’ (error ‘%s’)\n”, rtsp_url, av_make_error_string(errbuf, sizeof(errbuf), ret));

goto EXIT;

}

printf(“avformat_open_input ok!\n”);

if ((ret = avformat_find_stream_info(ifmt_ctx, NULL)) < 0)

{ // Get information on the input file (number of streams etc.).

printf(“Could not open find stream info (error ‘%s’)\n”, av_make_error_string(errbuf, sizeof(errbuf), ret));

goto EXIT;

}

printf(“avformat_find_stream_info ok!\n”);

for (i = 0; i < ifmt_ctx->nb_streams; i++)

{ // dump information

av_dump_format(ifmt_ctx, i, rtsp_url, 0);

}

printf(“av_dump_format ok!\n”);

for (i = 0; i < ifmt_ctx->nb_streams; i++)

{ // find video stream index

st = ifmt_ctx->streams[i];

switch (st->codec->codec_type)

{

case AVMEDIA_TYPE_AUDIO:

audio_st_index = i;

break;

case AVMEDIA_TYPE_VIDEO:

video_st_index = i;

break;

default:

break;

}

}

if (-1 == video_st_index)

{

printf(“No H.264 video stream in the input file\n”);

goto EXIT;

}

if (!nRestart)

{ // getting stream msg

pVst = ifmt_ctx->streams[video_st_index];

pVideoCodecCtx = pVst->codec;

pVideoCodec = avcodec_find_decoder(pVideoCodecCtx->codec_id);

if (pVideoCodec == NULL)

return;

if (avcodec_open2(pVideoCodecCtx, pVideoCodec, NULL) < 0)

return;

}

/*Begin decoder and display*/

// getting stream height and width

int rtsp_w = pVideoCodecCtx->width, rtsp_h = pVideoCodecCtx->height;

int disp_w = 0, disp_h = 0;

char *frame_buffer_output = (char *)malloc(rtsp_w*rtsp_h*3/2);

char *frame_buffer_input = (char *)malloc(rtsp_w*rtsp_h*3/2);

int j = 0;

struct timespec tpstart;

struct timespec tpend;

long timedif;

char filename[64];

memset(filename,0,64);

// init module

void *decoder = sp_init_decoder_module();

void *encoder = sp_init_encoder_module();

if(encoder==NULL)

printf(“[Error] sp_init_encoder_module failed!\n”);

else

sp_start_encode(encoder, 1, SP_ENCODER_MJPEG, rtsp_w, rtsp_h, 8192);

// void *display = sp_init_display_module();

// void *vps = sp_init_vio_module();

// get display resolution

// sp_get_display_resolution(&disp_w, &disp_h);

// printf(“rtsp_w:%d,rtsp_h:%d\ndisplay_w:%d,dispaly_h:%d\n”, pVideoCodecCtx->width, pVideoCodecCtx->height, disp_w, disp_h);

// decode setting

// Setting the stream_file to null means that the decoded source is manually called sp_decoder_set_image func

ret = sp_start_decode(decoder, “”, 0, SP_ENCODER_H264, rtsp_w, rtsp_h);

// if rtsp resolution doesn’t match display’s,using vps to scale

// refering our decoder2display sample

if (ret != 0)

{

printf(“decoder start error!\n”);

goto EXIT1;

}

/* ret = sp_start_display(display, 1, disp_w, disp_h);

if (ret != 0)

{

printf(“display start error!\n”);

goto EXIT1;

}

ret = sp_open_vps(vps, 0, 1, SP_VPS_SCALE, rtsp_w, rtsp_h,

&disp_w, &disp_h, NULL, NULL, NULL, NULL, NULL);

if (ret != 0)

{

printf(“[Error] sp_open_vps failed!\n”);

goto EXIT1;

}

printf(“sp_open_vps success!\n”);

// bind decoder and vio(vps)

ret = sp_module_bind(decoder, SP_MTYPE_DECODER, vps, SP_MTYPE_VIO);

if (ret)

{

printf(“[Error] sp_module_bind failed, ret = %d\n”, ret);

goto EXIT1;

}

// bind vio(vps) and display

ret = sp_module_bind(vps, SP_MTYPE_VIO, display, SP_MTYPE_DISPLAY);

if (ret)

{

printf(“[Error] sp_module_bind failed, ret = %d\n”, ret);

goto EXIT1;

}*/

/*End*/

i=0;

clock_gettime(CLOCK_MONOTONIC, &tpstart);

while (!is_stop)

{

do

{

#ifdef SP_DEBUG

printf(“start av_read_frame\n”);

#endif

ret = av_read_frame(ifmt_ctx, &pkt); // read frames

#ifdef SP_DEBUG

printf(“end av_read_frame\n”);

#endif

if (pkt.stream_index == video_st_index)

{

#ifdef SP_DEBUG

printf(“video_st_index\n”);

printf(“pkt.size=%d, pkt.pts=%lld, pkt.data=0x%x.\n”, pkt.size, pkt.pts, (unsigned int)pkt.data);

#endif

sp_decoder_set_image(decoder, pkt.data, 0, pkt.size, 0);//sending stream frame to decoder

sp_decoder_get_image(decoder,frame_buffer_input);

sp_encoder_set_frame(encoder,(char *)frame_buffer_input, rtsp_w * rtsp_h * 3 / 2);

ret=sp_encoder_get_stream(encoder, (char *)frame_buffer_output);

if(ret>1000 && i<200){

sprintf(filename,“/home/sunrise/test04/build/rtsp-%d.jpg”,i);

FILE *fp = fopen(filename, “wb”);

if(fp){

// fwrite(vec_data.data(), 1, vec_data.size(), fp);

fwrite((char *)frame_buffer_output, 1, ret, fp);

fclose(fp);

}

}

i++;

clock_gettime(CLOCK_MONOTONIC, &tpend);

timedif = MILLION*(tpend.tv_sec-tpstart.tv_sec)+(tpend.tv_nsec-tpstart.tv_nsec)/1000;

if(i%30==0)

printf(“width=%d, height=%d, time-stamp=%ld. frames=%d frm=%ld\n”, rtsp_w, rtsp_h, tpend.tv_sec,i,i/(timedif/1000000));

}

} while (ret == AVERROR(EAGAIN) && (!is_stop));

if (ret < 0)

{

printf(“Could not read frame —(error ‘%s’)\n”, av_make_error_string(errbuf, sizeof(errbuf), ret));

goto EXIT;

}

av_packet_unref(&pkt);

}

// sp_module_unbind(vps, SP_MTYPE_VIO, display, SP_MTYPE_DISPLAY);

// sp_module_unbind(decoder, SP_MTYPE_DECODER, vps, SP_MTYPE_VIO);

EXIT1:

// if (display != NULL)

// {

// sp_stop_display(display);

// sp_release_display_module(display);

// }

// if (vps != NULL)

// {

// sp_vio_close(vps);

// sp_release_vio_module(vps);

// }

if (decoder != NULL)

{

sp_stop_decode(decoder);

sp_release_decoder_module(decoder);

}

if (encoder != NULL)

{

sp_stop_encode(encoder);

sp_release_encoder_module(encoder);

}

EXIT:

if (NULL != ifmt_ctx)

{

avcodec_close(pVideoCodecCtx);

avformat_close_input(&ifmt_ctx);

av_free(pFrame);

av_free(pFrameRGB);

ifmt_ctx = NULL;

}

return;

}

void signal_handler_func(int signum)

{

printf(“\nrecv:%d,Stoping…\n”, signum);

is_stop = 1;

}

int main(int argc, char **argv)

{

const char* path = “./”;

int proId = 1000;

int shmKey = ftok(path, proId);

//1.读取共享内存段,唯一差别在于 flags 参数,此时传0说明只读

int shmId = shmget(shmKey, 0, 0);

printf(“shmId is %x\n”,shmId);

if(shmId == -1)

{

perror(“shmget error”);

return -1;

}

//2.将本进程和共享内存关联

void *ptr = shmat(shmId, NULL, 0);

if (ptr == (void*)-1)

{

perror(“shmat error”);

return -1;

}

// 3. 读共享内存

printf(“共享内存数据: %s\n”, (char*)ptr);

// 阻塞程序

printf(“按任意键继续, 删除共享内存\n”);

getchar();

shmdt(ptr);

// 删除共享内存

shmctl(shmId, IPC_RMID, NULL);

printf(“共享内存已经被删除…\n”);

// singal handle,stop program while press ctrl + c

signal(SIGINT, signal_handler_func);

// start parse cmdline args…

// 1.initialize an struct which contains property of rtsp_url and transfer_type

struct arguments args;

memset(&args, 0, sizeof(args));

// 2.parse args

argp_parse(&argp, argc, argv, 0, 0, &args);

// 3.call open_rtsp

open_rtsp(args.rtsp_url, args.transfer_type);

return 0;

}

我们正在安排工程师处理该问题,后续可以持续关注一下!

你好,看打印日志这款IPC出来的码流应该是H265的码流,你可以将代码里面sp_start_decode(decoder, “”, 0, SP_ENCODER_H264, rtsp_w, rtsp_h); 中的 SP_ENCODER_H264 修改成 SP_ENCODER_H265 再试试看

好的,多谢了,我测试看看

我把SP_ENCODER_H264 修改成 SP_ENCODER_H265后,测试发现还是出现问题:

Input #0, rtsp, from ‘rtsp://admin:hik123456@192.168.1.64:554//Streaming/Channels/1’:

Metadata:

title : Media Presentation

Duration: N/A, start: 0.000000, bitrate: N/A

Stream #0:0: Video: hevc (Main), yuvj420p(pc, bt709), 1920x1080, 25 fps, 25 tbr, 90k tbn, 25 tbc

Stream #0:1: Audio: pcm_alaw, 8000 Hz, 1 channels, s16, 64 kb/s

Input #1, rtsp, from ‘rtsp://admin:hik123456@192.168.1.64:554//Streaming/Channels/1’:

Metadata:

title : Media Presentation

Duration: N/A, start: 0.000000, bitrate: N/A

Stream #1:0: Video: hevc (Main), yuvj420p(pc, bt709), 1920x1080, 25 fps, 25 tbr, 90k tbn, 25 tbc

Stream #1:1: Audio: pcm_alaw, 8000 Hz, 1 channels, s16, 64 kb/s

av_dump_format ok!

rtsp_w:1920,rtsp_h:1080

display_w:1920,dispaly_h:1080

sp_open_vps success!

[ERROR][“vdec”][video/src/vdec_group.c:348] [2046.492882]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2046.593281]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2046.693532]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2046.793815]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2046.894060]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2046.994301]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2047.094555]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2047.194843]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/hb_vdec.c:743] [2047.286829]HB_VDEC_GetFrame[743]: [HB_VDEC] HB_VDEC_GetFrame:743 Failed VdChn = 0 s32Ret = -269024268

[x3_vdec_get_frame]:[711]:HB_VDEC_GetFrame error!!!

[ERROR][“vdec”][video/src/vdec_group.c:348] [2047.295116]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2047.502417]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2047.602673]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2047.702920]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2047.803181]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2047.903446]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2048.003710]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2048.103960]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/vdec_group.c:348] [2048.204280]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

[ERROR][“vdec”][video/src/hb_vdec.c:743] [2048.297306]HB_VDEC_GetFrame[743]: [HB_VDEC] HB_VDEC_GetFrame:743 Failed VdChn = 0 s32Ret = -269024268

[x3_vdec_get_frame]:[711]:HB_VDEC_GetFrame error!!!

[ERROR][“vdec”][video/src/vdec_group.c:348] [2048.304487]vdec_channel_bump_thread[348]: VDEC_MODULE module try again

然后我又把摄像头的码流输出格式设置为H.264,仍然将SP_ENCODER_H265还原为SP_ENCODER_H264,再次测试后,还是出现问题:

Input #0, rtsp, from ‘rtsp://admin:hik123456@192.168.1.64:554//Streaming/Channels/1’:

Metadata:

title : Media Presentation

Duration: N/A, start: 0.000000, bitrate: N/A

Stream #0:0: Video: h264 (Baseline), yuvj420p(pc, bt709, progressive), 1920x1080, 25 fps, 25 tbr, 90k tbn, 50 tbc

Stream #0:1: Audio: pcm_alaw, 8000 Hz, 1 channels, s16, 64 kb/s

Input #1, rtsp, from ‘rtsp://admin:hik123456@192.168.1.64:554//Streaming/Channels/1’:

Metadata:

title : Media Presentation

Duration: N/A, start: 0.000000, bitrate: N/A

Stream #1:0: Video: h264 (Baseline), yuvj420p(pc, bt709, progressive), 1920x1080, 25 fps, 25 tbr, 90k tbn, 50 tbc

Stream #1:1: Audio: pcm_alaw, 8000 Hz, 1 channels, s16, 64 kb/s

av_dump_format ok!

[ERROR][“vdec”][video/src/hb_vdec.c:743] [2243.605011]HB_VDEC_GetFrame[743]: [HB_VDEC] HB_VDEC_GetFrame:743 Failed VdChn = 0 s32Ret = -269024268

[x3_vdec_get_frame]:[711]:HB_VDEC_GetFrame error!!!

[ERROR][“vdec”][video/src/hb_vdec.c:743] [2244.618598]HB_VDEC_GetFrame[743]: [HB_VDEC] HB_VDEC_GetFrame:743 Failed VdChn = 0 s32Ret = -269024268

[x3_vdec_get_frame]:[711]:HB_VDEC_GetFrame error!!!

[ERROR][“vdec”][video/src/hb_vdec.c:743] [2245.619120]HB_VDEC_GetFrame[743]: [HB_VDEC] HB_VDEC_GetFrame:743 Failed VdChn = 0 s32Ret = -269024268

[x3_vdec_get_frame]:[711]:HB_VDEC_GetFrame error!!!

^C

这个当摄像头的输出码流支持H.265的时候,即使将格式设置为H.264,这个解码代码还是出现问题,两个格式都出现问题。

有没有技术大佬帮助看看问题所在?希望能给出解决方法,多谢了!

再次请大家帮助解决一下问题,非常感谢!

内部还在排查中,我们会尽快反馈结果

pps