2023-05-04

vak: (Знайка)
По жизни я регулярно слушаю музыку из нескольких источников: Apple Music, music.amazon.com, aerostatbg.ru, ну и собственная MP3-библиотека накопилась. Вдруг в последнее время обнаружилось, что мой слух стал капризным к качеству звука. Хочется маленько получше. Про самый качественный источник звука в моём хозяйстве я упоминал: это Fiio X1. Самая первая модель, практически ретро сейчас. Фунциклирует хорошо и надёжно, с ним нет проблем. На него я наскладировал кучу добра в формате FLAC, накачанного из интернета. И оно перестало меня устраивать.

FLAC это сжатие аудио без потери качества. Я набрал на торрентах музыки 24-битного качества и оцифровкой 96кГц и 192кГц. Но всё это записано с грампластинок. Сигнал передан идеально, но... Да простят меня аудиофилы, но сама запись на грампластинках уже изуродована при записи. Не всё, что пожелаешь, можно записать на пластмассу. Динамический диапазон приходится сжимать. Низкие частоты вообще пишутся в моно, иначе за счёт разницы каналов игла будет выскакивать из канавки. И всё это слышно. Прослушайте один и тот же альбом, оцифрованный с CD и с пластинки - разница хорошо ощущается.

Стал я искать источник хорошего звука. Чтобы лучше, чем CD. Не то чтобы я против CD, но почему бы не поискать лучше. В интернете ничего ценного не надыбал. Пришёл к выводу, что нужно брать Blu-ray диски и оцифровывать самому. Чем и занялся. Изложу для памяти, как это делается.

1. Приобретаем девайс, умеющий читать Blu-ray диски. Я выбрал LG BP60NB10 - он заодно и писать умеет, в том числе M-DISC, что пригодится для других целей.

2. Устанавливаем нужный софт. Процедура более-менее одинаковая, что на маке, что на Линуксе. На маке это:
brew install makemkv ffmpeg mediainfo
На Ubuntu:
sudo apt install makemkv ffmpeg mediainfo
3. Вызываем утилиту MakeMKV и запускаем бэкап Blu-ray носителя на жёсткий диск. Ставим галочку дешифровать видео файлы.

4. В образовавшейся папке находим файлы вида BDMV/STREAM/0000X.m2ts. Обычно первый или второй из них самый большой - он нам и нужен. Заглядываем в него в поисках аудиопотока:
$ ffprobe 00000.m2ts 
...
Input #0, mpegts, from '00000.m2ts':
Duration: 01:53:44.77, start: 600.000000, bitrate: 38688 kb/s
Program 1
Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn
Stream #0:1[0x1100]: Audio: pcm_bluray (HDMV / 0x564D4448), 96000 Hz, stereo, s32 (24 bit), 4608 kb/s
Stream #0:2[0x1101]: Audio: dts (DTS-HD MA) ([134][0][0][0] / 0x0086), 96000 Hz, 5.1(side), s32p (24 bit)
Вот он, звук, который будем извлекать:
  Stream #0:1[0x1100]: Audio: pcm_bluray (HDMV / 0x564D4448), 96000 Hz, stereo, s32 (24 bit), 4608 kb/s
5. Извлекаем:
ffmpeg -i 00000.m2ts -map 0:1 -acodec pcm_s24le music.wav
6. Получили файл в формате WAV. Теперь сжимаем в формат FLAC:
flac --keep-foreign-metadata --verify music.wav
Образовался файл music.flac, в котором лежит весь альбом целиком.
$ file music.flac
music.flac: FLAC audio bitstream data, 24 bit, stereo, 96 kHz, 655178880 samples
7. Разбивку на отдельные песни будем искать в файлах BDMV/PLAYLIST/0000X.mpls. Пробуем каждый из этих файлов утилитой mediainfo.
$ mediainfo 00000.mpls 
...
Menu
00:00:00.000 : Chapter 1
00:12:23.743 : Chapter 2
00:15:46.487 : Chapter 3
00:21:03.095 : Chapter 4
00:31:27.635 : Chapter 5
00:39:31.118 : Chapter 6
00:48:54.556 : Chapter 7
00:54:50.287 : Chapter 8
01:00:11.524 : Chapter 9
01:02:57.064 : Chapter 10
01:07:48.105 : Chapter 11
01:12:35.434 : Chapter 12
01:20:08.553 : Chapter 13
01:28:35.018 : Chapter 14
01:38:29.028 : Chapter 15
01:44:38.230 : Chapter 16
Из этих данных надо будет создать так называемый CUE-скрипт для плеера FLAC файлов. Но про это в отдельном посте.