Вверх ↑
Этот топик читают: Гость
Ответов: 4612
Рейтинг: 746
#16: 2015-02-25 19:12:25 ЛС | профиль | цитата
Просветите меня. Как работает воспроизведение в той схеме?
1) Получаем очередную порцию данных из UDP и записываем её в SoundBuffer (кстати, что, в SoundBuffer нельзя добавить прием данных из строки, чтобы не делать StrToStream?)
2) С помощью BASS_StreamCreate назначаем callback, который будет читать данные из SoundBuffer
3) Запускаем воспроизведение с помощью BASS_ChannelPlay. Что в этом случае происходит? Библиотека BASS запускает параллельный поток, который с нужной частотой обращается к выше упомянутой callback из BASS_StreamCreate, которая и возвращает очередную порцию данных из SoundBuffer?

Если да, то спрашивается: каким это образом можно одновременно записывать данные в поток (MemoryStream) в SoundBuffer (при этом, судя по коду, перемещать часть данных с конца в начало по превышению размера) и в это же время параллельным потоком читать из этого же MemoryStream?
Как минимум, в коде SoundBuffer должна стоять критическая секция в THISoundBuffer._work_doAdd, а в BASS_StreamCreate та же критическая секция в function MakeSine. А более правильно - сделать свой TMemoryStream, уже содержащий критическую секцию на чтение/запись, выполняющий внутри весь тот круговорот данных, и использовать его в SoundBuffer.
карма: 26

0
Ответов: 2059
Рейтинг: 131
#17: 2015-02-25 23:31:17 ЛС | профиль | цитата
А более правильно - сделать свой TMemoryStream, уже содержащий критическую секцию на чтение/запись,

Я сейчас похожей темой занимаюсь (поток-MP3). Именно так свой компонент и сделал. Пробую все варианты, на данный момент это самый лучший.
карма: 6

0
Ответов: 15
Рейтинг: 1
#18: 2015-02-25 23:46:44 ЛС | профиль | цитата
И...программа при прием/трансляция виснет?
карма: 0

0
Ответов: 2059
Рейтинг: 131
#19: 2015-02-25 23:57:52 ЛС | профиль | цитата
И...программа при прием/трансляция виснет?

Если ко мне, то я потоковое радио в mp3 запихиваю.
Ничего не виснет.
C BASSом беда.
1. На win7 и драйвер Realtek - не определяет устройство по умолчанию.
2. Не со всех устройств пишет.
3. Если пишет, то уровень записи в 4-8 раз занижен.
Собственно, чего и Stream-ами занялся.
карма: 6

0
Ответов: 209
Рейтинг: 1
#20: 2015-02-27 13:58:50 ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2020-02-19 17:51:32
карма: 0

0
Ответов: 4612
Рейтинг: 746
#21: 2015-02-27 15:09:47 ЛС | профиль | цитата
В данном случае это проблема не BASS, а нашей реализации.

А вообще я не совсем понял, в чем там проблема. Схема большая, разбираться неохота. Например, в UDP используется параллельный поток, мало ли ещё в каких компонентах по этому поводу возникнут глюки. Может и в самом UDP.
Вот, например, такая схема:
code_35209.txt
Вроде же нет никаких зависаний.
карма: 26

0
файлы: 1code_35209.txt [3.1KB] [557]
Ответов: 2059
Рейтинг: 131
#22: 2015-02-27 15:19:45 ЛС | профиль | цитата
Net2Com
flint2, такая петрушка на стоковом басе или на свежем аналогично ?
где-то читал что а настройках аудио есть опция коррекции громкости системы при работе с voip она же регулируется виндой там.

Тогда я не могу понять почему, когда я делаю не в HiAsm всё нормально работает с любой версией BASS и Lame-ENC в любых сочетаниях.
https://yadi.sk/d/pf6O299TeqKMv
В чём дело? Хотя-бы в какую сторону рыть.
Netspirit
Сообщение было позже, чем я написал.
В данном случае это проблема не BASS, а нашей реализации.

Наверное ответ в этом.

16.00
Начал немного разбираться.
Похоже дело не в BASS_RecordStart, а в BASS_RecordCenter.
Попробовал на другом компьютере с XP, тоже немного тише записывает (терпимо), но правильно определяет устройство по умолчанию.
На семёрке, хоть ты тресни, берёт только с микшера (с микрофоном не возился). Похоже чего-то с интерфейсом к системе напутано.
Так как BASS_Record не буду переделывать, то и копать дальше нет смысла.
Буду свои компоненты делать.

карма: 6

0
Ответов: 209
Рейтинг: 1
#23: 2015-02-27 17:21:35 ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2020-02-19 17:51:40
карма: 0

0
Ответов: 15
Рейтинг: 1
#24: 2015-02-27 17:24:49 ЛС | профиль | цитата
Может и в самом UDP


Глюк одинаков при использовании UDP или TCP. Единственно, что в локальной сети прога реже зависает чем при коннекте через Интернет по VPN на скорости 2048 Кбит/с ADSL.
При трансляции "видео" т.е. jpeg картинки, прога на UDP или TCP работает стабильно. Правда UDP не "любит" 100% качества, в общем, только очень маленькие картинки пропускает.

UDP
code_35211.txt

TCP

code_35212.txt


Может кто нибудь подскажет как подготовить аудио трансляцию для приема клиентом на другом компе с использованием компонента hiBASS_StreamCreateURL ? Да вообще хоть что ниботь стабильно транслирующее звук.

------------ Дoбавленo в 17.24:
и принимающее
карма: 0

0
файлы: 2code_35211.txt [6.3KB] [440], code_35212.txt [5.4KB] [458]
Ответов: 209
Рейтинг: 1
#25: 2015-02-27 17:27:33 ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2020-02-19 17:51:48
карма: 0

0
Ответов: 15
Рейтинг: 1
#26: 2015-02-27 17:44:41 ЛС | профиль | цитата
вот это кстати не проверял, но мысль через урл прогнать его возникала. надо попробовать проверить.


Мысли какие нибудь есть? Просто не хочется ждать сложа руки и выпрашивать помощь
карма: 0

0
Ответов: 4612
Рейтинг: 746
#27: 2015-02-27 18:10:47 ЛС | профиль | цитата
krastydent писал(а):
Мысли какие нибудь есть?

Потестируй это: bass test tcp.7z

Порядок использования:
1) Запустить сервер
2) В сервере жмешь Start server, Generate pattern, Start translation. На ползунки внимания не обращаем.
3) Запускаешь клиент
4) В клиенте вводишь адрес сервера, жмешь Connect, потом Play

Сервер генерирует математикой фрагмент звука, который затем в цикле рассылается всем клиентам. В клиенте частота воспроизведения выставлена в 10000, при малой скорости сети вероятно будут паузы в воспроизведении.

Схемы пока не выкладываю, так как в них использованы альтернативные TCP-компоненты (dev-версии), а также модифицированные BASS_StreamCreate и SoundBuffer (у меня даже и Thread модифицированный - всюду успел поковыряться). Но, схемы работают и на стандартных BASS_StreamCreate, SoundBuffer, да и TCP сервере и клиенте.
карма: 26

0
Ответов: 15
Рейтинг: 1
#28: 2015-02-27 18:22:45 ЛС | профиль | цитата

Потестируй это: bass test tcp.7z



Хорошо пищит
карма: 0

0
Ответов: 4612
Рейтинг: 746
#29: 2015-02-27 18:28:06 ЛС | профиль | цитата
И что, не падает?
карма: 26

0
Ответов: 209
Рейтинг: 1
#30: 2015-02-27 19:10:36 ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2020-02-19 17:52:00
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)