VideoHelp Forum




+ Reply to Thread
Results 1 to 8 of 8
  1. Member
    Join Date
    Jul 2007
    Location
    Germany
    Search Comp PM
    Hi everybody,
    I have recently bought a Digital Still Camera (Ixus 60).

    The cam produces AVI files with MJPEG codec up to 640x480 and 30fps (as far as I can see, these are progressive).

    What I would now like to do is, archive these on a DVD.

    For standalone archival, I have found the following route:

    Patching the framerate of video and audio to fit 29,97 and treating the material as if it was recorded with 29,97fps. This gives a clean ntsc source which should allow smooth playback with just a slight speed decrease.

    But what I would like to do is to combine real interlaced PAL material (25FPS from minidv) with these videos. Most authoring tools give me error messages when trying to combine PAL and NTSC on one DVD, so I'm lost at this point.

    Are there any guides how to do the described conversion (30FPS P to 25FPS I)?

    I have found some guides addressing the conversion of 25P oder 24P to 29,97 due to the fact that these FPS are used for film. I have also found some descriptions of how to reduce FPS from 29,97 back to film rates (e.g. 24/25 fps, inverse-telecine?). I suppose these can only be applied to 29,97 interlaced material, as they try to get the progressive information back. But in this case, the 30 FPS source is progressive, which seems quite uncommon.

    Another idea would be to increase the framerate of the interlaced 25FPS PAL material to NTSC 29,97 to be able to combine it on a dvd. Anyways, I would rather prefer using 25FPS PAL as the DVD specs, as this is standard here in PAL land... Anyways, does anybody know of a guide to do this if no solution to convert to 25FPS is feasible?
    Quote Quote  
  2. Member Alex_ander's Avatar
    Join Date
    Oct 2006
    Location
    Russian Federation
    Search Comp PM
    In your case (progressive NTSC) it would be easier going to PAL with interlaced result using these lines in AviSynth:

    LanczosResize(720,576)
    ChangeFPS(50)
    AssumeTFF()
    SeparateFields()
    SelectEvery(4,0,3)
    Weave()
    ConvertToYUY2(interlaced=true)#if you encode with CCE

    output for encoding is TFF; 2 progressive and 3 interlaced frames in sequence.
    Quote Quote  
  3. Member
    Join Date
    Jul 2007
    Location
    Germany
    Search Comp PM
    Originally Posted by Alex_ander
    In your case (progressive NTSC) it would be easier going to PAL with interlaced result using these lines in AviSynth:

    LanczosResize(720,576)
    ChangeFPS(50)
    AssumeTFF()
    SeparateFields()
    SelectEvery(4,0,3)
    Weave()
    ConvertToYUY2(interlaced=true)#if you encode with CCE

    output for encoding is TFF; 2 progressive and 3 interlaced frames in sequence.
    Hi Alex,
    thanks for your quick response!

    But as far as I can see, this method will also involve some picture degradation, won't it? I think the 3 interlaced frames you mention will of course be 'calculated', so they may be way off from the original.

    I think the only solution really saving all information is to encode the 30p material with a small slow down to 29,97 ntsc.

    Do you know if CCE can encode this as 'progressive' material to DVD? Or does dvd standard not allow 29,97P? Could motion resolution be increased when interlacing the material?

    ChangeFPS(60)
    AssumeTFF()
    SeparateFields()
    Weave()
    ConvertToYUY2(interlaced=true)#if you encode with CCE

    Should do the mentioned increase in FPS, I suppose.

    I suppose there is neither a 'perfect' way to convert 25FPS I to 29,97FPS I, as this would be the other route I could go to combine the 25 and 30 FPS materials...

    BTW, is SeparateFields really appropriate in this context? The material is true progressive, so I don't see which fields could be seperated? Isn't it, that the source avi contains 30 independent mjpeg pics (nothing weaved)?
    Quote Quote  
  4. Member
    Join Date
    Feb 2004
    Location
    Australia
    Search Comp PM
    Well , you can create a disc using both via pgcedit ... but you might run into a dvd player that wont be all that happy .

    As for the fps conversion , super dose well , a similar process that ulead video studio use's .
    Quote Quote  
  5. Originally Posted by ezekiel42
    LanczosResize(720,576)
    ChangeFPS(50)
    AssumeTFF()
    SeparateFields()
    SelectEvery(4,0,3)
    Weave()
    ConvertToYUY2(interlaced=true)#if you encode with CCE

    as far as I can see, this method will also involve some picture degradation, won't it? I think the 3 interlaced frames you mention will of course be 'calculated', so they may be way off from the original.
    ChangeFPS() will create 50 frames out of 30 by duplicating frames. SeparateFields() then splits each frame into two fields. SelectEvery(4, 0, 3) throws away half the fields, then finally Weave() weaves pairs of fields back together again creating 25 interlaced frames (actually, some of the frames will contain two fields from the same original progressive frames, some will contain fields from different frames). Essentially what your doing is pulling 50 fields out of the original 60, each field as close to the appropriate time as possible. Nothing is synthesized or blended. You could try ConvertFPS() instead of ChangeFPS() but I dislike the blended fields that produces.

    Originally Posted by ezekiel42
    I think the only solution really saving all information is to encode the 30p material with a small slow down to 29,97 ntsc.
    And then what? That's not a PAL frame rate, you'll still have to convert to 25 fps. Of course, most PAL equipment will play NTSC material so you could do this and make an NTSC DVD.

    Originally Posted by ezekiel42
    Do you know if CCE can encode this as 'progressive' material to DVD? Or does dvd standard not allow 29,97P? Could motion resolution be increased when interlacing the material?
    CCE can encode 29.97 fps progressive. I'm not sure that's valid for NTSC DVD. You could always encode as interlaced though.

    Originally Posted by ezekiel42
    ChangeFPS(60)
    AssumeTFF()
    SeparateFields()
    Weave()
    ConvertToYUY2(interlaced=true)#if you encode with CCE

    Should do the mentioned increase in FPS, I suppose.
    SepareteFields() and Weave() are a waste in this case. The result will be exactly the same if you leave them out.

    Originally Posted by ezekiel42
    I suppose there is neither a 'perfect' way to convert 25FPS I to 29,97FPS I, as this would be the other route I could go to combine the 25 and 30 FPS materials...
    There's no perfect way of performing any kind of frame rate conversion.

    Originally Posted by ezekiel42
    BTW, is SeparateFields really appropriate in this context? The material is true progressive, so I don't see which fields could be seperated? Isn't it, that the source avi contains 30 independent mjpeg pics (nothing weaved)?
    I think this is the source of your confusion. A field is just every other scanline of a frame. Every frame contains two fields -- one with all the even numbered scanlines, one with all the odd numbered scanlines. The difference between interlaced and progressive frames are whether the two fields are from the same picture (instant in time).
    Quote Quote  
  6. Member Alex_ander's Avatar
    Join Date
    Oct 2006
    Location
    Russian Federation
    Search Comp PM
    Originally Posted by ezekiel42
    Could motion resolution be increased when interlacing the material?
    Yes, but this needs interpolation of missing motion phases (compared to true interlaced material). You can modify the script for this by using frame interpolation tools instead of ChangeFPS function (that just inserts duplicate frames). This can be done with external MVTools plugin (http://avisynth.org.ru/mvtools/mvtools.html):

    LoadPlugin("path\mvtools.dll")
    source=AVISource("path\your_video.avi",false)
    backward_vec = source.MVAnalyse(isb = true, truemotion=true, pel=2, idx=1)
    forward_vec = source.MVAnalyse(isb = false, truemotion=true, pel=2, idx=1)
    source.MVFlowFps(backward_vec, forward_vec, num=50, den=1, ml=100, idx=1)
    LanczosResize(720,576)
    AssumeTFF().SeparateFields()
    SelectEvery(4,0,3).Weave().ConvertToYUY2(interlace d=true)

    MVFlowFps function here calculates position for every pixel in interpolated frames using information of motion vectors obtained by MVAnalyse function. Depending on type of the material, this can give better results than the simple script (especially useful for video with fast panning). This can be used with (like above) or without framerate conversion (num=60 or num=60000, den=1001 for going to 29.97 keeping video length). Also useful for processing low-fps footage from still camera.

    Edit: one missing '0' in 60000.
    Quote Quote  
  7. When used like this MVTools can deliver some remarkable results. But it can also deliver severe artifacts. Here are some crops from after and before frames using the above script:



    I Bob()'d out the interlacing of the after image for clarity. The source was 29.97 fps progressive DV. I wouldn't use it blindly on an entire movie. Some HDTV's are starting to use this sort of technique. Unfortunately some of them don't allow you to disable the feature.
    Quote Quote  
  8. Member Alex_ander's Avatar
    Join Date
    Oct 2006
    Location
    Russian Federation
    Search Comp PM
    Yes, it happens to details in some scenes with fast (global+other) motion, but even then it works for the rest of the frame (like in your example) and can smoothen motion at the cost of artifacts noticeable mainly in still frames. I agree, it should be used just where necessary or safe (I recently did it to 12.5=>25 material where no artifacts appeared at testing frame by frame).
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!