『漫游』酷论坛>『DVDRip技术研修室』>Doom9上关于120fps的讨论

Doom9上关于120fps的讨论

xxp@2003-03-26 12:58

http://forum.doom9.org/showthread.php?threadid=49561

引用
Avisynth Handling of strange fps (120fps) and Avi Dropped Frames

Go to first unread post Last Thread Next Thread
Author Thread



bill_baroud
Member

Registered: Feb 2002
Location:
Posts: 80

Avisynth Handling of strange fps (120fps) and Avi Dropped Frames
Hi

The problem i encounter is quite unusual and complex to explain so i'll do my best,
although i have already reported something like that some times ago.


Material :
- avi file, 120fps (119.880) Xvid captured from japanese satellite (i suppose)
- vbr mp3 (-_-)

if you open file in vdub, images sequence is :

K DDD P DDD P DDD P DDD P ..... K

where
- K stand for K-Frame
- D for Dropped Frame (as Cyrius explained it to me)
- P for P-frame

image change only on P & K

i'm using Avisynth 2.07 and Vdub 1.5.1


Problem :
Avisynth seems to have hard time to deal with Dropped Frames
or with the unusual frame rate, it's output garbage.

I was suspected something from xvid but Vdub and DirectShowSource with ffdshow are fine
(that's why i posted here, feel free to move the post where it's belong).

avisynth :
http://breizhbill.baroud.free.fr/image posts/GITS_garbage.JPG

virtual dub :
http://breizhbill.baroud.free.fr/image posts/GITS_normal.JPG

what's i'm actually doing, it's open the 120fps file in VirtualDub,
then frameserve it, open the .vdr in Avisynth, Decimate(4) it -to have 30fps output-,
and encode it in huffyuv in another vdub.

DShowSource with decimate gave me 30fps output,
but only 2 "real" images per second.

