From: Sergey Matveev Date: Mon, 14 Nov 2022 17:17:41 +0000 (+0300) Subject: Разделить аудиокнигу на части X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=3ceaaf31a5fea22e03c95d202c439a9194c0a20e;p=stargrave-blog.git Разделить аудиокнигу на части Скачал я тут аудиокниги. Одна книга -- один файл. Но, благо, с метаинформацией о частях (к сожалению в 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 ---