weagfb

weagfb

0个粉丝

12

问答

0

专栏

0

资料

weagfb  发布于  2020-05-06 11:10:40
采纳率 0%
12个问答
4352

如何在H264流上截图?

 
请问各位,

我想在H264码流传输的时候,在VDEC处通过HI_MPI_VDEC_GetFrame接口阻塞拿帧,然后存成YUV,可是我在 HI_MPI_VDEC_SendStream 之后调用HI_MPI_VDEC_GetFrame接口时,系统提示: chn 0 enType 96 do not suport save file!

是因为VDEC不能将H264(5)码流存图片吗?是否需要我从后方,比如VPSS去拿帧呢?

谢谢
我来回答
回答14个
时间排序
认可量排序

qn1573283653

0个粉丝

1

问答

0

专栏

0

资料

qn1573283653 2020-05-06 12:01:36
认可0
仔细看看打印错误的地方,为啥报错
一般VDEC->VPSS,如果要存YUV,都是从VPSS里取帧数据

DBFace

0个粉丝

4

问答

0

专栏

0

资料

DBFace 2020-05-06 17:00:35
认可0
96是264的意思,sample里面有抓图的代码,可以扣出来用

weagfb

0个粉丝

12

问答

0

专栏

0

资料

weagfb 2020-05-06 17:48:29
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157754&ptid=80105]qn1573283653 发表于 2020-5-6 12:01[/url]
仔细看看打印错误的地方,为啥报错
一般VDEC->VPSS,如果要存YUV,都是从VPSS里取帧数据[/quote]

请问你从VPSS里面取帧的时候是一个什么样的流程?是否要调用vpss_sendstream这个接口呢?

weagfb

0个粉丝

12

问答

0

专栏

0

资料

weagfb 2020-05-06 17:49:22
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157770&ptid=80105]DBFace 发表于 2020-5-6 17:00[/url]
96是264的意思,sample里面有抓图的代码,可以扣出来用[/quote]

我想抓住每一帧,就相当于把整个H264的码流按帧分割成图片,snap能满足这个要求吗?

qn1573283653

0个粉丝

1

问答

0

专栏

0

资料

qn1573283653 2020-05-07 11:45:28
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157782&ptid=80105]weagfb 发表于 2020-5-6 17:48[/url]
请问你从VPSS里面取帧的时候是一个什么样的流程?是否要调用vpss_sendstream这个接口呢?[/quote]

1、绑定VPSS和VDEC
2、调用VDEC_SendStream,码流解码
3、线程里调用VPSS_GetChnFrame,获取数据,保存YUV

weagfb

0个粉丝

12

问答

0

专栏

0

资料

weagfb 2020-05-07 17:55:30
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157842&ptid=80105]qn1573283653 发表于 2020-5-7 11:45[/url]
1、绑定VPSS和VDEC
2、调用VDEC_SendStream,码流解码
3、线程里调用VPSS_GetChnFrame,获取数据,保存 ...[/quote]

谢谢

请问你在调用VPSS_GetChnFrame时,是否将配置调整为

astVpssChnAttr[1].u32Width                    = stDispSize.u32Width;
    astVpssChnAttr[1].u32Height                   = stDispSize.u32Height;
    astVpssChnAttr[1].enChnMode                   = VPSS_CHN_MODE_USER;
    astVpssChnAttr[1].enCompressMode              = COMPRESS_MODE_NONE;
    astVpssChnAttr[1].enDynamicRange              = DYNAMIC_RANGE_SDR8;
    astVpssChnAttr[1].enPixelFormat               = PIXEL_FORMAT_YVU_SEMIPLANAR_420;
    astVpssChnAttr[1].stFrameRate.s32SrcFrameRate = -1;
    astVpssChnAttr[1].stFrameRate.s32DstFrameRate = -1;
    astVpssChnAttr[1].u32Depth                    = 3;
    astVpssChnAttr[1].bMirror                     = HI_FALSE;
    astVpssChnAttr[1].bFlip                       = HI_FALSE;
    astVpssChnAttr[1].stAspectRatio.enMode        = ASPECT_RATIO_NONE;
    astVpssChnAttr[1].enVideoFormat               = VIDEO_FORMAT_LINEAR;

这样的呢?我现在VPSS中明明有数据,但是掉这个接口返回图像队列空,我使用了Grop0和Chnn1

qn1573283653

0个粉丝

1

问答

0

专栏

