Есть ли способ пометить файл .wav и записать в него время? - PullRequest
2 голосов
/ 21 февраля 2011

Я хотел бы добавить в каждый из моих файлов .wav метку времени. Этот тег скажет, когда файл начался вовремя и, если возможно, время окончания. Время может быть относительно эпохи Unix. Как бы я поступил так или иначе?

Спасибо

-Josh

Ответы [ 4 ]

3 голосов
/ 21 февраля 2011

С http://www.wotsit.org/download.asp?f=wave&sc=351595652:

Файл WAVE представляет собой набор из нескольких различных типов чанков. ... Среди других необязательных блоков есть те, которые определяют ключевые точки, список параметров инструмента, сохраняют специфичную для приложения информацию и т. Д.

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

Вместо этого вы можете хранить отдельный файл вместе с файлом волны с вашей информацией. Не было бы проблем с совместимостью, но пользователи должны были бы хранить файлы вместе.

3 голосов
/ 21 февраля 2011

WAV-файлы поддерживают ограниченные текстовые теги, которые, вероятно, вам подойдут. Вы можете указать пользовательские поля в блоке INFO (http://en.wikipedia.org/wiki/Resource_Interchange_File_Format#Use_of_the_INFO_chunk),, который, вероятно, подходит для ваших нужд, но нет более простого способа, как вы можете использовать теги ID3 в комментариях MP3 или Vorbis в FLAC.

Я не знаю ни одной библиотеки, с которой было бы легче работать, так как я не работаю с WAV, но, возможно, libsndfile подойдет вам, иначе вы могли бы самостоятельно манипулировать заголовком. считав файл в поток байтов, а затем обработав заголовок самостоятельно, используя информацию из спецификаций: http://www.sonicspot.com/guide/wavefiles.html#wavefileheader

В противном случае, для более простого времени вы можете захотеть перекодировать ваши файлы WAV в FLAC, а затем записать поля в тег FLAC: Полная документация по API FLAC C и C ++ здесь: http://flac.sourceforge.net/api/index.html

0 голосов
/ 21 февраля 2011

WAV-файлы - это RIFF файлы, которые предназначены для добавления кусков произвольных данных без разрыва файла для других программ (при условии, что выбранный вами тег чанка не конфликтует ни с кем другим).

Если вы работаете в Windows, есть некоторые функции, которые помогут вам манипулировать такими файлами, например, mmioCreateChunk .

0 голосов
/ 21 февраля 2011

Я не уверен, есть ли общий способ сделать это (например, теги exif в jpeg), но если все остальное не удается, вы можете попробовать использовать http://en.wikipedia.org/wiki/Steganography

Это метод для кодирования сообщенийфайлы, особенно изображения и аудиофайлы, изменяя содержание лишь незначительно.но я не знаю, сколько будет стоить кодировать / декодировать это сообщение в файл.

...