Rose debug info
---------------

Тексты заведующего фонограмм архивом фольклорно-этнографических записей Центра русского фольклора @

Позднее Ctrl + ↑

Создание рабочей копии архива экспедиционных записей

Рабочая копия

В конце концов наступает момент, когда кассеты оцифровали, файлы собрали на один диск и нужна рабочая копия архива, для детальной описи и возможно публикации. На первый взгляд, технических сложностей нет, но, если архив занимает 1-5 терабайт несжатого звука в сложной и неоднородной структуре папок, то о копировании речь уже не идет. Описывать архив лучше на сжатом звуке, а стоимость жестких дисков не настолько еще мала, что бы этим можно было пренебречь.

Перед тем как сжать наш архив, полную копию все-таки придется сделать, но если нет для этого диска достаточного объема, то копировать и сжимать нужно по частям. Главное, что бы это делалось на копии, рекомендую сделать как минимум одну полную копию записей, в идеале же две копии и оригинал, хранить не в одном и том же здании.

Закон о сохранении информации

Сохранность информации прямо пропорциональна количеству копий данной информации.

Конвертация

Есть много программ конвертеров для аудио в том числе и бесплатных и в принципе для нашей задачи может подойти и простой Freemake или Avidemux конвертер, но поскольку мы имеем дело с большим объемом данных, то имеет смысл подумать о более надежном и гибком варианте.
Требования такие: возможность ведения лога конвертации (для того, что бы в случае ошибки можно было понять где произошла поломка и почему), максимальная поддержка существующих форматов и максимальная производительность.
Из бесплатных лучшим выбором будет консольный конвертер ffmpeg.
Он может быть собран из исходников с поддержкой вычислений на GPU
видео карт, что существенно повысит скорость конвертации.

Конвертер распространяется по лицензии GNU GPL, то есть бесплатен. Проект был образован в 2000 году, имеет активное обширное сообщество поддержки и может быть скомпилирован под различные платформы (Windows, Linux, MacOS и так далее). Для ffmpeg существует большое количество графических оболочек облегчающих работу новичкам, но они нас не интересуют, поскольку вся работа у нас производится в консоли.

Операционная система в которой мы конвертируем — Linux, в теории все то же самое можно проделать и в Windows, но это может оказаться нетривиальной задачей и в итоге возможно проще будет запустить Linux Live CD, что бы сделать конвертацию.
В консоли используем встроенную в Linux утилиту find , которая умеет искать файлы как по названию, так и по другим критериям (дата создания, размер, тип файла и прочее). Главной особенностью find является способность программы производить требуемое действие над найденным объектом.
В нашем случае, это будет передача wav файл на конвертацию программе ffmpeg. Вот команда которая запустит конвертацию архива в формат ogg

find ./ -type f -name '*.wav' -execdir ffmpeg -i {} -acodec libvorbis {}.ogg \; 1>>log.txt 2>>err.txt

Дословно команда делает следующее:

  • find ./ -type f -name ’*.wav’ — найти в текущем каталоге тип объекта — файл, имя объекта любое которое оканчивается на .wav
  • -execdir ffmpeg -i {} -acodec libvorbis {}.ogg \; — выполнить в текущей директории команду ffmpeg которой передаются следующие аргументы: -i {} имя найденного объекта, -acodec libvorbis применить к нему кодек libvorbis (ogg),
    и сохранить его как {}.ogg \; — найденное имя файла с добавлением
    расширения .ogg (файл будет сохраняться как audiofile.wav.ogg , конечно можно убрать лишние буквы wav в имени файла, но это может усложнит синтаксис и ухудшит понимание команды для тех, кто никогда не имел дела с консолью Linux).
  • 1>> log.txt 2>>error.txt — отправить весь вывод выполняемой команды в текстовый файл log.txt, а ошибки в error.txt. Оба файла будут сохранены в той директории откуда была запущена команда find.

Процесс сжатия архива в 2ТБ занимает около суток без применения вычислений на GPU, на процессоре Intel i7, в случае если процесс прошел без каких-либо критических ошибок, мы можем запустить команду удаления всех wav файлов.

find ./ -type f -name '*.wav' -execdir rm -f {} \;

rm -f {} — удалить (сокращение от remove) найденный файл.

В итоге из архива размером в 2ТБ мы получаем примерно 80ГБ.
Это не предел, поскольку при сжатии мы использовали настройки кодека по умолчанию, можно добиться более существенного сокращения объема если снизить битрейт и перевести записи в моно.

Донская вязь

Когда-то у нас был ансамбль Донская вязь
Михаил Масловский
Наталья Волкова
Сергей Стерликов
Василий Фоменко
Кирилл Чеботарёв

В 2009 году все это началось, а в 2017 собрались в последний раз.
Я лично считаю, что мы не выдержали испытания студийной записью.
Но было весело, это было хорошее время.
UPD 2022 Ансамбль возродили.
Новый состав:
Михаил Масловский
Кирилл Чеботарёв
Ирина Деревянкина

