Русское сообщество по скриптингу

Инклуд для разбора mp3-файлов. Версия 0.0.1 Alpha.

Статьи или фрагменты кода для новичков и уже опытных скриптеров по AMXX.

Модератор: Chuvi

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только обучающему материалу по AMX Mod X.

Инклуд для разбора mp3-файлов. Версия 0.0.1 Alpha.

Сообщение Chuvi » 10 июл 2012, 03:07

Собственно, не знаю, в какой раздел это поместить. Это вроде как и не "болтовня", и не готовый плагин, и пока ещё не совсем "Статья/фрагмент кода". Ладно, пусть будет в болтовне. Хотя, имхо, это не самая разумная мысль.

На создания данного инклуда меня подтолкнула Вы должны зарегистрироваться, чтобы видеть ссылки. от Вы должны зарегистрироваться, чтобы видеть ссылки. для расчёта длительности wav-файла, и желание создать функцию для проверки mp3-файла на возможность воспроизведения с помощью клиента counter-strike.

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


Итак.
Версия 0.0.1 Alpha
Добавлено:
  1. Функции для разбора заголовка mp3-фрейма
  2. Массивы для нормального отображения некоторых данных.
Необходимо сделать:
  1. Проверить и исправить ошибки.
  2. Было замечено, что маркер mp3-фрейма может внезапно встретиться в пределах ID3v2 тэга, который как правило, расположен в начале mp3-файла. Нужна функция, которая будет определять размер ID3v2 тэга.
  3. Также было замечено, что маркер mp3-фрейма может встречаться в странных местах. Короче, надо это проверять. :(
  4. Реализовать функции для разбора ID3 и ID3v2 тэгов.
  5. Реализовать функции для разбора VBR-заголовков.
  6. При необходимости попытаться реализовать преобразователь кодировки ID3 и ID3v2 тэгов в UTF-8.
    для того, чтобы их можно было отображать в кс (Сомневаюсь, что осуществимо)
  7. Реализовать функцию для определения времени проигрывания mp3-файла.
  8. Реализовать функцию для определения возможности проигрывания данного mp3-файла в CS.
  9. Реализовать функции для проверки CRC заголовка фрейма.

Пример использования:
[spoiler][pawn]
  1. #include <amxmodx>

  2. #include <amxmisc>

  3. #include <mp3>

  4.  

  5. #define PLUGIN "mp3.test"

  6. #define VERSION "1.0"

  7. #define AUTHOR "Chuvi"

  8.  

  9.  

  10. public plugin_init() {

  11.         register_plugin(PLUGIN, VERSION, AUTHOR)

  12.         register_srvcmd("mp3_test","mp3_test")

  13.         // Add your code here...

  14. }

  15. new mp3_file[33]="sound/test.mp3"

  16.                        

  17.        

  18. public find()

  19. {

  20.         new mp3=fopen(mp3_file,"rb")

  21.         new start

  22.         start=MP3_Frame_Start(mp3)     

  23.         server_print("Frame found at %i",start)

  24.         server_print("MPEG version is %i (%s)",MP3_MPEG_Version(mp3,start),MP3_MPEG_Version_Array[MP3_MPEG_Version(mp3,start)])

  25.         server_print("Layer version is %i (%s)",MP3_Layer_Version(mp3,start),MP3_Layer_Version_Array[MP3_Layer_Version(mp3,start)])

  26.         server_print("MP3_Protection_Bit= %i",MP3_Protection_Bit(mp3,start))

  27.         server_print("MP3_Bitrate= %i",MP3_Bitrate(mp3,start))

  28.         server_print("MP3_Sampling_Rate= %i",MP3_Sampling_Rate(mp3,start))

  29.         server_print("MP3_Padding_Bit=%i",MP3_Padding_Bit(mp3,start))

  30.         server_print("MP3_Private_Bit=%i",MP3_Private_Bit(mp3,start))

  31.         server_print("MP3_Channel_Mode=%s",MP3_Channel_Mode_Array[MP3_Channel_Mode(mp3,start)])

  32.         server_print("MP3_Mode_Extension=%s", MP3_Mode_Extension_Array[MP3_Layer_Version(mp3,start)][MP3_Mode_Extension(mp3,start)])

  33.         server_print("MP3_Copyright_Bit=%i",MP3_Copyright_Bit(mp3,start))

  34.         server_print("MP3_Original_Bit=%i",MP3_Original_Bit(mp3,start))

  35.         server_print("MP3_Emphasis=%s^n",MP3_Emphasis_Array[MP3_Emphasis(mp3,start)])

  36.         fclose(mp3)

  37. }

  38.  

  39.  
[/pawn][/spoiler]

Если кому интересно покопаться в спецификации mp3:
Вы должны зарегистрироваться, чтобы видеть ссылки.
Вы должны зарегистрироваться, чтобы видеть ссылки.
Вы должны зарегистрироваться, чтобы видеть ссылки.
Последний раз редактировалось Chuvi 11 июл 2012, 11:04, всего редактировалось 1 раз.
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Re: Инклуд для разбора mp3-файлов. Версия 0.0.1 Alpha.

Сообщение Chuvi » 21 дек 2013, 01:19

Конопелька, фига се, отрыл.
На тот момент он мне был нужен, поэтому я его делал. Необходимость отпала - естественно, забил))
С тех пор многое поменялось. Например, я научился делать нативы и форварды... да и уже почти научился писать модули))

