Форум программистов, компьютерный форум, киберфорум
C++ Builder: FireMonkey
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/163: Рейтинг темы: голосов - 163, средняя оценка - 4.52
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147

Аудио стрим для Андроида

22.09.2020, 18:33. Показов 39327. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, как проиграть аудио стрим для Андроида?
Вот у меня есть для примера файл (прилагаю). Если его открыть MPC плеером он начинает играть. Если открыть Блокнотом то видно что он читает аудио поток с ip адреса. Т.е. как запустить аудио зная IP:Port? Ведь MPC плеер это как-то делает...
Спасибо.
Вложения
Тип файла: zip - P.R.Chernivtsi - .zip (226 байт, 5 просмотров)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.09.2020, 18:33
Ответы с готовыми решениями:

Стрим с андроида на ютуб
Здравствуйте уважаемые форумчане,ситуация такова что появилась необходимость проводить стрим(ы), погугли,почитал инфу, использую кстати...

Аудио стрим по wi fi
Не знаю в какой раздел форума даже писать, и программный вопрос и технический) Есть приложение которое работает как рация, таких много в...

Непрерывный стрим аудио, пре переходах по стр
Тема может и слегка уже подкатана, но! Вообщем нужно сделать непрерывный вывод стрима аудио, т.е. включив на стр. "музыка" трек,...

12
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
22.09.2020, 18:51  [ТС]
Наверное одно из решений нагуглиных это библиотека Baas...
https://www.fmxexpress.com/bas... d-windows/

http://www.un4seen.com/

Но как сие дело прикрутить к C++ Builder 10.3.3 не понятно.
А может как-то по другому?
0
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
23.09.2020, 13:16  [ТС]
Пробую ВASS сначала для Windows. В проект добавлены bass.dll bass.h bass.lib
При компиляции ошибки. Как исправить?
C++
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
#include "bass.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.fmx"
TForm1 *Form1;
 
HSAMPLE smp;
HSTREAM str;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 BASS_Init(-1, 44100, BASS_DEVICE_3D, 0, NULL); //Инициализация звукового потока
 str=BASS_StreamCreateURL(PAnsiChar(L"http://91.199.194.34:8000"), 0, 0, NULL,0); //Создаем поток str. Расположение нашего MP3 файла
 BASS_ChannelPlay(str, False); //Воспроизвести наше звуковой поток str
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 BASS_ChannelStop(str); //Остановка
 BASS_SampleFree (smp); //Чистим ресурс
}
//---------------------------------------------------------------------------

[ilink64 Error] Error: Unresolved external 'BASS_Init' referenced from C:\USERS\LENA\DOCUMENTS\EMBARCADERO\STUD IO\PROJECTS\ANDROID81\WIN64\RELEASE\UNIT 1.O
[ilink64 Error] Error: Unresolved external 'BASS_StreamCreateURL' referenced from C:\USERS\LENA\DOCUMENTS\EMBARCADERO\STUD IO\PROJECTS\ANDROID81\WIN64\RELEASE\UNIT 1.O
[ilink64 Error] Error: Unresolved external 'BASS_ChannelPlay' referenced from C:\USERS\LENA\DOCUMENTS\EMBARCADERO\STUD IO\PROJECTS\ANDROID81\WIN64\RELEASE\UNIT 1.O
[ilink64 Error] Error: Unresolved external 'BASS_ChannelStop' referenced from C:\USERS\LENA\DOCUMENTS\EMBARCADERO\STUD IO\PROJECTS\ANDROID81\WIN64\RELEASE\UNIT 1.O
[ilink64 Error] Error: Unresolved external 'BASS_SampleFree' referenced from C:\USERS\LENA\DOCUMENTS\EMBARCADERO\STUD IO\PROJECTS\ANDROID81\WIN64\RELEASE\UNIT 1.O
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
23.09.2020, 13:59
Лучший ответ Сообщение было отмечено silvalena как решение

Решение

Лена, бери coff2omf в папке bin своего Билдера, и конвертируй lib-файл в формат OMF. После конвертации подключаешь полученный файл к проекту, убираешь COFF-версию, которая была подключена ранее, и проект (по крайней мере, тот, который ты привела в предыдущем посте) прекрасно собирается под Windows (проверялось под Win7 + XE4)...
2
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
23.09.2020, 16:44  [ТС]
Я в огромном текстовом файле bass.txt, случайно нашла такую информацию:
To use BASS with Borland C++ Builder, you will first have to create a
Borland C++ Builder import library for it. This is done by using the
IMPLIB tool that comes with Borland C++ Builder. Simply execute this:

IMPLIB BASSBCB.LIB BASS.DLL

... and then use BASSBCB.LIB in your projects to import BASS.

Вроде Builder это уже не Borland.