0

资料

qn1573283653 2020-05-07 19:16:06
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157897&ptid=80105]weagfb 发表于 2020-5-7 17:55[/url]
谢谢

请问你在调用VPSS_GetChnFrame时,是否将配置调整为
[/quote]

cat /proc/umap/vpss过来看看

weagfb

0个粉丝

12

问答

0

专栏

0

资料

weagfb 2020-05-07 19:38:34
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157901&ptid=80105]qn1573283653 发表于 2020-5-7 19:16[/url]
cat /proc/umap/vpss过来看看[/quote]

你好,我修改了一下通道,用Chn0

现在配置完成以后出现图片队列为空的情况,就是在调用HI_MPI_VPSS_SendFrame后一直在阻塞,将阻塞调成0非阻塞后就报错说是图片队列为空

但是根据调试信息来看,VPSS正常拿到了码流,而且我确认读入的H264大小和程序内设置的3840x2160是一致的,请您帮我诊断一下我的问题出在哪里呢?

谢谢

代码是这样子的:
  stVpssGrpAttr.u32MaxW = 3840;
     stVpssGrpAttr.u32MaxH = 2160;
     stVpssGrpAttr.stFrameRate.s32SrcFrameRate = -1;
     stVpssGrpAttr.stFrameRate.s32DstFrameRate = -1;
     stVpssGrpAttr.enDynamicRange = DYNAMIC_RANGE_SDR8;
     stVpssGrpAttr.enPixelFormat  = PIXEL_FORMAT_YVU_SEMIPLANAR_420;
     stVpssGrpAttr.bNrEn   = HI_FALSE;

     memset(abChnEnable, 0, sizeof(abChnEnable));
     abChnEnable[0] = HI_TRUE;
     astVpssChnAttr[0].u32Width                    = stDispSize.u32Width;
     astVpssChnAttr[0].u32Height                   = stDispSize.u32Height;
     astVpssChnAttr[0].enChnMode                   = VPSS_CHN_MODE_USER;
     astVpssChnAttr[0].enCompressMode              = COMPRESS_MODE_NONE;
     astVpssChnAttr[0].enDynamicRange              = DYNAMIC_RANGE_SDR8;
     astVpssChnAttr[0].enPixelFormat               = PIXEL_FORMAT_YVU_SEMIPLANAR_420;
     astVpssChnAttr[0].stFrameRate.s32SrcFrameRate = -1;
     astVpssChnAttr[0].stFrameRate.s32DstFrameRate = -1;
     astVpssChnAttr[0].u32Depth                    = 3;
     astVpssChnAttr[0].bMirror                     = HI_FALSE;
     astVpssChnAttr[0].bFlip                       = HI_FALSE;
     astVpssChnAttr[0].stAspectRatio.enMode        = ASPECT_RATIO_NONE;
     astVpssChnAttr[0].enVideoFormat               = VIDEO_FORMAT_LINEAR;

         VIDEO_FRAME_INFO_S        VideoFrame = { 0, };

     for(i=0; i      {
         VpssGrp = i;
         s32Ret = SAMPLE_COMM_VPSS_Start(VpssGrp, &abChnEnable[0], &stVpssGrpAttr, &astVpssChnAttr[0]);
         if(s32Ret != HI_SUCCESS)
         {
             SAMPLE_PRT("start VPSS fail for %#x!\n", s32Ret);
             goto END4;
         }
     }

         while(1)
         {
                 s32Ret = HI_MPI_VPSS_GetChnFrame(0, 0, &VideoFrame,0);
                 if(s32Ret != HI_SUCCESS)
         {
             SAMPLE_PRT("HI_MPI_VPSS_GetChnFrame %#x!\n", s32Ret);
                         break;
         }
                 HI_MPI_VPSS_ReleaseChnFrame(0, 0, &VideoFrame);
                 
         }        
         HI_MPI_VPSS_ReleaseChnFrame(0, 0, &VideoFrame);

日志信息是这样子的:
<3>[   gdc] [Func]:GDC_CheckModStart [Line]:112 [Info]:gdc mod not ready
<3>[   gdc] [Func]:GDC_ProcBypassTask [Line]:4796 [Info]:Begin job fail with 0xa0258010!
<3>[  vpss] [Func]:VPSS_SubmitByPassJob2Gdc [Line]:2378 [Info]:Add bypass task fail with 0xa025801

调试信息是这样子的:
[VPSS] Version: [Hi3519AV100_MPP_V2.0.1.0 B0B0 Release], Build Time[Nov 15 2018, 09:08:43]


-------------------------------MODULE PARAM-----------------------------------------------------------------
vpss_vb_source    bOneBufferforLowDelay      vpss_split_node_num              bHdrSupport
               0                        0                        3                        0

-------------------------------VPSS GRP ATTR----------------------------------------------------------------
    GrpID    MaxW    MaxH      PixFmt    DRange  SrcFRate  DstFRate bUserCtrl    NrEn    NrType    RefCmp  MotionMode
        0    3840    2160   YVU-SP420      SDR8        -1        -1         Y       N     VIDEO         N      Normal

-------------------------------VPSS CHN ATTR----------------------------------------------------------------
    GrpID  PhyChnID  Enable    Mode  MirrorEn  FlipEn  SrcFRate  DstFRate Depth  Aspect  videoX  videoY  videoW  videoH     BgColor
        0         0      Y    USER         N       N        -1        -1     3    NONE       0       0    3840    2160         0x0

-------------------------------VPSS EXT-CHN ATTR------------------------------------------------------------
    GrpID   ExtChnID  Enable  SrcChn   Width  Height  SrcFRate  DstFRate   Depth

-------------------------------VPSS GRP CROP INFO-----------------------------------------------------------
    GrpID  CropEn  CoorType   CoorX   CoorY   Width  Height    OriW    OriH   TrimX   TrimY TrimWid TrimHgt
        0       N       RAT       0       0       0       0

-------------------------------VPSS CHN CROP INFO-----------------------------------------------------------
    GrpID   ChnID  CropEn  CoorType   CoorX   CoorY   Width  Height   TrimX   TrimY TrimWid TrimHgt
        0       0       N       RAT       0       0       0       0

-------------------------------VPSS GRP PIC QUEUE-----------------------------------------------------------
    GrpID  FreeLen0  BusyLen0     Delay    Backup
        0         8         0         0         0

-------------------------------VPSS GRP WORK STATUS---------------------------------------------------------
    GrpID    RecvPic0 ViLost0 VdecLost0       NewDo   OldDo NewUnDo     OldUnDo     StartFl  bStart  CostTm MaxCostTm
        0        1215       0         0        1215       0       0           0           0       Y   11855     24779

-------------------------------VPSS CHN OUTPUT RESOLUTION---------------------------------------------------
    GrpID   ChnID  Enable   Width  Height      Pixfmt    Videofmt      DRange    Compress  SendOk   FrameRate
        0       0       Y    3840    2160   YVU-SP420      LINEAR        SDR8           N    1214          50

-------------------------------VPSS 3DNR X PARAM------------------------------------------------------------

-------------------------------VPSS SHARPEN ATTR------------------------------------------------------------

-------------------------------VPSS CHN ROTATE INFO---------------------------------------------------------
    GrpID   ChnID  Rotate

-------------------------------VPSS CHN LDC INFO------------------------------------------------------------
    GrpID   ChnID  Enable  Aspect  XRatio  YRatio   XYRatio   XOffset   YOffset     DistortionRatio

-------------------------------VPSS CHN ROTATIO_EX INFO-----------------------------------------------------
    GrpID   ChnID  Enable  ViewType   Angle   XOffset   YOffset     Width    Height

-------------------------------VPSS CHN SPREAD INFO---------------------------------------------------------
    GrpID   ChnID  Enable    OutW    OutH      Coef

-------------------------------VPSS EXTCHN FISHEYE ATTR-----------------------------------------------------
    GrpID   ChnID  Enable  MntMode  RgnNum  BgEnable  BgColor  LMF  HOffset  VOffset  TCoef   FStrength

-------------------------------VPSS EXTCHN FISHEYE REGION ATTR----------------------------------------------
    GrpID   ChnID  RgnIndex  ViewMode  InRadius  OutRadius  Pan  Tilt  HorZoom  VerZoom  OutX  OutY  OutW  OutH

-------------------------------VPSS CHN LOWDELAY ATTR-------------------------------------------------------
    GrpID   ChnID  Enable   LineCnt   OneBufEnable   OneBufAddr

-------------------------------DRV WORK STATUS--------------------------------------------------------------
        StartSuc0       StartSuc1         LinkInt   StartErr0  NodeIdErr0   StartErr1  NodeIdErr1      BusErr
             1215               0            1214           0           0           0           0           0

-------------------------------DRV NODE QUEUE---------------------------------------------------------------
    FreeNum   WaitNum  Busy00  Busy01    Sel0  Busy10  Busy11    Sel1    Proc
        128         0       1       0       0       0       0       0       1

-------------------------------INT WORK STATUS--------------------------------------------------------------
      CntPerSec  MaxCntPerSec        CostTm    MostCostTm  CostTmPerSec MCostTmPerSec
             50            79           179           250          6234         15670

qn1573283653

0个粉丝

1

问答

0

专栏

0

资料

qn1573283653 2020-05-07 20:05:15
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157902&ptid=80105]weagfb 发表于 2020-5-7 19:38[/url]
你好,我修改了一下通道,用Chn0