Это та самая запись в студии, она нам по большей части не понравилась. Писались наложением на один микрофон в домашней студии. Была мысль все это как-то дописать, переписать и довести до ума, но так и не собрались. Пусть будет здесь. Как памятник.

Скрипт рекурсивного переименования файлов в транслит

Иногда нужно переименовать кучу файлов из кириллицы в транслит
Любимая_песня_мамы.mp3 —> Lubimaja_pesnia_mami.mp3
В контексте работы с архивом именование файлов латиницей очень важно по нескольким причинам.

Простой пример: в некоторых случаях файл при публикации в интернете Любимая_песня_мамы.mp3 может преобразовываться вот в такое:
%D0%9B%D1%8E%D0%B1%D0%B8%D0%BC%D0%B0%D1%8F_%D0%BF%D0%B5%D1%81%D0%BD%D1%8F_%D0%BC%D0%B0%D0%BC%D1%8B.mp3
Это не удобно потому, что это нечитаемо, длинна названия увеличивается в три раза.
Имея опыт работы с разными собирателями могу утверждать, что файлы называют и подлиннее, умещая туда как минимум паспорт записи. Это тоже в некоторых случаях вызывает проблемы. Например при копировании на старых версиях Windows. Во всем виноваты устаревшие файловые системы и протоколы. Так же проблема с кириллицей может возникнуть в случае если ваш жесткий диск перестал работать и из него необходимо вытащить специальными программами информацию. Разработчики таких программ мало заботятся о странах не использующих латиницу. Восстановить имена файлов может и не получиться.

Конвертация

Когда файлов три или пять, это не беда, но если у вас их полторы тысячи и все он лежат в разных папках, то тут нужен скрипт. Я нашел такой в интернете, к сожалению не помню где, но если найду автора, то оставлю ссылку конечно.
Скрипт работает только в linux и других *nix системах (напрмер в MacOS)
Копируем текст в файл rename.sh
Даем права файлу на выполнение chmod u+x
Скрипт переименовывает все подряд в том каталоге в котором находится.
Запуск ./rename.sh

#!/bin/bash
# Перекодирует рекурсивно в текущем каталоге имена
# файлов и каталогов в транслит.