Добавлено через 3 минуты
Спасибо, буду пробовать что за зверь такой coff2omf.

Добавлено через 51 секунду
Пока не получилось:
ERROR: COFF error: bass.lib
<coffewad.cpp, 1672>invalid machine type detected

bass.lib беру из этой папки закаченного архива bass24\c\x64
Правильно?

Добавлено через 45 минут
Проект откомпилировался и запустился после отказа от WIN64 и выбора платформы Target platform WIN32 и использования Coff2Omf . Соотвественно файлы bass.dll bass.h bass.lib были выбраны 32 бит.
Только вот музыка не заиграла.

Добавлено через 3 минуты
Заработало. Надо убрать L
PAnsiChar(тута...

Добавлено через 1 час 10 минут
Не понимаю как менять громкость...
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 BASS_Init(-1, 44100, BASS_DEVICE_3D, 0, NULL); //Инициализация звукового потока
 str=BASS_StreamCreateURL(PAnsiChar("http://91.199.194.34:8000"), 0, 0, NULL,0); //Создаем поток str.
 BASS_SetVolume(0.1);
 BASS_ChannelPlay(str, False); //Воспроизвести наше звуковой поток str
 
}
Если тип float, то как менять громкость с помощью TrackBar?
http://www.un4seen.com/doc/#ba... olume.html
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
23.09.2020, 16:51
Сделать трекбар от 0 до 100 и передавать TrackBar1->Position / 100.0 в метод.
1
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
23.09.2020, 18:58  [ТС]
Дошло.
Min=0
Max=1
C++
1
2
3
4
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
  BASS_SetVolume(TrackBar1->Value);
}
Интересно, что после освобождения:
BASS_ChannelStop(str); //Остановка
BASS_SampleFree (smp); //Чистим ресурс

Можно двигать TrackBar и нет никаких исключений...

Упс... Сейчас попробую.

Добавлено через 15 минут
Вроде все работает.
C++
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
#include <fmx.h>
#pragma hdrstop
 
#include "bass.h"
#include "Unit1.h"
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.fmx"
TForm1 *Form1;
 
HSAMPLE smp;
HSTREAM str;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
 TrackBar1->Value = 10;
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 BASS_Init(-1, 44100, BASS_DEVICE_3D, 0, NULL); //Инициализация звукового потока
 str=BASS_StreamCreateURL(PAnsiChar("http://91.199.194.34:8000"), 0, 0, NULL,0); //Создаем поток str.
 BASS_SetVolume(TrackBar1->Value/100.0);
 BASS_ChannelPlay(str, false); //Воспроизвести наше звуковой поток str
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 BASS_ChannelStop(str); //Остановка
 BASS_SampleFree (smp); //Чистим ресурс
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
  BASS_SetVolume(TrackBar1->Value/100.0);
}
//---------------------------------------------------------------------------
Теперь можно пробовать погружаться в ужасы Андроида...

Добавлено через 1 час 22 минуты
Беру BASS для Андроида: https://www.un4seen.com/
В раздел Project->Deployment добавляю все файлы из папки libs архива.
А как получить правильный bass.h для Андроида?
Пишут для Дельфи есть файл BASSFunctions.pas
https://alexbirukov.ru/?go=all... tudio-xe7/
А как получить h файл?

Добавлено через 29 минут
На форуме их нашла:
If you're creating your app in C++, you will need the BASS.H header. That header is the same on all platforms, so you can can take it from one of the Win32/OSX/Linux BASS packages.

Так этот их bass.h в Андроиде не работает.
[bccaarm Error] bass.h(20): typedef redefinition with different types ('uint32_t' (aka 'unsigned int') vs 'unsigned long')
sysmac.h(244): previous definition is here

и попадаю сюда:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef BASS_H
#define BASS_H
 
#ifdef _WIN32
#include <wtypes.h>
typedef unsigned __int64 QWORD;
#else
#include <stdint.h>
#define WINAPI
#define CALLBACK
typedef uint8_t BYTE;
typedef uint16_t WORD;
typedef uint32_t DWORD; <----------ошибка
typedef uint64_t QWORD;
#ifdef __OBJC__
#include <objc/objc.h>
#else
0
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
24.09.2020, 11:26  [ТС]
Пока предположение такое:
В скаченном архиве BASS для Windows есть такой путь bass24\delphi и в этой папке есть файл bass.pas
Наверное надо каким-то образом из этого файла получить правильный bass.h для С++ Builder
Впрочем это только догадки и скорее всего не правильные. Раз я качаю BASS для Windows значит там bass.h для VCL и поэтому ошибка при Alt+F9 для Андроида:
[bccaarm Error] bass.h(20): typedef redefinition with different types ('uint32_t' (aka 'unsigned int') vs 'unsigned long')
sysmac.h(244): previous definition is here


