Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.09.2012, 23:42
VitalSA VitalSA вне форума
Прохожий
 
Регистрация: 02.09.2010
Сообщения: 5
Репутация: 10
По умолчанию Как работать со звуком модема GSM

Кто может помочь с проблемой передачи данных к com порт модема! Хотя бы ссылки дайте!
Это известно: для Huawei звук идет в порт HUAWEI Mobile Connect - 3G Application Interface, после того как скажешь ему AT^DDSETEX=2.
Звук идет по порту в формате PCM 8000fps 16бит signed.
А вот как получить данные с com порта и вывести на компьютор (колонки) и как взять с микрофона звук порциями по 320 байт и передовать в com порт модема?
Если есть пример с описанием вообще хорошо!
Ответить с цитированием
  #2  
Старый 12.09.2012, 22:30
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

забавная фича - звук по СОМ порту, хотя раньше и в кваку через LPT или СОМ в два компутера играли
Цитата:
идет в порт HUAWEI Mobile Connect - 3G Application Interface
точно какой-то СОМ порт?

я бы попробовал следующее:
1 в любом терминале послал бы эту пресловутую АТ команду
Цитата:
AT^DDSETEX=2.
2 в том же терминале посмотрел, что приходит в ответ
3 смотрел бы описание РСМ и искал заголовки (порядок приходящих байт), которые действительно указывают на звук
Цитата:
в формате PCM 8000fps 16бит signed.

4 если это оно, то копил в буфер 320 байт (с учетом служебных данных) и кормил бы какому-либо декодеру и выводил звук

это просто предполагаемый алгоритм, но каждый шаг вызывал бы все большие вопросы, есть с чем поразбираться
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
  #3  
Старый 13.09.2012, 11:48
VitalSA VitalSA вне форума
Прохожий
 
Регистрация: 02.09.2010
Сообщения: 5
Репутация: 10
По умолчанию по данному вопросу

Да в терминале когда отправляешь команду AT^DDSETEX=2 в порт HUAWEI Mobile Connect - 3G UI Interface модем начинает слать и может получать данные с порта HUAWEI Mobile Connect - 3G Application Interface. Т.е. он переходит в голосовой режим. Данные идут знаковые очень похоже на WAV только походу без заголовка просто данные звука. 320 байт это около 0,2 секунды. Звуковой кодек не может прочитать данные. А даписать 44 байта заголовка я что то не могу разобратся как.
Ответить с цитированием
  #4  
Старый 13.09.2012, 12:01
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Данные, скорее всего, идут без заголовков. Так поступает большинство систем, где нужно иметь возможность воспроизведения с любого места.

Попытайтесь сохранить входящие данные в файл, и проиграть чем-нибудь, что умеет творить магию с мультимедиа. Например, VLC - он меня выручил один раз, проиграв вавку, рипнутую посекторно с посыпавшегося харда. Часть её вообще была в непонятном виде (потом смотрел хекс-редактором - были убиты заголовки и часть данных), но то, что сохранилось, было проиграно.

Ну и желательно знать, что хотим получить, так что нужен образец данных в нормальном виде (в идеале - запись голоса, на которой можно разобрать слова).
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #5  
Старый 13.09.2012, 12:02
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от VitalSA
Да в терминале когда отправляешь команду AT^DDSETEX=2 в порт HUAWEI Mobile Connect - 3G UI Interface модем начинает слать и может получать данные с порта HUAWEI Mobile Connect - 3G Application Interface. Т.е. он переходит в голосовой режим. Данные идут знаковые очень похоже на WAV только походу без заголовка просто данные звука. 320 байт это около 0,2 секунды. Звуковой кодек не может прочитать данные. А даписать 44 байта заголовка я что то не могу разобратся как.
Т.е. тебе известен формат (PCM), частота дискретизации (8000fps), разрядность (16bit), число каналов (single) и сам поток звуковых данных?
Значит у тебя всё готово для того чтобы этот звук сохранить в wav-файл или воспроизвести например через waveOutOpen, waveOutPrepareHeader, waveOutWrite.
Ответить с цитированием
  #6  
Старый 13.09.2012, 18:20
VitalSA VitalSA вне форума
Прохожий
 
Регистрация: 02.09.2010
Сообщения: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Т.е. тебе известен формат (PCM), частота дискретизации (8000fps), разрядность (16bit), число каналов (single) и сам поток звуковых данных?
Значит у тебя всё готово для того чтобы этот звук сохранить в wav-файл или воспроизвести например через waveOutOpen, waveOutPrepareHeader, waveOutWrite.
Но он не хочет воспроизводить, я может не понял как взять из com порта. Процедуры есть но только или String значение или Byte какое не знаю?
Ответить с цитированием
  #7  
Старый 13.09.2012, 19:49
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от VitalSA
Но он не хочет воспроизводить, я может не понял как взять из com порта. Процедуры есть но только или String значение или Byte какое не знаю?
Я так понял, что ты уже успешно читаешь с COM-порта, вот же твоя цитата:
Цитата:
Сообщение от VitalSA
Данные идут знаковые очень похоже на WAV только походу без заголовка просто данные звука. 320 байт это около 0,2 секунды. Звуковой кодек не может прочитать данные. А даписать 44 байта заголовка я что то не могу разобратся как.
И что за процедуры которые String или Byte?
Ответить с цитированием
  #8  
Старый 13.09.2012, 20:06
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

Цитата:
Сообщение от VitalSA
Но он не хочет воспроизводить, я может не понял как взять из com порта. Процедуры есть но только или String значение или Byte какое не знаю?
как читаете с СОМ порта (скорее всего какой-то сторонний компонент с которым не очень разобрались)?

скорее всего процедуры, о которых говорит ТС, типа TxxxNotify, повесьте на них обработчик и смотите, что приходит и что больше подойдет
тип Byte - вряд ли такое, скорее что-то типа ByteArray (ну не может же СОМ порт отдавать входящие посылки по одному байту...хотя )
String - грубо тот же ByteArray с печатными и непечатными символами (если НЕ Unicode), вот его и пишите в файл, а дальше, как написал DJ PhoeniX, кормите этот файл, например VCL plaer'y, что он на это скажет
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:47.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter