Сжатие без потерь и с потерями
У звуковых файлов два принципиально разных способа уменьшения размера. Сжатие без потерь работает как архиватор: после распаковки получаются те же данные, что были до сжатия. К таким форматам относится FLAC. Несжатый звук хранит WAV, он наиболее объёмный, но в нём ничего не изменено.
Сжатие с потерями устроено иначе. Кодек отбрасывает части сигнала, которые, по расчётам разработчиков, слабее всего заметны на слух, и за счёт этого файл получается гораздо меньше. Так работают MP3 и AAC. Восстановить отброшенное нельзя: сколько бы раз вы ни открывали и ни пересохраняли файл, исходные данные не вернутся.
Из этого следует несколько практических выводов. Для хранения оригиналов, особенно собственных оцифровок, подходят форматы без потерь. Для телефона, автомобильного проигрывателя или плеера с небольшой памятью подойдут форматы с потерями. А слышна ли разница между ними — зависит от записи, настроек сжатия, аппаратуры и слуха, поэтому проверить это стоит самому на знакомой музыке и своём оборудовании, не опираясь на чужие утверждения.
Сколько места занимает час звука
Размер файла вычисляется так же, как для видео: скорость потока умножается на длительность. Ниже приведены расчёты на один час записи.
| Формат и параметры | Скорость потока | Размер за час |
|---|---|---|
| WAV, стерео, 44,1 кГц, 16 бит (как на аудио-CD) | 1411,2 кбит/с | примерно 635 МБ |
| MP3, 128 кбит/с | 128 кбит/с | примерно 58 МБ |
| MP3, 256 кбит/с | 256 кбит/с | примерно 115 МБ |
| MP3, 320 кбит/с | 320 кбит/с | 144 МБ |
| FLAC | зависит от записи | меньше несжатого WAV, величина разная |
Для FLAC точной цифры нет: степень сжатия зависит от музыки. Тихие и простые по звучанию записи сжимаются сильнее, плотные и шумные слабее. Поэтому для планирования места берите размер несжатого звука как верхнюю границу, а уточняйте на небольшой пробной папке.
Для фонотеки из нескольких сотен часов разница между форматами ощутима: в WAV она занимает сотни гигабайт, в MP3 с потоком 256 кбит/с — единицы десятков гигабайт. Подробнее о расчётах размера и о том, как планировать место под архив, рассказано на странице о битрейте видео, формулы там общие.
В какую сторону можно конвертировать
Направление преобразования определяет результат, и ошибки здесь особенно досадны, потому что их не видно сразу.
- Из формата без потерь в формат с потерями. Нормальная ситуация: из FLAC получают MP3 или AAC для телефона. Качество определяется настройками выходного формата.
- Из формата с потерями в формат без потерь. Размер вырастет, а качество нет: FLAC, полученный из MP3, содержит те же потери, просто упакованные без дополнительных. Смысла в таком преобразовании мало, исключение — если нужна совместимость с программой, принимающей только FLAC.
- Из одного формата с потерями в другой. Допустимо, но каждый такой шаг добавляет потери к уже имеющимся. Если исходника без потерь нет, лучше не делать лишних циклов.
- Из WAV в FLAC. Безопасное действие: данные остаются теми же, а файл уменьшается и получает возможность хранить теги.
Правило для архива простое: делайте копии с потерями из исходника без потерь, а не из предыдущей копии. Так у вас останется возможность пересоздать их при смене устройства или формата. Если же у вас есть только файлы с потерями, храните их как есть и не пытайтесь «улучшить».
Конвертация командой ffmpeg
Для массовой конвертации удобна программа ffmpeg, описанная на странице о перепаковке видео. Она работает с аудио так же, как с видео, и сохраняет теги при преобразовании, если формат это позволяет. Вот основные команды.
- FLAC в MP3 с постоянным потоком: ffmpeg -i трек.flac -c:a libmp3lame -b:a 256k трек.mp3.
- FLAC в MP3 с переменным потоком: ffmpeg -i трек.flac -c:a libmp3lame -q:a 2 трек.mp3. Чем меньше число после -q:a, тем выше качество и больше файл.
- FLAC в AAC: ffmpeg -i трек.flac -c:a aac -b:a 192k трек.m4a.
- WAV в FLAC: ffmpeg -i запись.wav -c:a flac запись.flac.
Для папки с файлами в оболочке Linux или macOS подойдёт цикл: for f in *.flac; do ffmpeg -i "$f" -c:a libmp3lame -q:a 2 "${f%.flac}.mp3"; done. В PowerShell на Windows аналогичная команда: Get-ChildItem *.flac | ForEach-Object { ffmpeg -i $_.FullName -c:a libmp3lame -q:a 2 ($_.BaseName + ".mp3") }.
Перед запуском на всей коллекции проверьте результат на одном-двух файлах. Результат записывайте в отдельную папку, чтобы не смешивать исходники и копии, а имена исходных файлов в команде берите в кавычки, если в них есть пробелы. Для разового преобразования подойдут и программы с графическим окном, они используют те же кодеки.
Что хранить, а что считать рабочей копией
Практичная схема для личной фонотеки состоит из двух уровней. Первый уровень — основной архив: оцифровки собственных дисков, записей, пластинок и кассет, а также законно приобретённых файлов в том виде, в каком они получены. Если исходник существует без потерь, он хранится как есть. Второй уровень — рабочие копии для устройств: небольшие файлы, из которых при необходимости можно сделать новые.
Что стоит проверить перед выбором:
- какие форматы поддерживает наиболее старое устройство, на котором вы слушаете, например автомагнитола или переносной плеер;
- хватает ли памяти телефона для нужного объёма при выбранном потоке;
- сохраняются ли теги и обложка после конвертации, на проверочном файле;
- нет ли проблем с паузами между треками альбома, которые бывают у записей с непрерывным звучанием: для таких альбомов не все форматы и проигрыватели одинаково аккуратны.
Теги и порядок папок описаны на соседней странице о музыкальных библиотеках. Архив с фонотекой как и любые другие данные требует резервных копий, и на месте исходников без потерь потеря диска без копии окажется наиболее болезненной. Поэтому включите основной уровень в схему 3-2-1.