Короче, возникнет необходимость - займусь )
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Re: Инклуд для разбора mp3-файлов. Версия 0.0.1 Alpha.

Сообщение StRiKeR.csF » 06 окт 2014, 00:47

Хм...
[pawn]
  1.  stock MP3_Duration(const mp3_file[], mp3)

  2.  {

  3.         #define var new

  4.         var size = file_size(mp3_file);

  5.         var start_frame = MP3_Frame_Start(mp3);

  6.         var bitrate = MP3_Bitrate(mp3, start_frame);

  7.         return size / bitrate * 8 / 1000;

  8.  }
[/pawn]

Из-за того, что битрейт не правильно у меня определяется в версии 0.0.1(160kbps выше никак), а в версии 0.0.2(128kbps), то не правильно считается и продолжительность, при 320kbps на версии 0.0.1 ровно в 2 раза больше(что логично) и в 0.0.2 более чем в 2 раза.

[pawn]
  1. #include <amxmodx>

  2. #include <amxmisc>

  3. #include <mp3>

  4.  

  5. #define A       ".csF Dev Team"

  6. #define B       "0.1"

  7. #define C       "Test mp3"

  8.  

  9. #define function        public

  10. #define var                     new

  11.  

  12. var const mp3_sound[] = "sound/test.mp3";

  13.  

  14. function plugin_init()

  15. {

  16.         register_plugin(A, B, C);

  17.         var mp3 = fopen(mp3_sound, "rb");

  18.         var size = file_size(mp3_sound);

  19.         var start_frame = MP3_Frame_Start(mp3);

  20.         var bitrate = MP3_Bitrate(mp3, start_frame);

  21.         server_print("Size = %dbyte", size);

  22.         server_print("Start_frame = %d", start_frame);

  23.         server_print("Bitrate = %dkbps", bitrate);

  24.         var duration = MP3_Duration(mp3_sound, mp3);

  25.         server_print("Duration = %d:%d", duration / 60, duration % 60);

  26.         fclose(mp3);

  27. }
[/pawn]
:(
Чего добился ты и бла, бла, бла
Тут, типа, посыл был, но админ его потёр :(

Skype: nestle.csf
-В чём сила, брат?
-Сила в Debug.log xD
Аватара пользователя
StRiKeR.csF
Скриптер
 
Сообщения: 771
Зарегистрирован: 03 июн 2011, 06:26
Откуда: Кубань
Благодарил (а): 126 раз.
Поблагодарили: 181 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++
C#
JavaScript
PHP(+MySQL)
Assembler

Re: Инклуд для разбора mp3-файлов. Версия 0.0.1 Alpha.

Сообщение Chuvi » 09 окт 2014, 01:07

StRiKeR.csF, если есть желание допилить - допили.
У меня исчезла необходимость получать инфу о MP3 файлах, поэтому модуль был заброшен.

Я когда стал вникать в VBR/CBR и прочие прелести пришёл в упадок и оставил эти мысли в покое. Может быть, если бы такая необходимость возникла сейчас, я бы её довёл до ума.
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Re: Инклуд для разбора mp3-файлов. Версия 0.0.1 Alpha.

Сообщение StRiKeR.csF » 09 окт 2014, 20:05

Посмотрим, если что, то допилю.
Пока это не особо мне нужно.
Чего добился ты и бла, бла, бла
Тут, типа, посыл был, но админ его потёр :(

Skype: nestle.csf
-В чём сила, брат?
-Сила в Debug.log xD
Аватара пользователя
StRiKeR.csF
Скриптер
 
Сообщения: 771
Зарегистрирован: 03 июн 2011, 06:26
Откуда: Кубань
Благодарил (а): 126 раз.
Поблагодарили: 181 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++
C#
JavaScript
PHP(+MySQL)
Assembler

Re: Инклуд для разбора mp3-файлов. Версия 0.0.1 Alpha.

Сообщение Gazon » 03 июл 2021, 10:57

:crazy:
Аватара пользователя
Gazon
 
Сообщения: 63
Зарегистрирован: 26 авг 2019, 00:15
Благодарил (а): 6 раз.
Поблагодарили: 1 раз.
Опыт программирования: Больше трех лет
Языки программирования: JavaScript
Pawn

Пред.

Вернуться в Статьи / фрагменты кода

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7