liveChapters function
The cues as an ffmpeg metadata file of chapters, the last one running
to length.
Implementation
String liveChapters(List<LiveCue> cues, Duration length) {
final StringBuffer metadata = StringBuffer(';FFMETADATA1\n');
for (int i = 0; i < cues.length; i++) {
final LiveCue cue = cues[i];
final Duration end = i + 1 < cues.length
? cues[i + 1].start
: (length > cue.end ? length : cue.end);
final String title = cue.text
.replaceAllMapped(RegExp(r'[=;#\\]'), (Match m) => '\\${m[0]}')
.replaceAll('\n', ' ');
metadata
..write('\n[CHAPTER]\nTIMEBASE=1/1000\n')
..write('START=${cue.start.inMilliseconds}\n')
..write('END=${end.inMilliseconds}\n')
..write('title=$title\n');
}
return metadata.toString();
}