Где взять bass.h для Андроид, не ясно...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
24.09.2020, 13:22
Проверять негде, у меня Windows только 32-битная, на древнем ноуте, там AndroidSDK не установишь, но чисто теоретически, я бы попробовал добавить этот pas-файл к проекту, и пересобрать проект. При этом должен создаться hpp-файл со всеми определениями в синтаксисе C++ для всего, что есть в pas-файле. Вот его и попробуй подключить к своему проекту через #include...
1
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
24.09.2020, 14:34  [ТС]
Правильно ли я понимаю:
Добавляем + Build All и появиться h файл?

p.s.
Возникла еще мысль вообще создать проект на Дельфи и там проверить. Коду то у меня с гулькин нос, может и получиться перевести на Паскаль. Правда помню, что begin end и правильное их расположение в синтаксисе превращали меня в одну из статуй Медузы Горгоны.
0
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
25.09.2020, 17:26  [ТС]
Alt+F9 отработал нормально, после такого изменения:
//typedef uint32_t DWORD;
typedef uint32_t UINT32;
Буду теперь пробовать подключать телефон...

Добавлено через 3 часа 42 минуты
Не получился каменный цветок.
При линковке: [ldandroid Error] "ld" exited with code 1.
Посмотрела некоторые жалуются на эту ошибку в С++ Builder 10.2 10.3
Кому-то помогло переименование проекта, кому-то Clean проекта. Мне не помогло.
Предполагаю, что линкеру что-то не нравиться в bass.h т.к. если закомменторовать код, ошибки линкера нет...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
//BASS_SetVolume(TrackBar1->Value/100.0);//если убрать комментарий то ошибка линкера
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// BASS_Init(-1, 44100, BASS_DEVICE_3D, 0, NULL);
// str=BASS_StreamCreateURL(PAnsiChar("http://91.199.194.34:8000"), 0, 0, NULL,0);
// BASS_SetVolume(TrackBar1->Value/100.0);
// BASS_ChannelPlay(str, false);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
// BASS_ChannelStop(str);
// BASS_SampleFree (smp);
}
Добавлено через 2 часа 24 минуты
Мои смелые предположения, что если попробовать сделать проект на Дельфи, то проблем не будет, оказались ошибочными...
[DCC Error] bass.pas(543): E2003 Undeclared identifier: 'PAnsiChar'
Delphi
1
2
3
4
5
6
  // Device info structure
  BASS_DEVICEINFO = record
    name: PAnsiChar;    // description <--- Error
    driver: PAnsiChar;  // driver
    flags: DWORD;
  end;
Замуровали демоны со всех сторон.
0
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
26.09.2020, 16:37  [ТС]
Возник такой вопрос, возможно, я делаю ошибку...
При скачивании BASS для Андроид в архиве 5-ть папок в папке libs
https://www.un4seen.com
armeabi/armeabi-v7a/arm64-v8a/x86/x86_64
в этих папках файл libbass.so
Мне в деплоймент проекта андроид из какой папки добалять libbass.so?
Или все добавлять?
0
4 / 4 / 4
Регистрация: 20.03.2015
Сообщений: 147
29.09.2020, 09:02  [ТС]
Создание приложения для Андроид с использованием BASS.
1. Скачиваем с офф.сайта архивы для Андроид и Windows.
2.
a) Для Дельфи 10.3.3 открываем из архива для Windows файл bass.pas. Вместо AnsiChar пишем Byte, место PAnsiChar пишем MarshaledAString.
b) Для С++ Builder 10.3.3 открываем bass.h и комментируем объявление
//typedef uint32_t DWORD;
с) Включаем эти файлы в проект uses/include.
3. Добавляем в Deployment проекта файлы SO из папок armeabi/armeabi-v7a/arm64-v8a и указываем в Deployment пути Remote path (library\lib\armeabi-v7a и других).
4. В опциях проекта добавляем в Seach Path путь к папке arm64-v8a.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.09.2020, 09:02
Помогаю со студенческими работами здесь

Верстка для андроида
Нужна ваша помощь, а именно студента для верстки под андроид.

Форма для андроида
Когда на смартфоне с системой андроид на сайте кликнуть пальцем на поле input, внизу появляется стандартная вирт-я клавиатура андроид....

Программы для андроида
Вот хотел спросить на каком языке пишуть программы для андроида? Лазил в инети нашел что на java, но java пакуется в формат jar,...

2d игра для андроида
Здрасте, подскажите трудно ли будет напистаь что то вроде человечек бежит и на встречу ему кубики и он должен перепрыгивать, трудно ли...

Создание приложения для Андроида
Здравствуйте, подскажите можно ли создать приложение для андроида в виде радио, где за основу будет браться лишь интернет-адрес плеера...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru