当在编码器(DM368 IPNC、Platinum 编码器02.30.00.xx)中设置 GDR 时、我们会看到 XDM 错误"IH264VENC_ERR_GDRDURATION"、即使 GDR Duration 参数根据编码器手册在范围内。
它似乎与 iFrame / IDRFrame 间隔设置相关、但我找不到任何文档或论坛帖子、无法在此处解释关系或限制。
有人能解释一下使用 GDR 时 iFram/IDRframe 的交互是什么吗?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
当在编码器(DM368 IPNC、Platinum 编码器02.30.00.xx)中设置 GDR 时、我们会看到 XDM 错误"IH264VENC_ERR_GDRDURATION"、即使 GDR Duration 参数根据编码器手册在范围内。
它似乎与 iFrame / IDRFrame 间隔设置相关、但我找不到任何文档或论坛帖子、无法在此处解释关系或限制。
有人能解释一下使用 GDR 时 iFram/IDRframe 的交互是什么吗?
您好!
[引用 user="fridgeezer"]在编码器(DM368 IPNC、Platinum 编码器02.30.00.xx)中设置 GDR 时,即使根据编码器手册,GDR 持续时间参数在范围内,我们也会收到 XDM 错误"IH264VENC_ERR_GDRDURATION"。请确保
根据您的用例、enableGDR = 1/2。
GDRDuration < GDRinterval。
[引用 user="frigefreezer"]
它似乎与 iFrame / IDRFrame 间隔设置相关、但我找不到任何文档或论坛帖子、无法在此处解释关系或限制。
有人能解释一下使用 GDR 时 iFram/IDRframe 的交互是什么吗?
[/报价]使用 GDR 时、I/IDE 帧间隔将始终为0 (零)。 只有第一个帧是 I/IDR 帧。
好的、我已经更新到了最新的编码器(02.30.00.06、我们使用的是02.30.00.04)并重建了、没有对错误条件的改变。
只要 GDRDuration > IDrFrameInterval、编码器就会以扩展错误停止:41028/0xA044 IH264VENC_ERR_GDRDURATION。
下面是我们的 VE 设置(来自 ALG_vidEnc.c):
输入 W/H 1080/1920
TargetBitRate 8000000
捕捉宽度1920
帧速率为30000 / 30000
profileIdc=66
levelIdc=42
.intraFrameInterval=0
_h264.idrFrameInterval=30
enableVUIparams=4
rateControlPreset=5
Log2MaxFrameNumMinus4=5
ConstraintSetFlag=0
entropyMode=0
变压器8x8FlagIntraFrame = 0
变压器8x8FlagInterFrame = 0
enableVUIparams=4
meAlgo = 0
seqScalingFlag=0
enableARM926Tcm=0
enableDDRbuff = 0
EnableLongTermFrame = 0
outputDataMode=1.
切片模式= 0
切片格式= 1
编码 Preset=2
编码 Preset=XDM_HIGH_SPEED
encQuality=3
numTemporalLayers=0
svcSyntaxEnable=0
forceFrame = 3.
切片大小=(1080/16)*100/100
_h264.sliceSizeSize=67
_h264.airRate=0
_h264.intraFrameQP=28
_h264.interPFrameQP=28
_h264.initQ=28
_h264.rcQMax=51
_h264.rcQMin=51
_h264.rcQMaxi=42
_h264.rcQMini=1
_h264.maxDelay=2000
_h264.aspectRatioX=1
_h264.aspectRatioY=1
_h264.lfDisableIdc=0
_h264.enableBufSEI=1
_h264.enablePicTimesi=1
_h264.perceptualRC=1
_h264.mvSADoutFlag=0
_h264.resetHDVICPeveryFrame = 0
_h264.enableROI=1
_h264.metaDataGenerateConius=0
_h264.interlaceRefMode=0
_h264.enableGDR=2
_h264.GDRDuration=31
_h264.GDRinterval=269
_h264.LongTermRefreshInterval=0
_h264.UseLongTermFrame = 0
_h264.SetLongTermFrame = 0
_h264.maxBitrateCVBR=12000000
_h264.maxHighCmpxIntCVBR=0
_h264.CVBRsensitivity = 0
_h264.CVBRminbitrate=0
_h264.LBRmaxpicsize=50
_h264.LBRminpicsize=0
_h264.LBRskipcontrol=0x50004
_h264.disableMVDCostFactor=0
_h264.rcAlgo = 1.
让我尝试澄清你的疑问。
GDR 用于刷新整个帧、而不使用 I 帧。 是的、I/IDR 间隔应设置为0。
2. enableGDR = 1/2 (请参阅用户指南)。
2.使用 GDR 时,只有第一个帧是 I/IDR 帧。 其余全部为 P 帧。
3.例如 让我们看一下、GDRDuration = 10、GDRinterval = 100。
这里 是 IPPPPPP.......... 第...页。 第...........页 第...页。 第页 第...页。 第...页。
帧编号12345.......... 100...110.......... 200...210............ 300...110
现在、每100、200、300次将是 GDR 间隔(每100帧一次)。 因此、从帧#100-110开始、整个帧将被刷新。 同样,200-210..... 等等。
看起来问题可能出在 Appro IPNC 代码中、它似乎依赖 I/IDR 帧来锁定 GOP 并开始流式传输。 无论出于何种原因、当 I/IDR = 0时、尽管编码器手册中有说明、但它不会获得初始 I/IDR 帧。
如果 I/IDR =0或>200,则无论 GDR 设置如何,Appro 链都无法锁定 GOP。 目前、我认为我们不能对此做太多工作、因此我们只需限制用户设置即可避免出现问题。
作为后续操作、我们会看到 I 和 IDR 帧不同步、即使我们设置了 i=IDR=30、我们也可以看到、有时流将类似于:
P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-
这是预期行为还是我们配置了错误? 是否会在编码器启动时强制进行 I/IDR 同步?
您好!
[引用 user="frigefreezer"]
作为后续操作、我们会看到 I 和 IDR 帧不同步、即使我们设置了 i=IDR=30、我们也可以看到、有时流将类似于:
P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-P-
这是预期行为还是我们配置了错误? 是否会在编码器启动时强制进行 I/IDR 同步?
[/报价]
这不是预期的行为! 当 i=IDR 时、您不应看到 i.. IDR 将覆盖 I. 是否可以通过禁用 GDR (enableGDR=0)来运行相同的设置? 并分享您的观察结果。