(just tested 2.51 and it's the same)




Here are my questions :

- First, is it a bug from Xvid decoding (i'm using Koepi Stable one)
or from Avisynth dropped frames handling ?
Or am i really dumb and i'm doing it completly wrong ?

- And second, can someone very advanced with capturing and
interlacing explain me, why there is some japanese guys (no offense to them !)
who encode with such a strange fps (it's not the first time i got files like that).

I somehow suspect Hybrid material (Ghost in the shell TV has a lot of CG scenes -like opening- )
and perhaps broken capture devices ?
But 120 fps is really cpu intensive to decode in real time with vobsub subtitle
(on my XP1600+)


Thanks you for reading me till here and perhaps enlight me on this case

cheers.



Report this post to a moderator | IP: Logged

25th March 2003 21:37



mf
MCF, xvid & vdubmod team

Registered: Jan 2002
Location:
Posts: 122

Looking at the artifacts, it seems as if AVIsynth is feeding XviD the dropped frames as P-frames, where the P-frame is repeated 3 times causing it to repeat the difference on the previous frame 3 times.

In math, it would be like this:
K = 1
P = + 1
D = + 0

So vdub decodes this:
1
2
2
2
2
1

But AviSynth treats it as this:
K = 1
P = + 1
D = P

Causing it to decode this:
1
2
3
4
5
1

I hope this makes sense ^_^'


__________________
mf

"Keep your detail close.. But keep your noise closer."

Fear the wrath of the muttering encoders!



Report this post to a moderator | IP: Logged

25th March 2003 21:48



bill_baroud
Member

Registered: Feb 2002
Location:
Posts: 80

thanks mf, so it's look like there is a problem in Avisynth :/



now i have to understand why they double fps 2 times.



Aristobule send me the culprit ^^; :

http://breizhbill.baroud.free.fr/avi60_07.zip



hope you like the japanese



Report this post to a moderator | IP: Logged

25th March 2003 22:04



Aiorus
Junior Member

Registered: Oct 2001
Location:
Posts: 2

I had the same problem, a Raw file for an Anime, I fixed it with AviUtil, doing 2/5 and 1/2 frames conversions. I hope that helps.



Report this post to a moderator | IP: Logged

25th March 2003 22:33



neuron2
Moderator

Registered: Jan 2002
Location: Chicago, Illinois, USA
Posts: 1735

A point on Decimate(): If you are using Decimate() from the Decomb package, then to go from 120fps pattern to 30fps, you need:

Decimate(4).Decimate(3).Decimate(2)

Using just Decimate(4) will give you 90fps.

Decimate(2).Decimate(2) might also work.


__________________
Donald Graft
Filters for Avisynth and VirtualDub
http://shelob.mordor.net/dgraft/


Last edited by neuron2 on 25th March 2003 at 22:54

Report this post to a moderator | IP: Logged

25th March 2003 22:45



bill_baroud
Member

Registered: Feb 2002
Location:
Posts: 80

thx Neuron, i was doing Decimate(2).Decimate(2)

but if i remember well, Decimate(4) give me the same output ???


how could i know if i use your Decimate or the Internal one (with the plugins autoloading)

seems like the internal has priority



Report this post to a moderator | IP: Logged

25th March 2003 23:05



neuron2
Moderator

Registered: Jan 2002
Location: Chicago, Illinois, USA
Posts: 1735

There isn't an internal one to my knowledge.

To see if mine is running, put show=true as a parameter to Decimate(). If you then see my copyright message on the output, then it is mine.

Decimate(4) will delete one frame out of every 4.


__________________
Donald Graft
Filters for Avisynth and VirtualDub
http://shelob.mordor.net/dgraft/



Report this post to a moderator | IP: Logged

25th March 2003 23:40



ErMaC
Lurker in Training

Registered: Apr 2002
Location: Halfway Between The Gutter And The Stars
Posts: 136

You do not need to use Decimate in this circumstance, in fact I think it might be a bad thing since you're decoding all the dropped frames. I dealt with this back in the first raws that exibited this drop frame thingy. Use SelectEvery(x,y,z) where X is the # of frames in a sequence, and y and z are the frames to take. For your example you would use:
SelectEvery(4,0)


__________________
Justin "ErMaC" Emerson

"In the beginning the Universe was created. This has made a lot of people very angry and been widely regarded as a bad move." -H2G2



Report this post to a moderator | IP: Logged

26th March 2003 01:29
引用

xxp@2003-03-26 13:03

我的做法也是简单的用selectevery(4,0)或者selectevery(5,0)
具体需要注意的是
比如本身是24fps的,是否0,1,2,3,4都相同,如果是,就用selectevery(5,0),不是的话,比如1,2,3,4,5是相同的,就用selectevery(5,1)
引用

skywalker@2003-03-28 03:56

原来AVISYNTH不能识别D frame吗?
那就是说区分30FPS和24FPS就只有全靠人眼了...........
引用

littleyizhi@2003-03-28 08:29

小日本把30fps和24fps搞成120fps,偶们处理起来还真是麻烦。讨厌ing......:mad:
引用

skywalker@2003-03-28 09:12

还好大部分之是OP和ED用30FPS........
如果中间几段都用就更麻烦了...............
引用

xxp@2003-03-28 12:14

制作的原因导致op/ed是30fps,而main部分是24fps
不是硬着要做120fps的
但也曾经见过一些很奇怪很混乱的120fps的avi,一会是4帧循环一会是5帧循环,比较奇怪
引用

ERICK@2003-03-28 16:13

混乱的120fps的avi....不知是不是判断方法上有问题,用帧间差异比较的话,有些avi是很难判断.
引用

魔术杨@2003-03-29 16:01

如果完全混杂 30f与24f在正文相间的话 应该怎么办呢 全做30f的?
引用

littleyizhi@2003-03-29 16:08

引用
最初由 魔术杨 发布
如果完全混杂 30f与24f在正文相间的话 应该怎么办呢 全做30f的?


HGJ12就是这样,全篇30fps&24fps夹杂。MY可以试试。

一闭眼,全部做成30fps,就是文件大点。
引用

xxp@2003-03-29 18:17

其实做24fps也行的,反正也没什么所谓。。。。。。
引用

skywalker@2003-03-30 05:54

只要AVS能识别drop frame..........
就应该能写一段自动trim的script出来........
引用

| TOP