NMM视频技术(旧)

 找回密码
 成为会员
搜索
查看: 6018|回复: 16

如何识别mkv封装的vfr?(solved)

  [复制链接]
发表于 2010-3-1 19:50 | 显示全部楼层 |阅读模式
本帖最后由 delectate 于 2010-3-2 16:31 编辑

以前mkv封装倒是没有遇到什么问题

直到前几天,封装凉宫春日,帧率总是不对,av不同步,后来才知道是vfr捣鬼 LOL

extract了timecode才解决问题

但是怎样才能快速识别视频是vfr呢?我用smplayer没有看出来,用mediainfo显示帧率都是23.976

谢谢您的解答!
发表于 2010-3-1 20:15 | 显示全部楼层
最简单的办法是不extract直接封装(除非封装工具不支持mkv,不过有ffmpeg这样的万能工具),或者不管是不是VFR一律当VFR处理(抽tc等等)。
发表于 2010-3-1 20:34 | 显示全部楼层
总帧数除以总播放时长(秒)不是23.976、25.000、29.970、59.940中的任何一个就要怀疑是vfr。
 楼主| 发表于 2010-3-2 16:31 | 显示全部楼层
回复 3# dgwxx
感谢您的解答。

2#的方法很不错,但是如果仅仅是重新混流,可以采用,如果对视频进行了编辑,应该就不适用了

frame/time是很好的方法,谢谢~
发表于 2010-3-2 18:34 | 显示全部楼层
因为你提问强调的是封装= =

其实一般非线性编辑软件都是基于时间线而非帧数编辑的,所以不存在VFR问题。如果你特指AviSynth,那么可以用FFMS2做源滤镜输出一个TC,要嵌字幕的话可以用MPC-HC版VSFilter。
发表于 2010-3-2 20:02 | 显示全部楼层
因为你提问强调的是封装= =

其实一般非线性编辑软件都是基于时间线而非帧数编辑的,所以不存在VFR问题。 ...
ssnake 发表于 2010-3-2 18:34



    求详细做法,下载了MPC-HC并未发现VSFilter。是需要自己寻找源码编译么
发表于 2010-3-2 20:17 | 显示全部楼层
求详细做法,下载了MPC-HC并未发现VSFilter。是需要自己寻找源码编译么
xiao1 发表于 2010-3-2 20:02

在standalone filters里,VSFilter.dll
TextSub("xxx.ass","xxx.tc.txt")
发表于 2010-3-7 17:10 | 显示全部楼层
在standalone filters里,VSFilter.dll
TextSub("xxx.ass","xxx.tc.txt")
ssnake 发表于 2010-3-2 20:17



    大大说的是这个么http://sourceforge.net/projects/mpc-hc/files/
貌似是去年的编译版本 没有支持VFR

新版本好像是从今年增加的VFR支持 但没有找到编译完成的版本http://sourceforge.net/apps/trac/mpc-hc/search?q=VSFilter
[1659]: -Added VFR support to the VSFilter AviSynth filter. Patch by nielsm. ...
发表于 2010-3-7 21:03 | 显示全部楼层
发表于 2010-3-7 23:41 | 显示全部楼层
额。。。。。。。。。。。。。。。。。。。。

感谢耐心解答 会用了
发表于 2010-3-29 01:13 | 显示全部楼层
额……我也想问问……
1)关于肉粥大的direct264,前几天弄一个无头的op的iso,真人前半部+动画后半部在一个vob文件,真人一帧帧看无交错,动画5烂2,请问这是30i/30p的视频么?vfr和这个有关么?谢谢!
(事先说说我是菜的很惨的…已看过一遍基本全部置顶帖,基本了解一些…不过还是不懂…T-T),
2)不知道用什么工具弄……用MPC一帧帧看是5烂2,后来乱搞找到了dgindex看,但是不会用dgindex,也是5烂2,我想这是24p的telecine之后的片段,直接用肉粥大的direct264加--ivtc t参数弄,direct264自动加deinterlaced,但我奇怪肉粥大说没集成反交错的……
ffdshow里面不加反交错,但是压出来的帧时间上空间上不规则的坏了,我看到的是本来的progressive帧有些没事,有些不行,本来interlaced帧基本都产生鬼影啊(是指同一帧出现两个半透明的场景么?),或者明显的横丝,色彩都乱了。
3)direct264很容易上手,但是好像有些扩充性不很大(其实还是自己不会用…),于是想问问,一般用什么工具搭配处理DVD比较好呢?
4)请问ivtc是把场的顺序排好么?和field match还有deinterlaced有什么不同么?输出来的还是原帧率么?(置顶帖有说但是实在好多,看不懂)请简单点解释一下,感谢!
发表于 2010-3-29 08:19 | 显示全部楼层
本帖最后由 a4840639 于 2010-3-29 08:20 编辑

