I have multiple audiobook files (m4b) that ffprobe is able to retrieve the chapters from just fine… except the chapter information is printed to stderr and never in the formatted (STDOUT) output. The Perl module FFprobe doesn’t handle the chapters so I submitted feature request #73803
Feature request is to format the chapter output.
jason@jason-Inspiron-1545 ~/bin $ ffprobe "/home/jason/Audiobooks/Ben Bova/Mars/Mars 1.m4b" 1>/dev/null
libavutil 51. 7. 0 / 51. 7. 0
libavcodec 53. 5. 0 / 53. 5. 0
libavformat 53. 2. 0 / 53. 2. 0
libavdevice 53. 0. 0 / 53. 0. 0
libavfilter 2. 4. 0 / 2. 4. 0
libswscale 2. 0. 0 / 2. 0. 0
libpostproc 52. 0. 0 / 52. 0. 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xddfac0] max_analyze_duration reached
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/jason/Audiobooks/Ben Bova/Mars/Mars 1.m4b':
Metadata:
major_brand : M4B
minor_version : 0
compatible_brands: M4B mp42isom
creation_time : 2009-09-08 16:19:29
album : Mars
artist : Ben Bova
genre : Audiobook
Duration: 03:51:23.41, start: 0.000000, bitrate: 81 kb/s
Chapter #0.0: start 0.000000, end 2779.567914
Metadata:
title : Mars - 01 of 24
Chapter #0.1: start 2779.567914, end 5555.049161
Metadata:
title : Mars - 02 of 24
Chapter #0.2: start 5555.049161, end 8334.617075
Metadata:
title : Mars - 03 of 24
Chapter #0.3: start 8334.617075, end 11110.098322
Metadata:
title : Mars - 04 of 24
Chapter #0.4: start 11110.098322, end 13883.419864
Metadata:
title : Mars - 05 of 24
Stream #0.0(und): Audio: aac, 44100 Hz, stereo, s16, 80 kb/s
Metadata:
creation_time : 2009-09-08 16:19:29
Stream #0.1(eng): Subtitle: text / 0x74786574
Metadata:
creation_time : 2009-09-08 17:31:00
Unsupported codec with id 94213 for input stream 1
patch to add m4b chapter support:
82c82
< my ($tree, $branch, $tag, $stream);
---
> my ($tree, $branch, $tag, $stream, $chapter);
100c100,108
< }
---
> } elsif ($line =~ m/Chapter \#(\d+\.*\d+): start (\d+\.*\d+)\, end (\d+\.*\d+)/i) {
> my ($start, $end) = ($2, $3);
> $chapter = $1;
> $chapter =~ s/\.//g;
> $chapter =~ s/^0+(\d)/$1/;
>
> $$tree{chapters}{$chapter} = { start => $start, end => $end };
> } elsif ($line =~ /title\s+: (.+)$/) {
> $$tree{chapters}{$chapter}{title} = $1;
101a110
> }
Pingback: Perl Script to Convert an Audiobook (m4b) to mp3 files splitting on the chapters | Jason L. Froebe - Tech tips and How Tos for Fellow Techies