Исходный код на Github: bcserv/soundlib - Форки и запросы на тягу приветствуются
Licenses: GPL, LGPL, MPL
Поскольку внутренняя функциональность движков исходного кода для расчета длины звукового файла не работает, я решил написать собственное расширение, которое обрабатывает вычисления. Я потратил много времени на это.
Я выпустил расширение, которое может считывать различную информацию из mp3-файлов или файлов в целом, которые имеют тэг id3 помимо длины звука.
Заметка: в некоторых случаях он, вероятно, не может прочитать точные mp3 в кодировке VBR.
Если библиотека не загружается в Windows, установите это:
Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)
Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)
Если написано «libz.so.1: невозможно открыть общий объектный файл: такой файл или каталог отсутствуют», прочитайте эту позициюt:
ia32-libs - это метапакет. В Debian и более старых версиях Ubuntu «зависимости» ia32-libs - это всего лишь 10 или около того наиболее распространенных библиотек, для которых людям нужны 32-битные версии.
В более новых версиях Ubuntu ia32-libs является синонимом ia32-libs-multiarch, что представляет собой полный беспорядок и заставляет меня задуматься, почему разработчики Ubuntu думают, что они делают.
Я не думаю, что стабильный (squeeze) Debian сделал это, но Ubuntu перешел на многоархивную версию apt, в которой вы можете указать
to get the 32-bit version of it.
So...
Вероятно, lib32z1 - это просто оболочка для вышеперечисленного, если вы используете Ubuntu.
Вот список вещей, которые он может прочитать:
Enjoy
Example code
Список функций:
Это расширение использует Taglib библиотека, Я скомпилировал статические библиотеки для Windows и Linux.
The Taglib is under the GNU Lesser General Public License (LGPL) and the Mozilla Public License (MPL).
Licenses: GPL, LGPL, MPL
Поскольку внутренняя функциональность движков исходного кода для расчета длины звукового файла не работает, я решил написать собственное расширение, которое обрабатывает вычисления. Я потратил много времени на это.
Я выпустил расширение, которое может считывать различную информацию из mp3-файлов или файлов в целом, которые имеют тэг id3 помимо длины звука.
Заметка: в некоторых случаях он, вероятно, не может прочитать точные mp3 в кодировке VBR.
Если библиотека не загружается в Windows, установите это:
Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)
Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)
Если написано «libz.so.1: невозможно открыть общий объектный файл: такой файл или каталог отсутствуют», прочитайте эту позициюt:
ia32-libs - это метапакет. В Debian и более старых версиях Ubuntu «зависимости» ia32-libs - это всего лишь 10 или около того наиболее распространенных библиотек, для которых людям нужны 32-битные версии.
В более новых версиях Ubuntu ia32-libs является синонимом ia32-libs-multiarch, что представляет собой полный беспорядок и заставляет меня задуматься, почему разработчики Ubuntu думают, что они делают.
Я не думаю, что стабильный (squeeze) Debian сделал это, но Ubuntu перешел на многоархивную версию apt, в которой вы можете указать
Bash:
apt-get install package-name:i386
So...
Bash:
apt-get install libz1:i386
Вот список вещей, которые он может прочитать:
- sound length
- bit rate
- sampling rate
- Artist (Id3)
- Title (Id3)
- Sound Num (Id3)
- Year (Id3)
- Album (Id3)
- Commend (Id3)
- Genre (Id3)
Example code
C#:
new Handle:soundfile = OpenSoundFile("funnysounds/myfunnysound.mp3");
if (soundfile == INVALID_HANDLE) {
PrintToServer("Invalid handle !");
return Plugin_Handled;
}
PrintToServer("Sound Length: %f seconds", GetSoundLengthFloat(soundfile));
CloseHandle(soundFile);
Список функций:
C++:
/**
* Opens a sound file.
*
* @note Sound files are closed with CloseHandle().
*
* @param file File to open
* @param relativeToSound if true, it is relative to the sound directory, otherwise you have to build the path yourself
* @return A Handle to the sound file, INVALID_HANDLE on open error.
*/
native Handle:OpenSoundFile(const String:file[], bool:relativeToSound=true);
/**
* Gets the length of the sound file in seconds
*
* @param hndl Handle to the sound file.
* @return The song length in seconds
*/
native GetSoundLength(Handle:hndl);
/**
* Gets the length of the sound file in seconds as float.
* Note: this probably won't work with some VBR encoded mp3's
*
* @param hndl Handle to the sound file.
* @return The song length in seconds as float
*/
native Float:GetSoundLengthFloat(Handle:hndl);
/**
* Get the Bit rate of sound (kbps)
*
* @param hndl Handle to the sound file
* @return sound bitrate (cell)
*/
native GetSoundBitRate(Handle:hndl);
/**
* Get the Sampling rate of sound (hz)
*
* @param hndl Handle to the sound file
* @return sampling rate (cell)
*/
native GetSoundSamplingRate(Handle:hndl);
/**
* Get the Artist of the sound
*
* @param hndl Handle to the sound file
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
native GetSoundArtist(Handle:hndl, String:buffer[], maxlength);
/**
* Get the Track title of sound
*
* @param hndl Handle to the sound file
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
native GetSoundTitle(Handle:hndl, String:buffer[], maxlength);
/**
* Get the Track number of the sound
*
* @param hndl Handle to the sound file
* @return sound number (cell)
*/
native GetSoundNum(Handle:hndl);
/**
* Get the Album of the sound
*
* @param hndl Handle to the sound file
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
native GetSoundAlbum(Handle:hndl, String:buffer[], maxlength);
/**
* Get the Year of sound
*
* @param hndl Handle to the sound file
* @return sound year (cell)
*/
native GetSoundYear(Handle:hndl);
/**
* Get the Comment of the sound
*
* @param hndl Handle to the sound file
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
native GetSoundComment(Handle:hndl, String:buffer[], maxlength);
/**
* Get the Genre of the sound
*
* @param hndl Handle to the sound file
* @param buffer Buffer to use for storing the string.
* @param maxlength Maximum length of the buffer.
* @return Length of string written to buffer.
*/
native GetSoundGenre(Handle:hndl, String:buffer[], maxlength);
Это расширение использует Taglib библиотека, Я скомпилировал статические библиотеки для Windows и Linux.
The Taglib is under the GNU Lesser General Public License (LGPL) and the Mozilla Public License (MPL).