# shopt встроенная команда оболочки. Управляет опциями оболочки.
# Если в каталоге нет ни одного файла, соответствующего шаблону,
# то за имя файла принимается сам шаблон.
# Ключ nullglob исправляет эту ситуацию
shopt -s nullglob
# Перебираем все файлы в текущем каталоге
for NAME in * ; do
# sed-ом заменяем символы кирилицы на символы латиницы
 TRS=`echo $NAME | sed "y/абвгдезийклмнопрстуфхцы/abvgdezijklmnoprstufxcy/"`
 TRS=`echo $TRS | sed "y/АБВГДЕЗИЙКЛМНОПРСТУФХЦЫ/ABVGDEZIJKLMNOPRSTUFXCY/"`
 TRS=${TRS//ч/ch};
 TRS=${TRS//Ч/CH} TRS=${TRS//ш/sh};
 TRS=${TRS//Ш/SH} TRS=${TRS//ё/jo};
 TRS=${TRS//Ё/JO} TRS=${TRS//ж/zh};
 TRS=${TRS//Ж/ZH} TRS=${TRS//щ/sh\'};
 TRS=${TRS///SH\'} TRS=${TRS//э/je};
 TRS=${TRS//Э/JE} TRS=${TRS//ю/ju};
 TRS=${TRS//Ю/JU} TRS=${TRS//я/ja};
 TRS=${TRS//Я/JA} TRS=${TRS//ъ/\`};
 TRS=${TRS//ъ\`} TRS=${TRS//ь/\'};
 TRS=${TRS//Ь/\'}
 TRS=${TRS// /_}
 # переименовываем
 mv -v "$NAME" "$TRS"
# Если это каталог, заходим в него
 if [[ `file -b "$TRS"` == directory ]]; then
 cd "$TRS"
 "$0"
 cd ..
 fi
done

Скрипт миграции MySQL базы на удаленный сервер

Код скопировать в файл, например migrate.sh,
и установить ему права на выполнение: chmod u+x migrate.sh
Запуск: ./migrate.sh

#!/bin/bash

# Настройки локального сервера MySQL
localuser='mysqluser' 
localpasswd='mysqlpasswd'
localdbname='DB'

# Настройки сервера Mysql на который заливаем базу
remoteuser='mysqluser' 
remotepasswd='mysqlpasswd'
remotedbname='DB'

# удалять старую базу "yes" Будьте внимательны! Убедитесь, что у вас есть резервная копия!
del='no' 
# Имя новой базы которая будет добавлена если стоит "no"
newdb='DB' 
# ваш удаленный сервер, я рекомендую настроить беспарольный доступ по ключу с помощью ssh-copy-id
sshhost='root@yourhost' 


# Копируем на удаленный сервер дамп базы во временную папку (возможно нужно будет поправить путь к mysqldump)
/usr/local/mysql/bin/mysqldump -u $localuser -p$localpasswd $localdbname | gzip  | ssh  $sshhost 'cat > /tmp/db.sql.gz' 
# Если в конфиге указано del значит удаленную базу сначала удаляем. Если в конфиге стоит нет или любое другое значение, то будет создана новая база
if [ $del = 'yes' ]; then 
# Удаляем старую базу
	ssh $sshhost "mysql -u $remoteuser -p$remotepasswd -e 'DROP DATABASE $remotedbname;'" 
# Создаем новую базу с тем же именем
	ssh $sshhost "mysql -u $remoteuser -p$remotepasswd -e 'CREATE DATABASE $remotedbname;'" 
# Заливаем дамп в базу
	ssh $sshhost "zcat /tmp/db.sql.gz | mysql -u $remoteuser -p$remotepasswd $remotedbname" 
# Удаляем загруженный дамп из временной папки
	ssh $sshhost "rm -f /tmp/db.sql.gz" 
else
# Создаем новую базу
	ssh $sshhost "mysql -u $remoteuser -p$remotepasswd -e 'CREATE DATABASE $newdb;'" 
# Заливаем дамп в новую базу
	ssh $sshhost "zcat /tmp/db.sql.gz | mysql -u $remoteuser -p$remotepasswd $newdb" 
# Удаляем дамп из временной папки
	ssh $sshhost "rm -f /tmp/db.sql.gz" 
fi

Метаданные файлов

В заключении хочется затронуть тему, которая в отличие от всего вышеизложенного редко освещается в статьях и пособиях, имеющих отношение к фольклору, в частности, к экспедиционной и архивной работе. Речь пойдёт о метаданных медиафайлов.

В Википедии слово «метаданные» описывается довольно сложным для понимания практического смысла текстом. Если пытаться выразиться максимально просто и доходчиво, то применительно именно к медиафайлам (аудио, видео, фото), это данные о файле, которые содержатся внутри самого файла. Разные типы файлов содержат разную информацию, но некоторые общие свойства есть у абсолютно всех файлов. Например, дата создания файла хранится внутри всех без исключения файлов. Именно поэтому важно перед началом сеанса записи настроить правильную дату в рекордере или диктофоне, на который вы производите запись, поскольку дата добавляется внутрь файла именно в момент его создания самим рекордером.

Многим известно, что в графических файлах (jpeg, tiff и т. д.) сохраняются данные о том, на какую фотокамеру и объектив был снят этот снимок, значения диафрагмы, выдержки, ISO, фокусное расстояние, в случае если у фотокамеры был подключён GPS приёмник, то записываются и географические координаты. Практически все фотографии, снятые на мобильный телефон, содержат эту информацию, поскольку подавляющее большинство смартфонов оснащено GPS или Глонасс-приёмниками. Но, помимо этого, файл jpeg в поле comment может хранить 65333 знака, это около 18 страниц текста. Аудио файлы wav, flac, mp3, ogg так же обладают внутренними метаданными, и нас интересует возможность добавления своего произвольного текста внутрь этих файлов. Для чего? В первую очередь, в целях облегчения идентификации файла независимо от его названия и места хранения. Файл может быть переименован, перемещён, даже отредактирован в какой-нибудь программе, но метаданные его при этом сохраняются. Это удобство трудно переоценить. Если говорить о метаданных аудиофайлов, то у разных форматов они конечно будут отличаться. Например, для mp3 и ogg были разработаны специальные наборы полей, id3 и id3v2-тэги, в которых предусмотрены такие поля как: название альбома, название песни, жанр, исполнитель и прочее. Обусловлено это тем, что форматы mp3 и ogg разрабатывались для использования в сфере популярной музыки. Последние версии id3-тэгов позволяют помещать внутрь файла довольно внушительный объем текста. В поле comment может поместиться текст песни. Формат wav обладает более скромными возможностями, его поле comment ограничено 64 символами, в этом он безусловно проигрывает более современному lossless формату flac, который так же, как и mp3, позволяет хранить в себе относительно большие объемы текстовых данных.

За редким исключением, все метаданные можно редактировать. Для этого есть много различных программ, но программы эти не универсальны и какие-то подходят больше для фотографий, какие-то для аудиоматериалов. Из бесплатных программ для редактирования аудиофайлов можно назвать: Tag&Rename, Metatogger, Tagscanner, Quod Libet.

Для массовой обработки MP3 файлов с помощью скриптов есть консольная программа eye3D и Mutagen. Последняя позволяет редактировать тэги и у других типов медиафайлов (flac, ogg, итд)

Какие-то точные рекомендации о том, что именно прописывать в метаданные файла при копировании их с флэш-накопителей рекордера или диктофона, дать трудно вследствие того, что у каждого собирателя или организации уже есть своя сложившаяся система упорядочивания материала. Безусловно, прежде всего наличие такой программы необходимо в полевых условиях для того, чтобы исправить неправильные даты записи в случае, если не успели или забыли их выставить на рекордере. Минимально имеет смысл внести хотя бы данные о собирателе и об организации, которая проводила сеанс записи, возможно, место записи или же сокращённый шифр, по образцу именования директорий, приведённый в предыдущей главе.

к оглавлению

Ранее Ctrl + ↓