[О блоге] [наверх] [пред] [2022-11-14 20:17:41+03:00] [3ceaaf31a5fea22e03c95d202c439a9194c0a20e]
Темы: [book][multimedia][tip][zsh]

Разделить аудиокнигу на части

Скачал я тут аудиокниги. Одна книга -- один файл. Но, благо, с
метаинформацией о частях (к сожалению в MP4 контейнере, а не Matroska).
Надо разделить на много файлов, так как ни на одном своём
MP3-проигрывателе нельзя быстро отмотать, например, на час вперёд.

FFmpeg-овская утилита ffprobe может выдать метаинформацию в JSON
формате. А дальше в цикле вызываю ffmpeg для создания набора WAV файлов.
Предварительно полность. декомпрессировав весь звук, потому что каждый
вызов ffmpeg с "перемоткой" вперёд -- отъедает кучу CPU, это медленно.

    ffprobe -i *.m4b -print_format json -show_chapters > json
    ids=`gojq ".chapters[-1].id" < json`
    ffmpeg -i *.m4b -map_metadata -1 -ac 1 -y wav.wav
    for i ({0..$ids}) {
        start=`gojq ".chapters[$i].start" < json`
        start=$(( $start / 1000 ))
        finish=`gojq ".chapters[$i].end" < json`
        finish=$(( $finish / 1000 ))
        finish=$(( $finish + 1 - $start ))
        ffmpeg -i wav.wav -ss ${start}s -t ${finish}s -y \
            `printf "%03d" $(( $i + 1 ))`.wav
    }
    rm wav.wav
    normalize *.wav

    [оставить комментарий]