audio

$Mr.R1ch$

Активный
Автор темы
284
40
Версия MoonLoader
Другое
можно ли воспроизводить несколько треков в одном потоке loadAudioStream, если да - то как? например, у меня имеется несколько прямых ссылок на треки, которые находятся в массиве, треки хочу воспроизводить через интерфейс mimgui, и по нажатии кнопки должен заиграть первый трек, а при нажатии другой кнопки - другой трек. Хз как все это сделать, ибо со звуками работаю впервые

Lua:
local radiostation = {
        [1] = "http://ep128.hostingradio.ru:8030/ep128",
        [2] = "http://eptop128server.streamr.ru:8033/eptop128",
        [3] = "https://radiorecord.hostingradio.ru/rr_main96.aacp"
     }
    
     for i, v in ipairs({'empty out your pockets', 'wasted', 'music 3'}) do
       if imgui.Button(u8(v), imgui.ImVec2(450, 40)) then
          play_sound = loadAudioStream(radiostation)
          setAudioStreamVolume(play_sound, mradio_vol[0])
          setAudioStreamState(play_sound, as_action.PLAY)
          play_sound = true
       end
        imgui.Spacing()
     end
if imgui.Button('Disable') then 
  setAudioStreamVolume(play_sound, as_action.STOP)
  play_sound = nil
end
 
Решение
Lua:
for i, v in ipairs(radiostation) do
      if imgui.Button(u8(v.name), imgui.ImVec2(450, 40)) then
      
         local play_sound = loadAudioStream(v.link)  -- Загружаем аудиопоток по ссылке
         if play_sound ~= nil then
            releaseAudioStream(play_sound)
         end
         setAudioStreamState(play_sound, as_action.PLAY)  -- Запускаем воспроизведение
         setAudioStreamVolume(play_sound, mradio_vol[0])
      
      end
      imgui.Spacing()
   end
вот так я сделал примерно, но при попытке воспроизвести трек - оно не воспроизводится
Тут ты сначала загружаешь новый поток, а затем его сразу же обнуляешь
Вынеси play_sound в глобальную видимость и логику немного поменяй
Lua:
for i, v in ipairs(radiostation)...

$Mr.R1ch$

Активный
Автор темы
284
40
попробуй перед загрузкой проверять является ли аудиострим nil, если нет, то юзай releaseAudioStream и уже потом подгружай
чё то вроде получилось, но есть новая проблема - треки прерываются, то есть когда я запускаю трек, то он играет пару секунд а потом отрубается. кстати пытался сделать то как ты сказал, но ничего не вышло, либо у меня руки кривые

Lua:
local radiostation = {
        [1] = {name = '[SAMP] Radio Advance RP', link = "https://radio.advance-rp.ru/channel1.ogg"},
        [2] = {name = '[SAMP] Power FM', link = "https://cast.brg.ua/powerfm_main_public_mp3_hq"},
        [3] = {name = 'Европа Плюс', link = "http://ep128.hostingradio.ru:8030/ep128"}
}

for i, v in ipairs(radiostation) do
      if imgui.Button(u8(v.name), imgui.ImVec2(450, 40)) then
        
         local play_sound = loadAudioStream(v.link)  -- Загружаем аудиопоток по ссылке
         setAudioStreamState(play_sound, as_action.PLAY)  -- Запускаем воспроизведение
         setAudioStreamVolume(play_sound, mradio_vol[0])
         play_sound = true
        
      end
      imgui.Spacing()
   end
  
   if imgui.Button(u8'Отключить', imgui.ImVec2(450, 40)) then
     setAudioStreamState(play_sound, as_action.STOP) -- почему то крашит когда пытаюсь остановить трек 
  end
 

papercut

Известный
125
24
чё то вроде получилось, но есть новая проблема - треки прерываются, то есть когда я запускаю трек, то он играет пару секунд а потом отрубается. кстати пытался сделать то как ты сказал, но ничего не вышло, либо у меня руки кривые

