搜索 社区服务 统计排行 帮助
  • 6674阅读
  • 28回复

【讨论】Interlaced H264的一些问题(外一篇:PSP回放字幕抖动问题)

楼层直达
级别: 侠客
注册时间:
2005-02-09
在线时间:
0小时
发帖:
512
这几天看了些interlaced压制方面的信息,为了处理两种情况

1. 全篇pulldown和pure interlaced混合,TIVTC的2pass模式无法捕捉到全部的interlaced部分,对double pulldown部分也无法完美处理
2. 30i的credits和背景pulldown结合

第一种情况我想不到什么完美的解决办法
第二种情况传统上bob到60fps,或者用AnimeIVTC或者AAA之类的东西处理成30p,前者非常浪费码率,后者会对源画面进行大幅度的处理,不符合我的压制理念

于是我考虑,第一种情况使用全篇interlaced压制,而第二种情况则只在ED部分使用interlaced压制,并与前面IVTC成progressive的部分进行结合

第一种情况当然没什么问题,但第二种情况,无法成功结合:
1. mkvmerge抛出warning,结合的文件在结合点之后花屏
2. tsMuxeR可以结合,但fps会统一为IVTC部分的23.976,也就是说后面interlaced部分的fps被降低了。且没有保留sar flag,导致无法自动resize到正确比例
3. yamb结合后,播放时会出现神奇的景象:同时打开了两个播放窗口,同时播放前后两个部分[/KH]

不知道这里的各位大虾、高手有没有空来研究一下这种问题:D


下面是一些个人理解和实验的信息
H264的Interlaced模式一般分两种,field based的PAFF和macroblock based的MBAFF(据说还有一种frame based的PAFF,我硬是看不懂都被weave成frame了还怎么interlaced)

x264的interlaced模式是后者,但没有实现自适应(这是MBAFF的最重要特性之一),不支持umh以上的me,不支持temporal的directi-b,没有正确的interlaced flag(需要hrd_pulldown_interlace的patch,并配合--nal-hrd参数,否则解码器无法识别该文件是否为interlaced)

mainconcept的interlaced模式支持field和MBAFF,但field模式压出来的东西无法被ffdshow正确解码(同样基于libavc的DGAVCIndex却可以,不知为何),其他没什么特别的问题


外一篇:PSP回放与字幕抖动问题

简单的说,PSP对任何源,无论是progressive还是MBAFF interlaced,都以bob方式进行回放
那么,对于IVTC后的24p动画,bob后只有48fps,字幕和文字当然会有抖动的感觉
同样,由于PSP支持MBAFF interlaced,所以在压制DVD时,甚至可以全篇不进行任何IVTC处理,直接以MBAFF形式压成interlaced的H264,PSP上回放效果流畅干净,文字也不会抖动
对于已经IVTC的那些源(例如TVrip之类的),可以尝试使用--pulldown 32参数,不过这种情况我没有实验过

而且由于PSP的这种特性,甚至那种错以progressive方式压的interlaced废片,也能在一定程度上正确回放(这种片子在PSP上逐帧前进的话可以看到特定帧被deinterlace的痕迹,说明PSP可能还有某种自适应的deinterlacer)
级别: 精灵王
注册时间:
2008-04-08
在线时间:
44小时
发帖:
2855
只看该作者 28楼 发表于: 2008-10-19
引用
最初由 qyqgpower 发布
你试过mmg的append在这种情况下会怎么样么

我首帖就说过了:结合点后花屏

上面还少说了一点,如果是anamorphic的raw,建议在mmg里手动加入--engage keep_bitstream_ar_info参数,否则有些解码器不读容器AR的话就无法自动resize了


好吧,我错了...
engage keep_bitstream_ar_info这个不是一直都要加的吗?貌似大部分解码器都无视容器AR吧。
级别: 骑士
注册时间:
2003-06-05
在线时间:
0小时
发帖:
1041
只看该作者 27楼 发表于: 2008-10-19
mmg的append在两个参数不同的情况下合并似乎是会花屏
级别: 侠客
注册时间:
2005-02-09
在线时间:
0小时
发帖:
512
只看该作者 26楼 发表于: 2008-10-19
你试过mmg的append在这种情况下会怎么样么

我首帖就说过了:结合点后花屏

上面还少说了一点,如果是anamorphic的raw,建议在mmg里手动加入--engage keep_bitstream_ar_info参数,否则有些解码器不读容器AR的话就无法自动resize了
级别: 精灵王
注册时间:
2008-04-08
在线时间:
44小时
发帖:
2855
只看该作者 25楼 发表于: 2008-10-19
引用
最初由 qyqgpower 发布
关于hybrid压制,最近又有点心得,可以完美压出I/P混合,且任何解码器都不会出错的片子了
1. I和P分段压制
2. x264的output一定要用raw方式,这是最关键的。用mp4方式出力,再抽raw合并的话就100%会发生seek花屏的问题
3. 把raw用copy/b合并
4. 丢进mmg,设好timecode(TIVTC的2pass timecode可以直接用,因为在未定义的部分是assume 29.97的)


