完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
在ti8168平台,用DVRRDK_04.01.00.02,对于一些mpeg4的码流格式,硬件解码异常。这些格式我存成码流文件,在ffmpeg下可以正常解码。
rdk的版本为:DVRRDK_04.01.00.02,解码出错打出的消息为: [m3video] 1365241:WARN [m3video] DECLINK:ERROR in Declink_mpeg4DecodeFrameBatch.Status[-1] [m3video] 1365246:DECLINK::links_m3video/iva_dec/decLink_mpeg4.c:[289]::INTERNAL ERROR:-1 [m3video] ALGPROCESS FAILED:STATUS [m3video] outArgs->viddec3OutArgs.extendedError for channel 0 Error: 0x501400 错误码对应的信息是,没有获取到视频头信息。 对于一些mpeg4,倒是可以解码。就是一部分的mpeg4无法解码。 附件是出错的视频码流,是纯视频码流文件。用ffmpeg的解码命令为: ffplay -i m4v -f in_mp4_err2.mpg4,可以正常解码播放。 这个问题该如何解决? |
|
相关推荐
8个回答
|
|
|
|
|
|
物是人非aaa 发表于 2018-5-31 06:59 你是怎么解码的,因为这个不是264的,你是怎么读取一帧的码流,再送入解码link的呢?我使用ffmpeg的读取码流再送入的。 multich_xxx里面,对解码的配置代码能贴出了我看看吗? 我的代码为: //dec for (i=0; i if( gVdecModuleContext.vdecConfig.decChannelParams[0].isCodec == VDEC_CHN_H264 ) [ decPrm.chCreateParams.format = 9; //IVIDEO_H264HP decPrm.chCreateParams.profile = 3;//IH264VDEC_PROFILE_ANY ] else if( gVdecModuleContext.vdecConfig.decChannelParams[0].isCodec == VDEC_CHN_MPEG4 ) [ decPrm.chCreateParams.format = 6;//IVIDEO_MPEG4ASP decPrm.chCreateParams.profile = 0; ] else if( gVdecModuleContext.vdecConfig.decChannelParams[0].isCodec == VDEC_CHN_MPEG2 ) [ decPrm.chCreateParams.format = 4;//IVIDEO_MPEG2HP decPrm.chCreateParams.profile = 0; ] else if( gVdecModuleContext.vdecConfig.decChannelParams[0].isCodec == VDEC_CHN_MJPEG ) [ decPrm.chCreateParams.format = 24;//IVIDEO_MJPEG decPrm.chCreateParams.profile = 0; ] else [ decPrm.chCreateParams.format = 9; //IVIDEO_H264HP decPrm.chCreateParams.profile = 3;//IH264VDEC_PROFILE_ANY ] decPrm.chCreateParams.targetMaxWidth = ipcBitsoutHostPrm.inQueInfo.chInfo.width; decPrm.chCreateParams.targetMaxHeight = ipcBitsoutHostPrm.inQueInfo.chInfo.height; decPrm.chCreateParams.defaultDynamicParams.targetFrameRate = gVdecModuleContext.vdecConfig.decChannelParams.dynamicParam.frameRate;//30 decPrm.chCreateParams.defaultDynamicParams.targetBitRate = gVdecModuleContext.vdecConfig.decChannelParams.dynamicParam.targetBitRate;//just for dec, not for enc decPrm.chCreateParams.numBufPerCh = gVdecModuleContext.vdecConfig.decChannelParams.numBufPerCh; //dec的输出内存, 4 decPrm.chCreateParams.dpbBufSizeInFrames = IH264VDEC_DPB_NUMFRAMES_AUTO; decPrm.chCreateParams.displayDelay = gVdecModuleContext.vdecConfig.decChannelParams.displayDelay;//0 decPrm.chCreateParams.processCallLevel = VDEC_FRAMELEVELPROCESSCALL; decPrm.chCreateParams.tilerEnable = FALSE;//TURE FALSE decPrm.chCreateParams.enableWaterMarking = FALSE; ] decPrm.inQueParams.prevLinkId = ipcBitsInVedioId; decPrm.inQueParams.prevLinkQueId = 0; decPrm.outQueParams.nextLink = ipcDecFramesOutVideoId; 从文件中读取一帧,是用ffmpeg读取的。 提示的错误为: [m3video] 218431:WARN [m3video] DECLINK:ERROR in Declink_mpeg4DecodeFrameBatch.Status[-1] [m3video] 218447:DECLINK::links_m3video/iva_dec/decLink_mpeg4.c:[289]::INTERNAL ERROR:-1 [m3video] ALGPROCESS FAILED:STATUS [m3video] outArgs->viddec3OutArgs.extendedError for channel 0 Error: 0x501400 [m3video] 218448:WARN [m3video] DECLINK:ERROR in Declink_mpeg4DecodeFrameBatch.Status[-1] [m3video] 218464:DECLINK::links_m3video/iva_dec/decLink_mpeg4.c:[289]::INTERNAL ERROR:-1 [m3video] ALGPROCESS FAILED:STATUS [m3video] outArgs->viddec3OutArgs.extendedError for channel 0 Error: 0x501400 [m3video] 218465:WARN [m3video] DECLINK:ERROR in Declink_mpeg4DecodeFrameBatch.Status[-1] [m3video] 218484:DECLINK::links_m3video/iva_dec/decLink_mpeg4.c:[289]::INTERNAL ERROR:-1 [m3video] ALGPROCESS FAILED:STATUS [m3video] outArgs->viddec3OutArgs.extendedError for channel 0 Error: 0x501400 [m3video] 218485:WARN [m3video] DECLINK:ERROR in Declink_mpeg4DecodeFrameBatch.Status[-1] [m3video] 218503:DECLINK::links_m3video/iva_dec/decLink_mpeg4.c:[289]::INTERNAL ERROR:-1 [m3video] ALGPROCESS FAILED:STATUS [m3video] outArgs->viddec3OutArgs.extendedError for channel 0 Error: 0x501400 [m3video] 218503:WARN [m3video] DECLINK:ERROR in Declink_mpeg4DecodeFrameBatch.Status[-1] [m3video] 218806:DECLINK::links_m3video/iva_dec/decLink_mpeg4.c:[289]::INTERNAL ERROR:-1 |
|
|
|
物是人非aaa 发表于 2018-5-31 06:59 你是怎么解码的,因为这个不是264的,你是怎么读取一帧的码流,再送入解码link的呢?我使用ffmpeg的读取码流再送入的。 你的multich_xxx里面,对解码的配置代码能贴出来我看看吗? 我的代码为: //dec for (i=0; i if( gVdecModuleContext.vdecConfig.decChannelParams[0].isCodec == VDEC_CHN_H264 ) [ decPrm.chCreateParams.format = 9; //IVIDEO_H264HP decPrm.chCreateParams.profile = 3;//IH264VDEC_PROFILE_ANY ] else if( gVdecModuleContext.vdecConfig.decChannelParams[0].isCodec == VDEC_CHN_MPEG4 ) [ decPrm.chCreateParams.format = 6;//IVIDEO_MPEG4ASP decPrm.chCreateParams.profile = 0; ] else if( gVdecModuleContext.vdecConfig.decChannelParams[0].isCodec == VDEC_CHN_MPEG2 ) [ decPrm.chCreateParams.format = 4;//IVIDEO_MPEG2HP decPrm.chCreateParams.profile = 0; ] else if( gVdecModuleContext.vdecConfig.decChannelParams[0].isCodec == VDEC_CHN_MJPEG ) [ decPrm.chCreateParams.format = 24;//IVIDEO_MJPEG decPrm.chCreateParams.profile = 0; ] else [ decPrm.chCreateParams.format = 9; //IVIDEO_H264HP decPrm.chCreateParams.profile = 3;//IH264VDEC_PROFILE_ANY ] decPrm.chCreateParams.targetMaxWidth = ipcBitsoutHostPrm.inQueInfo.chInfo.width; decPrm.chCreateParams.targetMaxHeight = ipcBitsoutHostPrm.inQueInfo.chInfo.height; decPrm.chCreateParams.defaultDynamicParams.targetFrameRate = gVdecModuleContext.vdecConfig.decChannelParams.dynamicParam.frameRate;//30 decPrm.chCreateParams.defaultDynamicParams.targetBitRate = gVdecModuleContext.vdecConfig.decChannelParams.dynamicParam.targetBitRate;//just for dec, not for enc decPrm.chCreateParams.numBufPerCh = gVdecModuleContext.vdecConfig.decChannelParams.numBufPerCh; //dec的输出内存, 4 decPrm.chCreateParams.dpbBufSizeInFrames = IH264VDEC_DPB_NUMFRAMES_AUTO; decPrm.chCreateParams.displayDelay = gVdecModuleContext.vdecConfig.decChannelParams.displayDelay;//0 decPrm.chCreateParams.processCallLevel = VDEC_FRAMELEVELPROCESSCALL; decPrm.chCreateParams.tilerEnable = FALSE;//TURE FALSE decPrm.chCreateParams.enableWaterMarking = FALSE; ] decPrm.inQueParams.prevLinkId = ipcBitsInVedioId; decPrm.inQueParams.prevLinkQueId = 0; decPrm.outQueParams.nextLink = ipcDecFramesOutVideoId; 从文件中读取一帧,是用ffmpeg读取的。 提示的错误为: [m3video] 218431:WARN [m3video] DECLINK:ERROR in Declink_mpeg4DecodeFrameBatch.Status[-1] [m3video] 218447:DECLINK::links_m3video/iva_dec/decLink_mpeg4.c:[289]::INTERNAL ERROR:-1 [m3video] ALGPROCESS FAILED:STATUS [m3video] outArgs->viddec3OutArgs.extendedError for channel 0 Error: 0x501400 [m3video] 218448:WARN [m3video] DECLINK:ERROR in Declink_mpeg4DecodeFrameBatch.Status[-1] [m3video] 218464:DECLINK::links_m3video/iva_dec/decLink_mpeg4.c:[289]::INTERNAL ERROR:-1 [m3video] ALGPROCESS FAILED:STATUS |
|
|
|
物是人非aaa 发表于 2018-5-31 06:59 你是怎么解码的,因为这个不是264的,你是怎么读取一帧的码流,再送入解码link的呢?我使用ffmpeg的读取码流再送入的。 multich_xxx里面,对解码的配置代码能贴出了我看看吗? 我的代码为: //dec for (i=0; i if( gVdecModuleContext.vdecConfig.decChannelParams[0].isCodec == VDEC_CHN_H264 ) [ decPrm.chCreateParams.format = 9; //IVIDEO_H264HP decPrm.chCreateParams.profile = 3;//IH264VDEC_PROFILE_ANY ] else if( gVdecModuleContext.vdecConfig.decChannelParams[0].isCodec == VDEC_CHN_MPEG4 ) [ decPrm.chCreateParams.format = 6;//IVIDEO_MPEG4ASP decPrm.chCreateParams.profile = 0; ] else if( gVdecModuleContext.vdecConfig.decChannelParams[0].isCodec == VDEC_CHN_MPEG2 ) [ decPrm.chCreateParams.format = 4;//IVIDEO_MPEG2HP decPrm.chCreateParams.profile = 0; ] else if( gVdecModuleContext.vdecConfig.decChannelParams[0].isCodec == VDEC_CHN_MJPEG ) [ decPrm.chCreateParams.format = 24;//IVIDEO_MJPEG decPrm.chCreateParams.profile = 0; ] else [ decPrm.chCreateParams.format = 9; //IVIDEO_H264HP decPrm.chCreateParams.profile = 3;//IH264VDEC_PROFILE_ANY ] decPrm.chCreateParams.targetMaxWidth = ipcBitsoutHostPrm.inQueInfo.chInfo.width; decPrm.chCreateParams.targetMaxHeight = ipcBitsoutHostPrm.inQueInfo.chInfo.height; decPrm.chCreateParams.defaultDynamicParams.targetFrameRate = gVdecModuleContext.vdecConfig.decChannelParams.dynamicParam.frameRate;//30 decPrm.chCreateParams.defaultDynamicParams.targetBitRate = gVdecModuleContext.vdecConfig.decChannelParams.dynamicParam.targetBitRate;//just for dec, not for enc decPrm.chCreateParams.numBufPerCh = gVdecModuleContext.vdecConfig.decChannelParams.numBufPerCh; //dec的输出内存, 4 decPrm.chCreateParams.dpbBufSizeInFrames = IH264VDEC_DPB_NUMFRAMES_AUTO; decPrm.chCreateParams.displayDelay = gVdecModuleContext.vdecConfig.decChannelParams.displayDelay;//0 decPrm.chCreateParams.processCallLevel = VDEC_FRAMELEVELPROCESSCALL; decPrm.chCreateParams.tilerEnable = FALSE;//TURE FALSE decPrm.chCreateParams.enableWaterMarking = FALSE; ] decPrm.inQueParams.prevLinkId = ipcBitsInVedioId; decPrm.inQueParams.prevLinkQueId = 0; decPrm.outQueParams.nextLink = ipcDecFramesOutVideoId; 从文件中读取一帧,是用ffmpeg读取的。 提示的错误为: [m3video] 218431:WARN [m3video] DECLINK:ERROR in Declink_mpeg4DecodeFrameBatch.Status[-1] [m3video] 218447:DECLINK::links_m3video/iva_dec/decLink_mpeg4.c:[289]::INTERNAL ERROR:-1 [m3video] ALGPROCESS FAILED:STATUS [m3video] outArgs->viddec3OutArgs.extendedError for channel 0 Error: 0x501400 [m3video] 218448:WARN [m3video] DECLINK:ERROR in Declink_mpeg4DecodeFrameBatch.Status[-1] [m3video] 218464:DECLINK::links_m3video/iva_dec/decLink_mpeg4.c:[289]::INTERNAL ERROR:-1 [m3video] ALGPROCESS FAILED:STATUS [m3video] outArgs->viddec3OutArgs.extendedError for channel 0 Error: 0x501400 [m3video] 218465:WARN [m3video] DECLINK:ERROR in Declink_mpeg4DecodeFrameBatch.Status[-1] [m3video] 218484:DECLINK::links_m3video/iva_dec/decLink_mpeg4.c:[289]::INTERNAL ERROR:-1 [m3video] ALGPROCESS FAILED:STATUS [m3video] outArgs->viddec3OutArgs.extendedError for channel 0 Error: 0x501400 [m3video] 218485:WARN [m3video] DECLINK:ERROR in Declink_mpeg4DecodeFrameBatch.Status[-1] [m3video] 218503:DECLINK::links_m3video/iva_dec/decLink_mpeg4.c:[289]::INTERNAL ERROR:-1 [m3video] ALGPROCESS FAILED:STATUS [m3video] outArgs->viddec3OutArgs.extendedError for channel 0 Error: 0x501400 [m3video] 218503:WARN [m3video] DECLINK:ERROR in Declink_mpeg4DecodeFrameBatch.Status[-1] [m3video] 218806:DECLINK::links_m3video/iva_dec/decLink_mpeg4.c:[289]::INTERNAL ERROR:-1 |
|
|
|
物是人非aaa 发表于 2018-5-31 06:59 你的代码能贴出了吗? |
|
|
|
你好, 我使用的是DVR RDK带的的demo里面的解码+显现的demo,修改ini文件里面的配置为mpeg4就可以直接解码相关文件。 |
|
|
|
我试了,demo确实可以解码。 问题解决了,不是rdk这边的问题,是ffmepg的获取帧数据的问题。 |
|
|
|
是不是ffmpeg 获取的不是一帧完整的帧数据呢; |
|
|
|
只有小组成员才能发言,加入小组>>
315 浏览 1 评论
518 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
758 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
643 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1115 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
228浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
187浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
46浏览 13评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
150浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
160浏览 12评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 15:22 , Processed in 0.877362 second(s), Total 58, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号