Lua:
local radiostation = {
        [1] = {name = '[SAMP] Radio Advance RP', link = "https://radio.advance-rp.ru/channel1.ogg"},
        [2] = {name = '[SAMP] Power FM', link = "https://cast.brg.ua/powerfm_main_public_mp3_hq"},
        [3] = {name = 'Европа Плюс', link = "http://ep128.hostingradio.ru:8030/ep128"}
}

for i, v in ipairs(radiostation) do
      if imgui.Button(u8(v.name), imgui.ImVec2(450, 40)) then
       
         local play_sound = loadAudioStream(v.link)  -- Загружаем аудиопоток по ссылке
         setAudioStreamState(play_sound, as_action.PLAY)  -- Запускаем воспроизведение
         setAudioStreamVolume(play_sound, mradio_vol[0])
         play_sound = true
       
      end
      imgui.Spacing()
   end
 
   if imgui.Button(u8'Отключить', imgui.ImVec2(450, 40)) then
     setAudioStreamState(play_sound, as_action.STOP) -- почему то крашит когда пытаюсь остановить трек
  end
Не то скинул может? Не вижу где тут реализация освобождения потока, по любому там косяк
Сделать это точно можно, я делал в свое время аудио плеер музыки из вк с переключениями, паузой и тд
 

$Mr.R1ch$

Активный
Автор темы
284
40
Не то скинул может? Не вижу где тут реализация освобождения потока, по любому там косяк
Сделать это точно можно, я делал в свое время аудио плеер музыки из вк с переключениями, паузой и тд
я вроде бы написал, что пытался освобождать поток, но ничего не вышло
 

papercut

Известный
125
24
я вроде бы написал, что пытался освобождать поток, но ничего не вышло
я имел ввиду, что нет примера того, что не получилось. Это должно работать, так что лучше скинь код с освобождением и попробуем в нем разобраться

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

$Mr.R1ch$

Активный
Автор темы
284
40
я имел ввиду, что нет примера того, что не получилось. Это должно работать, так что лучше скинь код с освобождением и попробуем в нем разобраться



из этого я понял что новая проблема при использовании освобождения потока, поэтому и уточнил корректный ли код ты приложил
Lua:
for i, v in ipairs(radiostation) do
      if imgui.Button(u8(v.name), imgui.ImVec2(450, 40)) then
        
         local play_sound = loadAudioStream(v.link)  -- Загружаем аудиопоток по ссылке
         if play_sound ~= nil then
            releaseAudioStream(play_sound)
         end
         setAudioStreamState(play_sound, as_action.PLAY)  -- Запускаем воспроизведение
         setAudioStreamVolume(play_sound, mradio_vol[0])
        
      end
      imgui.Spacing()
   end
вот так я сделал примерно, но при попытке воспроизвести трек - оно не воспроизводится
 

papercut

Известный
125
24
Lua:
for i, v in ipairs(radiostation) do
      if imgui.Button(u8(v.name), imgui.ImVec2(450, 40)) then
      
         local play_sound = loadAudioStream(v.link)  -- Загружаем аудиопоток по ссылке
         if play_sound ~= nil then
            releaseAudioStream(play_sound)
         end
         setAudioStreamState(play_sound, as_action.PLAY)  -- Запускаем воспроизведение
         setAudioStreamVolume(play_sound, mradio_vol[0])
      
      end
      imgui.Spacing()
   end
вот так я сделал примерно, но при попытке воспроизвести трек - оно не воспроизводится
Тут ты сначала загружаешь новый поток, а затем его сразу же обнуляешь
Вынеси play_sound в глобальную видимость и логику немного поменяй
Lua:
for i, v in ipairs(radiostation) do
      if imgui.Button(u8(v.name), imgui.ImVec2(450, 40)) then
      
         if play_sound ~= nil then
             releaseAudioStream(play_sound)
         end
         play_sound = loadAudioStream(v.link)  -- Загружаем аудиопоток по ссылке
         setAudioStreamState(play_sound, as_action.PLAY)  -- Запускаем воспроизведение
         setAudioStreamVolume(play_sound, mradio_vol[0])
      
      end
      imgui.Spacing()
   end
 
  • Нравится
Реакции: $Mr.R1ch$