copy /b 可省略,mmg里有个append功能
级别: 新手上路
注册时间:
2007-11-22
在线时间:
0小时
发帖:
117
只看该作者 24楼 发表于: 2008-10-19
有比较过cyberlink的解码器么?
觉得cyberlink解码Interlaced H264效果不错,似乎比ffdshow好。
级别: 侠客
注册时间:
2005-02-09
在线时间:
0小时
发帖:
512
只看该作者 23楼 发表于: 2008-10-18
关于hybrid压制,最近又有点心得,可以完美压出I/P混合,且任何解码器都不会出错的片子了
1. I和P分段压制
2. x264的output一定要用raw方式,这是最关键的。用mp4方式出力,再抽raw合并的话就100%会发生seek花屏的问题
3. 把raw用copy/b合并
4. 丢进mmg,设好timecode(TIVTC的2pass timecode可以直接用,因为在未定义的部分是assume 29.97的)
级别: 圣骑士
注册时间:
2003-02-20
在线时间:
79小时
发帖:
1605
只看该作者 22楼 发表于: 2008-10-18
重复了。。。。

嗯。。。
级别: 新手上路
注册时间:
2007-11-07
在线时间:
0小时
发帖:
5
只看该作者 21楼 发表于: 2008-10-18
引用
最初由 su_xinling 发布
关于ffdshow无法正常解mainconcept的field模式,个人测试的结果是要把容器帧速double后就正常,double过的用coreavc解也还是正常,渲染器显示的帧速是正常的,并没有double变快。就好像sony psp那个压制软件做30i的一样,看到容器帧速也是double。
另外用timecode方式作vfr的mkv也能正常把一个frame coding的和field coding结合起来。我试验的是分辨率一样,帧速一个是23.976p另一为29.97i(59.94),ffdshow和coreavc都能正常播。

怎样才能将容器的帧率double!??
求教!
级别: 精灵王
注册时间:
2005-12-24
在线时间:
45小时
发帖:
2298
只看该作者 20楼 发表于: 2008-07-25
引用
最初由 qyqgpower 发布

哦,忘了那个是没音频版的,PSP里的是有音频版的mux

囧,我自己找段音频mux下试试

在长长地换硬件的道路上,纠结前进中
级别: 侠客
注册时间:
2005-02-09
在线时间:
0小时
发帖:
512
只看该作者 19楼 发表于: 2008-07-25
引用
最初由 绿叶之砚 发布
qyq,你FTP的MP4,PSP理应不能播放,因为没有音频……

哦,忘了那个是没音频版的,PSP里的是有音频版的mux

mbaff 带interlaced flag 带字幕 PSP通用
ftp://qyqgpower.vicp.net/testsub-muxed.mp4
级别: 侠客
注册时间:
2005-02-09
在线时间:
0小时
发帖:
512
只看该作者 18楼 发表于: 2008-07-25
引用
最初由 su_xinling 发布
关于第二点,我是用raw的,一开始先简单append,结果执行输出就报错,所以我就是用暴力copy /b 方式结合成一个raw,然后整体加个timecode。field coding的要用双倍帧数和帧速来计算指定timecode,mbaff用原来正常的的。

这样也有问题,主要是seek上,随便前后跳跳都有可能卡死或花屏

经过进一步测试,三个解码器的情况
CoreAVC:seek问题,卡死或花屏
MainConcept:seek无问题,但没有par信息输出,无法正确resize(单独mux raw也没有par信息,但MP4本身或者把MP4 mux到MKV里都没有问题)
ffdshow:完美
级别: 工作组
注册时间:
2005-10-19
在线时间:
31小时
发帖:
3613
只看该作者 17楼 发表于: 2008-07-25
qyq,你FTP的MP4,PSP理应不能播放,因为没有音频……

凡是未完全安装Office字体的,以下英语短语请无视~~

Knowledge is infinite.


级别: 新手上路
注册时间:
2007-11-19
在线时间:
0小时
发帖:
145
只看该作者 16楼 发表于: 2008-07-25
关于第二点,我是用raw的,一开始先简单append,结果执行输出就报错,所以我就是用暴力copy /b 方式结合成一个raw,然后整体加个timecode。field coding的要用双倍帧数和帧速来计算指定timecode,mbaff用原来正常的的。
级别: 侠客
注册时间:
2005-02-09
在线时间:
0小时
发帖:
512
只看该作者 15楼 发表于: 2008-07-25
引用
最初由 su_xinling 发布
关于ffdshow无法正常解mainconcept的field模式,个人测试的结果是要把容器帧速double后就正常,double过的用coreavc解也还是正常,渲染器显示的帧速是正常的,并没有double变快。就好像sony psp那个压制软件做30i的一样,看到容器帧速也是double。
另外用timecode方式作vfr的mkv也能正常把一个frame coding的和field coding结合起来。我试验的是分辨率一样,帧速一个是23.976p另一为29.97i(59.94),ffdshow和coreavc都能正常播。

第一点测试过了,的确如此

第二点,给append上去的field coding部分指定timecode后mux出来的东西,用ffdshow播放到结合点后非法操作,coreavc不出错但是同样花屏
快速回复

限150 字节
上一个 下一个