[Theora] A/V sync. problems with NTSC DVD source
hb at x256.org
Tue Apr 4 17:09:51 PDT 2006
I decided to try Theora and encoded a PAL DVD. I was very pleased with
the result. It's better than "DiVX" for the same bitrate, I think, and
the audio is clearly superior to MP3 audio.
However, I'm having serious troubles encoding NTSC DVDs and getting the
video and audio durations to match.
I read some messages on this list about such problems and so what I am
* Using mencoder to encode the DVD to a raw YUV file, with pulldown, and
PCM audio. I've set the output frame rate to 23.976, which I believe is
correct for an inverse-telecined NTSC movie.
* Using mplayer to play the YUV file into a raw YUV FIFO, as required by
the theora encoder. Using another instance of mplayer to play the PCM
audio into a WAV FIFO.
* Running the example encoder on the two FIFOs.
This is roughly the procedure which works well with PAL DVDs, except
minus the telecine/pulldown stuff. However, I find that the audio is out
by about one second per minue of video. The further into the video I
play back, the more the audio gets ahead of the video. This indicates
the detected frame rate, 23.976, is too low. If I force the
example_encoder to use a frame rate near 24.34 (without adjusting any of
its inputs), it's much closer to being correct. However it's almost
impossible to get it exactly right. By the end of the movie there will
always be a delay unless I go through a ridiculously long period of
trial and error.
Several of the DVDs I have tried seem to have random frame rate changes
between 23.976 and 29.98 in them. My understanding is using the "ofs"
flag in mencoder will smooth it out to give the proper 23.976 average.
Perhaps this is not working, hence my problems?
Anyway I would love to hear from anyone who has successfully encoded
this type of video in theora and how they did it without the A/V sync.
I may share the perl script I wrote, if I get it working in all cases,
which makes encoding DVD video to Theora easy.
P.S. In case anybody is wondering, I'm encoding the DVDs so I can watch
them off my hard drive without having to go fetch the disc etc. I find
it more convenient that way.
More information about the Theora