purebasic.info

PureBasic forum
Текущее время: Пт апр 27, 2018 12:08 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 152 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт май 31, 2012 4:10 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн сен 07, 2009 10:00 pm
Сообщений: 1046
Откуда: Николаев
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Для silvera.
Пример проигрывания потока:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
Enumeration
  #BG_Pause
  #BG_Stop
  #BG_Load
  #fm
EndEnumeration
 
IncludeFile "bass.pbi"
 
 OpenWindow(0,50,50,400,100,"BASS")
 
 
  ButtonGadget(#BG_Stop,100,20,50,25,"Stop")
  ButtonGadget(#BG_Play,150,20,50,25,"Play")
  ButtonGadget(#BG_Pause,200,20,50,25,"Pause")  
  ButtonGadget(#fm,      250,20,50,25,"FM")
 
 
  BASS_Init(-1, 44100, 0, WindowID(0), #Null)
 
  Repeat
      Event=WaitWindowEvent(10)
      Select Event
      Case #PB_Event_Gadget
        Select EventGadget()
 
          Case #BG_Play
            BASS_ChannelPlay(Handle,0)
          Case #BG_Pause
            BASS_ChannelPause(Handle)
          Case #BG_Stop
            BASS_ChannelStop(Handle)
            BASS_ChannelSetPosition(Handle,0,#BASS_POS_BYTE)
          Case #fm
            BASS_StreamFree(Handle)
          Handle= BASS_StreamCreateURL("http://195.5.125.6:8000/",0,0,#Null,0)
            BASS_ChannelPlay(Handle,0)      
         EndSelect
      EndSelect
       
If Event=#PB_Event_CloseWindow
Break
EndIf
ForEver
 



А твоя ссылка не работает http://94.158.48.3:8000/ ( во всяком случае у меня)
В архиве и русская справка по функциям BASS.


Вложения:
bass_p.rar [244.4 KiB]
Скачиваний: 238

_________________
www.mirashic.narod.ru
Первое знакомство с PB
Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 31, 2012 4:39 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн сен 07, 2009 10:00 pm
Сообщений: 1046
Откуда: Николаев
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Для silvera.
И пример проигрывания онлайн видео на основе плеера Uppod.
Вариантов может быть очень много.


Вложения:
Video.rar [161.69 KiB]
Скачиваний: 199

_________________
www.mirashic.narod.ru
Первое знакомство с PB
Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 02, 2012 10:33 am 
Не в сети
профессор

Зарегистрирован: Вс фев 12, 2012 5:30 pm
Сообщений: 236
Благодарил (а): 1 раз.
Поблагодарили: 3 раз.
Пункты репутации: 0
ОГРОМНОЕ спасибо, вот только я поясню что не получается, на указанном ип стоит сервер айкаст, там много потоков, послушать можно скачав фаил (название потока).m3u вот как поставить чтоб тянуло нужный поток я не понял, я могу скачать фаил (название потока).m3u и открыть его в винампе и пойдёт поток нужного радио, а как в проге сделать непонял(


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FM radio
СообщениеДобавлено: Пн мар 10, 2014 9:12 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1608
Откуда: Алматы
Благодарил (а): 13 раз.
Поблагодарили: 43 раз.
Пункты репутации: 5
mirashic, продолжаешь ли этот проект или забросил? хотелось бы проконсультироваться... понять по какому принципу частоты разделены в графике спектра? сколько герц соответствует одной полоске.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FM radio
СообщениеДобавлено: Вс апр 13, 2014 10:55 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Сб сен 08, 2012 9:03 am
Сообщений: 58
Откуда: Россия
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
В семерке не работают эффекты EAX . Как это можно исправить?

_________________
Программист ставит себе на тумбочку перед сном два стакана. Один с водой - на случай, если захочет ночью пить. А второй пустой - на случай, если не захочет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FM radio
СообщениеДобавлено: Вт сен 13, 2016 5:49 am 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 258
Благодарил (а): 14 раз.
Поблагодарили: 29 раз.
Пункты репутации: 0
Застрял я капитально.:roll: После возврата драйвером буфера слышна запинка. :?
Хорошо бы писать в буфер синхронно. Может кто, когда-нибудь, поправит.

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
InitNetwork()
 
#MPEGLAYER3_ID_MPEG = 1
#WAVE_FORMAT_MPEGLAYER3 = $ 0055
#MPEGLAYER3_WFX_EXTRA_BYTES = 12
#MP3_BLOCK_SIZE = 522
;--------------------------------------------------------------------------------------
Global phwo.l
Global Connection.l
Global *mem = AllocateMemory(65536)
;--------------------------------------------------------------------------------------
Global wch.WAVEHDR
wch\lpData = *mem
wch\dwBufferLength = MemorySize(*mem)
wch\dwLoops = 0
wch\dwFlags = 0
;--------------------------------------------------------------------------------------
Structure MPEGLAYER3WAVEFORMAT
  WFX.WAVEFORMATEX
  WID.w
  fdwFlags.l
  nBlockSize.w
  nFramesPerBlock.w
  nCodecDelay.w
EndStructure  : mpe.MPEGLAYER3WAVEFORMAT
 
mpe\WFX\wFormatTag = #WAVE_FORMAT_MPEGLAYER3
mpe\WFX\nChannels = 2
mpe\WFX\nSamplesPerSec = 44100
mpe\WFX\nAvgBytesPerSec = 128 * (1024 / 8)
mpe\WFX\cbSize = #MPEGLAYER3_WFX_EXTRA_BYTES
mpe\WID = #MPEGLAYER3_ID_MPEG
mpe\nBlockSize = #MP3_BLOCK_SIZE
;--------------------------------------------------------------------------------------
Procedure waveOutProc(HWO.l, uMsg.l, dwInstance.l, *dwParam1.WAVEHDR, dwParam2.l)
  Select uMsg
    Case #WOM_OPEN
      ;Debug "WOM_OPEN"
    Case #WOM_DONE
      ;Debug "WOM_DONE"
    Case #WOM_CLOSE
      ;Debug "WOM_CLOSE"
  EndSelect    
  ProcedureReturn
EndProcedure
;--------------------------------------------------------------------------------------
Procedure play(*p)
  Repeat
    Delay(1)
    wch\dwBufferLength = ReceiveNetworkData(Connection, wch\lpData, 65536)
    waveOutWrite_(phwo, @wch, SizeOf(WAVEHDR))
    While wch\dwFlags = 18
    Wend
  ForEver
EndProcedure
;--------------------------------------------------------------------------------------
waveOutOpen.l = waveOutOpen_(@phwo, #WAVE_MAPPER, @mpe, @waveOutProc(), 0, #CALLBACK_FUNCTION)
If waveOutOpen = 0
  waveOutPrepareHeader_(phwo, @wch, SizeOf(WAVEHDR))
EndIf  
;--------------------------------------------------------------------------------------
Connection = OpenNetworkConnection("beelinefm.hostingradio.ru", 8058, #PB_Network_TCP)
get.s = "GET /beeline128.mp3 HTTP/1.1"  + #CRLF$
get = get + "Host: beelinefm.hostingradio.ru"  + #CRLF$
get = get + "User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36 OPR/35.0.2066.37" + #CRLF$
get = get + #CRLF$
SendNetworkData(Connection, @get, Len(get))
CreateThread(@play(), 0)
waveOutWrite_(phwo, @wch, SizeOf(WAVEHDR))
;--------------------------------------------------------------------------------------
Repeat
  Delay(1)
ForEver



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FM radio
СообщениеДобавлено: Вт сен 13, 2016 9:37 am 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1608
Откуда: Алматы
Благодарил (а): 13 раз.
Поблагодарили: 43 раз.
Пункты репутации: 5
у меня не поет. а при заходе на сайт: <b>Could not parse XSLT file</b>

по поводу затыка - предложил бы не в реальном времени, а сделать дополнительный буфер. поясняю:

итого у нас 3 буфера. или точнее 3 процедуры чтоль.

первый - в цикле получает инфу с сайта и пишет в свой буфер.

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

и потом уже третья процедура - которая поет. она с гораздо меньшим интервалом забирает бОльший буфер из той которая "очередь". и поет это дело.

то есть в итоге наша трансляция будет запаздывать скажем на секунду от оригинала, но зато этот самый буфер будет больше, а следовательно кратковременные лаги интернета будут сглажены.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FM radio
СообщениеДобавлено: Вт сен 13, 2016 10:12 am 
Не в сети
профессор

Зарегистрирован: Вт мар 24, 2009 11:54 am
Сообщений: 357
Благодарил (а): 14 раз.
Поблагодарили: 18 раз.
Пункты репутации: 19
repeat писал(а):
Застрял я капитально.:roll: После возврата драйвером буфера слышна запинка. :?
Хорошо бы писать в буфер синхронно. Может кто, когда-нибудь, поправит.

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
InitNetwork()
 
#MPEGLAYER3_ID_MPEG = 1
#WAVE_FORMAT_MPEGLAYER3 = $ 0055
#MPEGLAYER3_WFX_EXTRA_BYTES = 12
#MP3_BLOCK_SIZE = 522
;--------------------------------------------------------------------------------------
Global phwo.l
Global Connection.l
Global *mem = AllocateMemory(65536)
;--------------------------------------------------------------------------------------
Global wch.WAVEHDR
wch\lpData = *mem
wch\dwBufferLength = MemorySize(*mem)
wch\dwLoops = 0
wch\dwFlags = 0
;--------------------------------------------------------------------------------------
Structure MPEGLAYER3WAVEFORMAT
  WFX.WAVEFORMATEX
  WID.w
  fdwFlags.l
  nBlockSize.w
  nFramesPerBlock.w
  nCodecDelay.w
EndStructure  : mpe.MPEGLAYER3WAVEFORMAT
 
mpe\WFX\wFormatTag = #WAVE_FORMAT_MPEGLAYER3
mpe\WFX\nChannels = 2
mpe\WFX\nSamplesPerSec = 44100
mpe\WFX\nAvgBytesPerSec = 128 * (1024 / 8)
mpe\WFX\cbSize = #MPEGLAYER3_WFX_EXTRA_BYTES
mpe\WID = #MPEGLAYER3_ID_MPEG
mpe\nBlockSize = #MP3_BLOCK_SIZE
;--------------------------------------------------------------------------------------
Procedure waveOutProc(HWO.l, uMsg.l, dwInstance.l, *dwParam1.WAVEHDR, dwParam2.l)
  Select uMsg
    Case #WOM_OPEN
      ;Debug "WOM_OPEN"
    Case #WOM_DONE
      ;Debug "WOM_DONE"
    Case #WOM_CLOSE
      ;Debug "WOM_CLOSE"
  EndSelect    
  ProcedureReturn
EndProcedure
;--------------------------------------------------------------------------------------
Procedure play(*p)
  Repeat
    Delay(1)
    wch\dwBufferLength = ReceiveNetworkData(Connection, wch\lpData, 65536)
    waveOutWrite_(phwo, @wch, SizeOf(WAVEHDR))
    While wch\dwFlags = 18
    Wend
  ForEver
EndProcedure
;--------------------------------------------------------------------------------------
waveOutOpen.l = waveOutOpen_(@phwo, #WAVE_MAPPER, @mpe, @waveOutProc(), 0, #CALLBACK_FUNCTION)
If waveOutOpen = 0
  waveOutPrepareHeader_(phwo, @wch, SizeOf(WAVEHDR))
EndIf  
;--------------------------------------------------------------------------------------
Connection = OpenNetworkConnection("beelinefm.hostingradio.ru", 8058, #PB_Network_TCP)
get.s = "GET /beeline128.mp3 HTTP/1.1"  + #CRLF$
get = get + "Host: beelinefm.hostingradio.ru"  + #CRLF$
get = get + "User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36 OPR/35.0.2066.37" + #CRLF$
get = get + #CRLF$
SendNetworkData(Connection, @get, Len(get))
CreateThread(@play(), 0)
waveOutWrite_(phwo, @wch, SizeOf(WAVEHDR))
;--------------------------------------------------------------------------------------
Repeat
  Delay(1)
ForEver


у тебя поток (как мне кажется) прерывается на 1 милисекунду в 49 строке, а он должен быть непрерывным

Цитата:
Сообщение WOM_DONE отправлено в функцию обратного вызова аудиовыхода формы волны, когда данный буфер вывода возвращается к приложению


попробуй ReceiveNetworkData в waveOutProc перенести


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FM radio
СообщениеДобавлено: Вт сен 13, 2016 9:11 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 258
Благодарил (а): 14 раз.
Поблагодарили: 29 раз.
Пункты репутации: 0
cherri123 писал(а):
попробуй ReceiveNetworkData в waveOutProc перенести
Изначально так и делал :D Ничего не помогает.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FM radio
СообщениеДобавлено: Вт сен 13, 2016 9:31 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 258
Благодарил (а): 14 раз.
Поблагодарили: 29 раз.
Пункты репутации: 0
SereZa писал(а):
у меня не поет. а при заходе на сайт: <b>Could not parse XSLT file</b>
Мож ссылку изменить на другую радиостанцию :D

SereZa писал(а):
по поводу затыка - предложил бы не в реальном времени, а сделать дополнительный буфер. поясняю:

итого у нас 3 буфера. или точнее 3 процедуры чтоль.

первый - в цикле получает инфу с сайта и пишет в свой буфер.

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

и потом уже третья процедура - которая поет. она с гораздо меньшим интервалом забирает бОльший буфер из той которая "очередь". и поет это дело.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FM radio
СообщениеДобавлено: Вт сен 13, 2016 10:10 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11108
Благодарил (а): 4 раз.
Поблагодарили: 395 раз.
Нужен кольцевой буфер. Наверное замечали что когда плеер виснет, он начинает повторять один и тот же короткий фрагмент. Это потому что воспроизведение идет из кольцевого буфера, а поскольку в него новые данные не записываются, то воспроизводятся те что там есть.
Принцип следующий. Нужно с той же скоростью с какой происходит воспроизведение, записывать новые данные в кольцевой буфер.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FM radio
СообщениеДобавлено: Вт сен 13, 2016 11:29 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 258
Благодарил (а): 14 раз.
Поблагодарили: 29 раз.
Пункты репутации: 0
Пётр писал(а):
:shock:
То есть мне нужно писать новые данные в конец адреса уже имеющихся в памяти данных, а синхронизировать с временем воспроизведения для того, чтобы буфер не рос больше фиксированного размера? :?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FM radio
СообщениеДобавлено: Ср сен 14, 2016 2:52 am 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 258
Благодарил (а): 14 раз.
Поблагодарили: 29 раз.
Пункты репутации: 0
Буду разбираться :? Не понятно можно ли писать в буфер до #WOM_DONE, не блокирует ли драйвер буфер во время чтения.

спустя несколько часов добавлено:
Вот, waveOutWrite = 33
Код:
1
2
3
4
5
6
7
Procedure play(*p)
  Repeat
    Delay(1)
    wch\dwBufferLength = ReceiveNetworkData(Connection, wch\lpData, 65536)
    Debug waveOutWrite_(phwo, @wch, SizeOf(WAVEHDR))
  ForEver
EndProcedure

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FM radio
СообщениеДобавлено: Ср сен 14, 2016 8:40 am 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1608
Откуда: Алматы
Благодарил (а): 13 раз.
Поблагодарили: 43 раз.
Пункты репутации: 5
еще наверное писать надо без оконечного нуля.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FM radio
СообщениеДобавлено: Ср сен 14, 2016 9:44 am 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 258
Благодарил (а): 14 раз.
Поблагодарили: 29 раз.
Пункты репутации: 0
Ну не знаю, если писать синхронно вылетает ошибка (типа невозможно записать по адресу...), не дает драйвер писать постоянно в буфер. Получил #WOM_DONE и тогда, будьте любезны, сколько влезет. А это время :?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 152 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB