[FFmpeg-user] trouble with AVChapter

Steve Dibb steve.dibb at gmail.com
Wed Nov 25 08:32:11 EET 2020


Hey there,

So I'm creating an MP4 file, and testing setting some chapters, and running
into two problems.

1. The chapter ranges are wrong -- in the example below, they should all be
one second apart, but the first chapter gets set to 0 to 4 seconds, then
the ones in the middle have no range, of 4 seconds to 4 seconds, and the
last chapter's range is 4 seconds to 5 seconds.

2. The chapter titles are all set to the last metadata entry for title given

Here's some sample, simplified code:

        unsigned int num_chapters = 5;
        unsigned int chapter_ix = 0;
        unsigned char chapter_title[80];
        memset(chapter_title, '\0', 80);

        AVChapter *chapter = calloc(1, sizeof(AVChapter));

        chapter->time_base.num = 1;
        chapter->time_base.den = 1000;

        AVChapter **chapters = calloc(num_chapters, sizeof(AVChapter*));

        for(chapter_ix = 0; chapter_ix < num_chapters; chapter_ix++) {

                chapter->id = chapter_ix + 1;
                chapter->start = 1000 * chapter_ix;
                chapter->end = chapter->start + 1000;

                printf("chapter range: %i-%i\n", chapter->start,
chapter->end);

                sprintf(chapter_title, "Chapter %u", chapter_ix + 1);

                av_dict_set(&chapter->metadata, "title", chapter_title, 0);

                chapters[chapter_ix] = chapter;

        }

        output->nb_chapters = num_chapters;

        output->chapters = chapters;

And the output of ffprobe:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'dvd_rip_00.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:00:05.00, start: 0.000000, bitrate: 9020 kb/s
    Chapter #0:0: start 0.000000, end 4.000000
    Metadata:
      title           : Chapter 5
    Chapter #0:1: start 4.000000, end 4.000000
    Metadata:
      title           : Chapter 5
    Chapter #0:2: start 4.000000, end 4.000000
    Metadata:
      title           : Chapter 5
    Chapter #0:3: start 4.000000, end 4.000000
    Metadata:
      title           : Chapter 5
    Chapter #0:4: start 4.000000, end 5.000000
    Metadata:
      title           : Chapter 5

Can someone look at this for me and see if there's any glaring errors on my
end?

Thanks!!

Steve


More information about the ffmpeg-user mailing list