1)无头的OP?这是什么,我想说30p的真人视频还真是比较稀有的
5烂2说明需要做IVTC还原成24p,这样和30p的部分在一起自然需要VFR了
2)你确定你解码用的FFDSHOW?direct264的IVTC功能虽然只能满足基本的需求,但应该还不至于这样,你说的这种情况大概是解码器对全片进行了场混合
3)要精确处理DVD还是老老实实建用AVS吧,用Directshow输入不能精确到帧,问题不少,更适合用来二压或者压不需要IVTC的源。推荐IVTC工具:http://www.nmm-hd.org/bbs/thread-667-1-1.html
4)一般情况下IVTC=field match+decimate(删除场匹配后产生的重复帧),输出的肯定不是原帧率
在理想情况下IVTC是可以做到完美还原逐行扫描画质的。Deinterlace所做的则是把原生的隔行扫描内容处理成逐行扫描,自然不可能达到真正逐行扫描级别的细节。
发表于 2010-3-29 09:59 | 显示全部楼层
感謝a4840639大大的幫助!
1)查了一下wiki的vfr詞條,裏面好像表述為讓動態很少的部份幀率很少,那麼,請問是否說是在1s內的幀數可以很少么?
但是有些動態大的視頻部份超過源視頻該時段部份的幀率,儘管是大了,但是有些117.34fps左右都有了,源和成品平均幀率(?)是23.976,請問是否正常?
這個和您所說的vfr的關係是……?(我看了一些nmm論壇的帖子,理解為,真人部份fps不變(也還是crf么?),動畫部份由23.976轉為29.94,通過插入null幀(?)=29.94fps的30p,好像a4840639大關於此視頻的表述和wiki詞條的表述有點不同(感覺可能我英文理解錯了…不過wiki的vfr詞條真的好簡略……))
2)額,解碼的時候應該不是的,因為用direct264的時候當時系統問題(就是搞這個視頻“壞”了…),忘了……剛解碼的時候dshow返回error 4:failed to render ###.vob
另外,啥都不加,直接喂direct264,sar是32:27,不是40:33么?
3)感謝!請問dgdecnv200b3是要錢的嗎?好想看簡介頁面有些donate才有license,我用來開m2ts直接給我一個license file missing……
4)那麼請問,原生的隔行內容是指30i幀幀交錯么?deinterlace實現的濾鏡很多么?還是說本來就是一個濾鏡呢?
小白問題很多很無聊,請見諒!感謝了!
发表于 2010-3-29 11:16 | 显示全部楼层
本帖最后由 a4840639 于 2010-3-29 11:24 编辑

1,做VFR的目的一般来说并不是为了省码率,而是为了保证视频的基本流畅,或者说是是片源应该是什么速率就做成什么速率。一个常见的NTSC制隔行扫描视频每秒拥有60个场,每个场都可以拥有不同的动态信息(所以deinterlace成30p会丢失一半的动态信息,场混合的情况不算),这样一来不管储存的片源是30hz,60hz还是24hz的内容都能流畅显示,但是把DVDRIP做成全篇60p显然是不合理的,所以才需要可变帧率

把24个逐行扫描帧转换成60个场(或者说是30个帧也行)的过程就是一种telecine,目的是让电影(电影多数为24p)在传统隔行扫描的电视上流畅显示,方法是把奇数帧显示2个场,偶数帧显示3个场(或者倒过来),所以叫3:2(2:3)pulldown。做IVTC之后自然把原始的24p给还原了出来。不一定的是动画,只要片源是以24p的帧率制作的,就有可能采取这种pulldown。另一方面来说动画也能会使用30p的帧率来进行制作。
但是需要说明的地方在于,NTSC制式DVD可以储存24p(film)的视频,在播放的时候由DVD播放器进行telecine,此类源直接让解码器输出原始的24p画面就没问题了,绝大多数较新的商业电影都具备24p的数字母带,所以DVD也采用此种方式制作。与之相对的是DVD也可以储存在编码前就被telecine过的内容(video),大部分日本动画虽然是以24帧的标准制作,却是在telecine之后再使用隔行的非编机进行的剪辑,这就必须用IVTC滤镜了。(因为有些编码器会尝试在编码时进行IVTC等原因,有些片子一部分是film,但同时也有video的部分)

120帧是用AVI封装实现VFR的一种取巧的方法(AVI封装无法实现原生的VFR),并不是一个真正存在的帧速率

2)用graphedit可以查看系统默认的滤镜。
至于MPEG2解码器使用错误的SAR这是个老生常谈的问题了

3)不带nv的那个是免费的,不过貌似停止开发了

4)当然有很多不同算法不同效果的滤镜   AVS的外部deinterlace滤镜:http://avisynth.org/mediawiki/External_filters#Deinterlacing
其实对动画这样的片源,很多时候都剪辑的不规范,不可能完美IVTC,还是得用deinterlace,
发表于 2010-3-30 14:53 | 显示全部楼层
感謝a4840639大大的幫助!
1)關於VFR,請問我是否可以理解為:
【a視頻=[b視頻24p(cfr)]+[c視頻30p(cfr)]】=a視頻是VFR視頻呢?
120fps的avi就是因為無法在一段視頻內出現兩段不同幀率的視頻出現的么(小弟理解為24p和30p部份分別插入數量不等null幀,達到120fps)?
1-1)另外,請問NTSC的60個場,在:
若原來24p的視源,通過3:2 pulldown,得到60field,但是60field裏,只有源24幀所帶的時間上的動態信息吧?(24frames/48field裏面,每兩場配一幀,一幀是一時間點的畫面,不知道理解有沒錯)

