Задержка при воспроизведении звука через mp3 play

Сообщения
78
Реакции
7
Здравствуйте, у меня проблема с применением клиентской команды mp3 play в двух плагинах. С помощью cmd mp3 play "path" в нужные моменты воспроизводятся мп3 звуки, однако есть ощутимая задержка в 3 секунды, от которой я не знаю как избавиться. Можно ли это как-либо исправить? Заранее скажу, что на стороне плагинов задержка не прописана, звук должен воспроизводиться моментально.
 
Сообщения
206
Реакции
21
Помог
6 раз(а)
Как вы это реализуете? Предоставьте свой код
 
Сообщения
78
Реакции
7
mlibre,
Код:
public player_Touch(touched, toucher) {
    
    if (!pev_valid(touched) || !is_user_alive(toucher) || !can_pickup[toucher])
        return FMRES_IGNORED
    
    new classname[32]
    pev(touched, pev_classname, classname, sizeof classname - 1)
    
    if (equali(classname, "pdm_money")) {
        if(zp_ammopacks_get(toucher) == 16000)    return FMRES_IGNORED
        else if((zp_ammopacks_get(toucher)+moneybox[touched]) > 16000)        zp_ammopacks_set(toucher,16000)
        else    zp_ammopacks_set(toucher,zp_ammopacks_get(toucher) + moneybox[touched])
        
        if(pev_valid(touched))
        {
            engfunc(EngFunc_RemoveEntity,touched)
            if(SoundPlays[toucher] == false)
            {
                client_cmd(toucher,"mp3 play %s",money_sound1)
                SoundPlays[toucher] = true
                set_task(1.0, "reset_sound", toucher)
            }
        }
            
    }
    
    return FMRES_IGNORED
}
А если точнее:
Код:
            if(SoundPlays[toucher] == false)
            {
                client_cmd(toucher,"mp3 play %s",money_sound1)
                SoundPlays[toucher] = true
                set_task(1.0, "reset_sound", toucher)
            }
6 Авг 2023
Заранее предупрежу, set task используется чтобы после начала воспроизведения первого звука, при выполнении условий повторно, звук не воспроизводился снова в течении секунды и таким образом не наслаивался на предыдущий.
Код:
public reset_sound(toucher)
{
    SoundPlays[toucher] = false   
}
 
Сообщения
1,304
Реакции
2,303
Помог
57 раз(а)
Первый раз слышу про такую проблему. Мб дело в самом mp3? Можно загнать другие варианты файла ради теста, или поменять Sampling rate попробовать
 
Сообщения
676
Реакции
579
Предупреждения
8
Помог
9 раз(а)
Мб это не связано с багом, но лучше всегда отправить "stop" перед "mp3 play"
 
Сообщения
13
Реакции
2
Помог
1 раз(а)
Можешь попробовать заменить на emit_sound так как понимаю что ты воспроизводишь короткий звук.
По идее может помочь и не будет "проблем" с другими плагинами которые могут юзать mp3 play

C++:
emit_sound(toucher, CHAN_STATIC, money_sound1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
 
Сообщения
78
Реакции
7
BlackSignature, я использовал 3 разных мп3 файла, все они проигрываются с задержкой, причем используются 2 разных плагина с разными звуками. Причем в меню игры в консоли мп3 проигрывается сразу Ранее я шаманил с конвертацией в wav и применял spk, но либо звук не воспроизводился, либо он проигрывался несколько раз подряд одновременно, создавая адскую какафонию. Да и звуки в итоге выходили дерьмовыми. Sample rate (если я правильно понял о чем ты) ставил 8 KHz или чуть выше.
Vaqtincha, почему?
xpombi4, когда искал как воспроизвести звук, натыкался на emit_sound, но он же не поддерживает мп3.
mlibre, исключено, я заранее удалил пустые отрывки в мп3 файлах.
7 Авг 2023
Кстати, важный вопрос, а в чем разница между mp3 play, speak и emit_sound? Не считая разницы применяемых форматов мп3 и wav. Я как понимаю, эмит эмитирует звук в определенной точке карты, слышимый всеми в определенном радиусе, а spk и mp3 play только передается самому клиенту через клиент команду? Есть ли еще нюансы? И с какими свойствами лучше всего конвертировать mp3 в wav, чтобы максимально сохранить качество звука?
 
Сообщения
206
Реакции
21
Помог
6 раз(а)
для воспроизведения звука wav нужно преобразовать его в 8 бит, каналы: 1 (моно) и скорость 22 кГц
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
Я как понимаю, эмит эмитирует звук в определенной точке карты, слышимый всеми в определенном радиусе, а spk и mp3 play только передается самому клиенту через клиент команду?
Всё верно.
 
Сообщения
105
Реакции
194
Arni, будет звучать всрато, ну и лишнее место на диске занимать
 

Garey

ninjaCow
Сообщения
440
Реакции
1,094
Помог
11 раз(а)
попробуй mp3 stop; mp3 play звук.mp3
непомню синтаксис мб и mp3 stop звук.mp3
 
  • Нравится
Реакции: Arni
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
  • Нравится
Реакции: DEVV
Сообщения
272
Реакции
282
Помог
2 раз(а)
Не наоборот, звук хуже, чем у мп3, но не слишком жёстко.
1. Я пишу про wav
2. Сам лично десятки раз форматировал звуки под нужды, проверял в игре, утверждаю на личном опыте, что частота выше делает звук более звучной, нужно только форматировать как надо. А при низких частотах детали звука исчезают.
 
Последнее редактирование:
Сообщения
206
Реакции
21
Помог
6 раз(а)
Помимо плохого качества звука wav, если его можно считать преимуществом или недостатком перед mp3, так это то, что этот звук mp3 продолжает играть без перерыва при смене карты, что касается wav, то он сразу останавливается. Еще одна деталь, форматы мп3 слышны даже когда игра свернута.
 
Сообщения
105
Реакции
194
Arni, движок умеет выводить сэмплы только в 22050 Hz. Если ты в него сунешь файл у которого частота дискретизации, например, 44 kHz, то при воспроизведении звука он тупо будет пропускать сэмплы со всеми из этого вытекающими.
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
SNMetamorph, разве? А по-моему он конвертируется в ран-тайме. О чём свидетельствует строчка в консоли с включенным режимом разработчика:
WARNING! название_звука.wav is causing runtime sample conversion!
 
Сообщения
105
Реакции
194
Nordic Warrior, ну насколько я понял, писать пишет, но в реальности он никакого ресэмплинга налету не делает. Да и это нетривиальная операция, игра бы висла в этот момент. Так что я не знаю, что они подразумевали под "conversion"
 

Пользователи, просматривающие эту тему

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