现在配置完成以后出现图片队列为空的情况,就是在调用HI_MPI_VPSS_Se ...[/quote]

深度改成1
     astVpssChnAttr[0].u32Depth                    = 1;
get帧用200ms等待,失败不要break,一开始可能会失败,数据还没到VPSS
while(1)
{
         s32Ret = HI_MPI_VPSS_GetChnFrame(0, 0, &VideoFrame,200);
         if(s32Ret != HI_SUCCESS)
        {
                SAMPLE_PRT("HI_MPI_VPSS_GetChnFrame %#x!\n", s32Ret);
            continue;
        }
    HI_MPI_VPSS_ReleaseChnFrame(0, 0, &VideoFrame);
                 
}   

weagfb

0个粉丝

12

问答

0

专栏

0

资料

weagfb 2020-05-08 10:46:16
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157903&ptid=80105]qn1573283653 发表于 2020-5-7 20:05[/url]
深度改成1
     astVpssChnAttr[0].u32Depth                    = 1;
get帧用200ms等待,失败不要brea ...[/quote]

哎,谢谢了,还是有问题
死活从VPSS中拿不到图像数据,不知道哪里出了问题,一直是队列空

qn1573283653

0个粉丝

1

问答

0

专栏

0

资料

qn1573283653 2020-05-08 10:56:18
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157927&ptid=80105]weagfb 发表于 2020-5-8 10:46[/url]
哎,谢谢了,还是有问题
死活从VPSS中拿不到图像数据,不知道哪里出了问题,一直是队列空[/quote]

