[FFmpeg-devel] Problem with DVD VOB encoding - NAV packets not included properly.

Víctor Paesa wzrlpy
Sun Jul 15 10:39:07 CEST 2007


V?ctor Paesa said:
> Hi,
> Michael Niedermayer said:
>> Hi
>> On Sun, Jul 15, 2007 at 04:09:49PM +1000, Neil Brown wrote:
>>> Hi,
>>>  I've been working with kdenlive (which uses the MLT framework which
>>> uses the ffmpeg libraries) to make a DVD and found that the VOB
>>> created does not have the correct NAV packets.
>>>  This shows up when I run dvdauthor as it cannot find places to put
>>> chapter links, and when viewing the DVD on a DVD player as
>>>  fast-forward and rewind don't work properly.
>>>  The "dvd" format is being requested by kdenlive, but the NAV packets
>>> don't get produced - well to be fair, a 22 minute VOB had 6 NAV
>>> packets rather than the expected 2600 odd.
>>>  I looked through the code and found that in libavformat/mpegenc.c,
>>> in
>>> mpeg_mux_write_packet, towards the end, is this code fragment:
>>>     if (s->is_dvd){
>>>         if (is_iframe && (s->packet_number == 0 || (pts -
>>> stream->vobu_start_pts >= 36000))) { // min VOBU length 0.4
>>> seconds (mpucoder)
>>>             stream->bytes_to_iframe = av_fifo_size(&stream->fifo);
>>> stream->align_iframe = 1;
>>>             stream->vobu_start_pts = pts;
>>>         } else {
>>>             stream->align_iframe = 0;
>>>         }
>>>     }
>>>  If I remove the assignment of 0 to align_iframe in the 'else'
>>> clause,
>>> the code appears to work.  i.e. I get lots of NAV packets, dvdauthor
>>> correctly sets all of the chapter points, and FF/REW works properly
>>> in my DVD player.
>>>  I confess that I only have a shallow understanding of this code, and
>>> it could be that my change has some unintended consequences.  I would
>>> appreciate if it someone more familiar with the code would check if
>>> this is an appropriate change and hopefully get the problem fixed.
>>>  I am quite happy to test any alternate changes to make sure they
>>> still do the right thing on my files if that will help.
>>>  (Yes, I have checked current SVN code).
>> if it is reproduceable with (unmodified) command line ffmpeg then
>> please provide full uncut output + used command line of it
>> also the code you change is there since 2004, could you try some old
>> svn versions to check if they generated nav packets properly
>> and if not then iam a little curious why noone complained yet but
>> ignoring that, your suggested fix looks correct but i first would like
>> to understand the issue better also iam not maintainer of the mpeg
>> muxer code, so i wont approve this change ...
>> also did nav packet generation/dvd encoding work for anyone?
> I recall vaguely a problem involving reading from a VOB with NAVs using
> vcodec copy that would fail to pass on the proper number of NAVs.
> I'll try to find it.

Here it is:


More information about the ffmpeg-devel mailing list