大家好,现在需要使用DM8168(dvrrdk4.0),对网络ts流重新解编码。
由于ts流的视频格式是使用隔行扫描、H264/mpeg2编码,在重新编码成h264时,画面有抖动的情况。我尝试了以下方法:
1.ipcOutHost->dec->enc->ipcInHost(scanFormat, fieldMergeDecodeEnable,dataLayout不同参数组合都试过)。
2.ipcOutHost->dec->ipc->dei->ipc->enc->ipcInHost(scanFormat, fieldMergeDecodeEnable,dataLayout不同参数组合都试过)。
以上尝试均未能解决画面抖动问题。大家有遇到这样情况吗?
Chris Meng:
Long Yun,
不清楚你说的抖动具体是什么现象。
如果你解码后的数据是隔行的,你可以利用DEI去交织,变成逐行数据,然后进行h264编码。
或者你可以配h264编码为编码隔行数据的模式。
yun long1:
回复 Chris Meng:
编码为隔行数据模式,有例子参考吗?
Chris Meng:
回复 yun long1:
Long Yun,
DVR RDK 4.01就支持隔行编码,你可以在enclink_h264.c里面搜索一下INTERLACE关键字。
yun long1:
回复 Chris Meng:
Hi,Chris Meng,
我使用DVR RDK 4.00,按照你说的两个方法试了,画面抖动还是没能解决。隔行编码,是只有DVR RDK 4.01支持吗?DVR RDK 4.00不支持?
Chris Meng:
回复 yun long1:
Long Yun,
你的抖动具体是什么现象?是否是奇偶场反了?
DVR RDK4.0就支持隔行编码,下面的信息可以在releasenote里面找到:
Support for Interlace mode added in Links (Encoder, Decoder etc)• Refer Interlace Use Case Support for more details
yun long1:
回复 Chris Meng:
抖动情况请看附件中的视频。
主要的问题是,h264/mpeg2解码后的数据,fid固定是FVID2_FID_TOP的。
pReqObj->OutFrameList.frames[prosIdx]->fid = Utils_encdecMapXDMContentType2FVID2FID(displayBufs-> contentType);
Chris Meng:
回复 yun long1:
Long Yun,
你前端收到的h264码流或者是MPEG2码流是否也是隔行编码的?
如果是解码每帧应该会有两场数据,大小是720×288.
yun long1:
回复 Chris Meng:
确实是隔行编码的,用mediainfor 可以确定。解码的大小,也是720×288的,附件中视频,是经过dei处理的,由于只有奇数场,dei其实只是将视频缩放成720×576,所以导致“”抖动“的情况。这会不会是dec库的bug呢?
Chris Meng:
回复 yun long1:
Long Yun,
把TS码流保存下来,用DVR RDK自带的decode+display的demo解码也是同样的问题么?
Chris Meng:
回复 Chris Meng:
Long Yun,
DVR RDK4.01增加了下面的功能,建议你在4.01下使用解码显示的例子测试。
Display
Support for Interlace mode added in Decoder Link (Outputs 2 interlace frames) & Software Mosaic Link (performs de-interlace if interlace frames are input)