加我weixin,329749720
不信了,搞不定

Mr.zhao

0个粉丝

4

问答

0

专栏

0

资料

Mr.zhao 2020-05-08 15:24:54
认可0
    AI_VIDEO_FRAME_S *pSTVideoFrame = NULL;
    pSTVideoFrame = (AI_VIDEO_FRAME_S *)malloc(sizeof(AI_VIDEO_FRAME_S));
    s32Ret = HI_MPI_VPSS_GetChnAttr(0, chn, &stChnAttr);
    if (s32Ret != HI_SUCCESS)
    {
                free(pSTVideoFrame);
        printf("HI_MPI_VPSS_GetChnAttr failed!\n",s32Ret);
        return HI_FAILURE;
    }
   
    stChnAttr.u32Depth = 5;
    s32Ret = HI_MPI_VPSS_SetChnAttr(0, chn, &stChnAttr);
    if (s32Ret != HI_SUCCESS)
    {
                free(pSTVideoFrame);
        printf("HI_MPI_VPSS_SetChnAttr failed! %#x\n",s32Ret);
        return HI_FAILURE;
    }
   
    s32Ret = HI_MPI_VPSS_GetChnFrame(0,chn, &stFrame,s32GetFrameMilliSec);
    if(HI_SUCCESS != s32Ret)
    {
                free(pSTVideoFrame);
        printf("HI_MPI_VPSS_GetChnFrame failed! %#x\n",s32Ret);
        return HI_FAILURE;
    }


没什么区别啊,我用这个正常啊!

DBFace

0个粉丝

4

问答

0

专栏

0

资料

DBFace 2020-05-09 09:54:44
认可0
0xa0258010是系统未初始化的意思,检查一下代码执行流程?

weagfb

0个粉丝

12

问答

0

专栏

0

资料

weagfb 2020-05-09 10:28:36
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157930&ptid=80105]qn1573283653 发表于 2020-5-8 10:56[/url]
加我weixin,329749720
不信了,搞不定[/quote]

谢谢老哥,我搞定了,VDEC_Send那边没把码流成功送进去,改了改送进去了
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区