經pulldown多出來的重複的信息如果完美的inverse telecine(如您所提及的由DVDplayer做的telecine,存儲24p視訊)telecine之後的視頻,每場總能找到和其相同時間點拍攝的另一場,

所以小弟臆想:deinterlace(通過場匹配的手段,還原回24p)不會丟失動態信息(小弟對這些概念理解很淺,問題很欠扁請見諒)
如果是通過單場或前後幀deinterlace成progressive幀,則會可能導致p幀也被處理,i幀沒找對場,(原理還有概念真的不清楚,望高手教教,簡單講解一下)導致鬼影,某些塊色彩錯誤(?),并導致動態信息錯誤么?


2)感謝a4840639大大的提示,我系統是sp3,ffdshow+CoreAVC+MPC+KM(安裝時候記得沒裝其他什麽解碼器和分離器),用graphedit查看,系統不帶MPEG2解碼器,但用MPC能播放,請問是因為MPC自己用了內建的MPEG2解碼器么?
另外,昨天用TMPGEnc4XPTrial壓視頻,前10秒有水印……
請問該軟件內建了MPEG2解碼器么?效果?
另外,壓視頻的時候(DVD的vob文件)用了YUV的CCIR601 EXPANSION結果色彩重了好多,暗部都沒了,請問這是由於色彩空間從16-240伸張到0-255么?還是說反了?
看了置頂帖,但是都弄不清楚啥情況用這東西了……

2-1)請問我裁邊從720x480→712x480有問題么?另外TMPGEnc內部的x264很舊了吧?不用TMPGEnc,用AVS+x264的cli是否
能把TMPGEnc所有功能完美再現呢?謝謝!!


3)請問處理藍光的m2ts或者ts怎麼辦呢?用啥好呢?謝謝!

4)感謝a4840639大大!!deinterlace會誤判么?把progressive幀也弄錯麼?謝謝!
发表于 2010-3-31 06:01 | 显示全部楼层
本帖最后由 a4840639 于 2010-3-31 06:03 编辑

1)基本上就是这样,
不过我是没见过48hz隔行扫描的电视,所以把24帧说成是48个场我感觉比较牵强...

我想你说的第一种做法指的就是IVTC,虽然广义上来说IVTC应该也能算是"Deinterlacing“,但是一般来说IVTC和Deinterlacing因为原理的差异会被视为两种相当不同的操作。
我说的会损失动态是指deinterlace成30p的情况,deinterlace成60p自然是没问题的,至于那些什么鬼影之类都属于deinterlace滤镜的算法问题,不同的滤镜有不同的效果罢了。

2)用graphedit渲染(render)vob文件就能看见默认的解码方式,你的意思是说这么做graphedit会报错?按理说这不太可能,XP本身就有MPEG2解码器,更别说FFDSHOW也有MPEG2解码能力。TMPGEnc这个东西我是真的没什么了解,不过其自带MPEG2解码是肯定的,其使用的AVC编码器似乎不是x264而是MainConcept AVC。我个人来说自然是推荐使用AVS+x264cli的,我无法判断你说的颜色问题到底是播放时解码器没有设置好还是在TMPGEnc里头动了颜色,但是我能确定的是用AVS处理视频可以全程不对颜色做任何转换,如果不自己乱改颜色的话保证不会出错(HD视频resize到SD的情况除外)。

分辨率的问题得看个人习惯了,有些人能接受这种分辨率有些人则完全不行,在某些环境上播放也许也确实会有小问题。不过从理论上来讲712x480可以无损转换成720x480,因为编码器在编码的时候只能用MOD16的分辨率,对于非MOD16的分辨率是让解码器在解码以后切掉指定的像素来实现的。

3)dg系列的解码器本来就支持TS封装的输入,对于BD的音频处理我推荐使用eac3to。如果是VC1编码的话就只能在dgvc1decodenv,directshowsource和ffmpegsource2这三者中选了。

4)判断片源类型,指定滤镜使用范围应该是由你自己进行的。虽然说有些滤镜会对画面进行检测,对没有交错的帧weave,但是这种设计应该也只是为了提升静态画面的画质。像NNEDI2这种的单场补差滤镜会对所有帧进行处理。
发表于 2010-3-31 13:22 | 显示全部楼层
感謝 a4840639大大百忙中的幫助!!

基本理解了!!

大大有論壇么,或個人博客?想學習學習!
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

小黑屋|手机版|NMM视频技术

GMT+8, 2025-5-6 00:52 , Processed in 0.079707 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表