I'm not sure what accuracy in 1 frame means in this context. However, I used the lsdvd tool, which is the basic CLI tool that takes as a parameter only the block device of your DVD drive. (Without this option, it will guess /dev/dvd , which is missing in modern Linux, and usually /dev/sr0 .) Then it will provide you with a good list of chapters on the disk, for example:
$ lsdvd /dev/sr0 Disc Title: METAL_DISC_2 Title: 01, Length: 00:00:00.433 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 01 Title: 02, Length: 00:00:11.500 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 00 Title: 03, Length: 00:00:00.433 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 01 Title: 04, Length: 00:00:00.433 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 01 Title: 05, Length: 00:00:09.000 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 00 Title: 06, Length: 00:00:10.000 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 00 Title: 07, Length: 00:00:00.433 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 01 Title: 08, Length: 00:25:02.333 Chapters: 06, Cells: 06, Audio streams: 01, Subpictures: 00 Title: 09, Length: 00:00:00.433 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 00 Title: 10, Length: 00:07:48.700 Chapters: 16, Cells: 16, Audio streams: 01, Subpictures: 00 Title: 11, Length: 00:00:00.433 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 00 Title: 12, Length: 00:16:43.066 Chapters: 08, Cells: 08, Audio streams: 01, Subpictures: 00 ...snip... Longest track: 20
If you want to write your own code, I think that looking at the source for lsdvd will be instructive. The only library it libdvdread.so.4 in Fedora 25 (other than the standard ones) is libdvdread.so.4 , which is part of dvdnav .
NTN.