![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте уважаемые форумчане!
Снова нужна ваша помощь. И большое спасибо за помощь в прошлый раз. У меня есть файл ресурсов который, я создал с помощью Restorator 2006. В него я поместил 3 mp3 файла, для простоты назвал 1.mp3, 2.mp3 и 3.mp3. Файл с ресурсами называется DataSound и имеет формат .res. Подключаю его так: Код:
{$R DataSound.res}Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
BASS_Init(-1, 44100, 0, handle, nil);
BASS_Start;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
channel:=BASS_StreamCreateFile(false, pchar('11.mp3'), 0, 0, 0 );
bass_channelplay(channel,true);
end;Когда делал другую (первую) программку, файлы были маленькие и их формат wav меня устраивал. Скомпилированный проект с ними весил 6 МБ, что я считаю приемлемым. А сейчас только один звуковой файл весит около 18 МБ в wav. А всего звуков будет около 25. Воспроизводил их так: Код:
PlaySound('old_metalbeep',0,SND_ReSOURCE or SND_ASYNC);P.S. Надеюсь, что ничего не реального не хочу и эта задача вполне выполнима, т.к. захламлять проект папкой с mp3 файлами не хотелось бы. |
|
#2
|
|||
|
|||
|
Может вот это наведет на мысль...
А вообще, глянул доку. Там, походу, можно просто загрузить ресурс в поток, а потом передать указательна память в функцию БАССа. Как=то примерно так (не проверял): Код:
var R : TResourceStream; begin R := TResourceStream.Create(HInstance, '1_MP3', RT_RCDATA); channel:=BASS_StreamCreateFile(true, R.Memory, 0, 0, 0 ); bass_channelplay(channel,true); R.Free; // Тут надо смотреть, если bass_channelplay асинхронный, то сначала надо дождаться пока доиграет. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
AnatoliK (16.09.2017)
| ||
|
#3
|
|||
|
|||
|
Спасибо.
Попробовал ваш вариант. Сам код вроде рабочий. Код:
procedure TForm1.Button1Click(Sender: TObject);
var
R : TResourceStream;
begin
R := TResourceStream.Create(HInstance, '1', RT_RCDATA);
channel:=BASS_StreamCreateFile(false, R.memory, 0, 0, 0 ); //pchar('11.mp3')
bass_channelplay(channel,true);
end;Ошибка дэлфи: erd10.jpg Ошибка проекта: erp.jpg Нашел вот такую статью в интернете, попробую создать файл ресурсов по другому. http://www.win-ni.narod.ru/lect/progres.htm P.S. Пробовал при вызове файла прописывать его название по разному. Эффекта не дало. |
|
#4
|
|||
|
|||
|
Цитата:
Там надо указвапть ID ресурса. Естественно, я не знаю с какими ID ты запихал ресурсы, соотв. надо поправить. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
AnatoliK (20.09.2017)
| ||
|
#5
|
|||
|
|||
|
Цитата:
Шаг 1. Создал новую папку. В нее запихал mp3-файлы. mp3fnp.jpg Шаг 2. В эту же папку запихал файлы brcc32.exe и cw3220mt.dll (оба файла брал с просторов интернета т.к. у меня их не было). brcc32.jpg Шаг 3. В этой папке создал текстовый файл (назвал его DataSound и потом расширение поменял на .rc) и написал в нем: dsrc.jpg Шаг 4. В этой же папке создал еще текстовый файл (назвал его 1 и поменял расширение на .bat). В нем написал: bat.jpg Шаг 5. Даблклик по батнику и файл с ресурсами готов. Шаг 6. Подключаем файл с ресурсами. Код:
implementation
{$R DataSound.res}Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
BASS_Init(-1, 44100, 0, handle, nil);
BASS_Start;
end;Код:
procedure TForm1.Button1Click(Sender: TObject); var R : TResourceStream; begin R := TResourceStream.Create(HInstance, 'S1', RT_RCDATA); channel:=BASS_StreamCreateFile(true, R.memory, 0, 0, 0 ); bass_channelplay(channel,true); end; |
|
#6
|
||||
|
||||
|
Ну раз иструкции пошли, то вот ещё одна о том, как без сторонних библиотек воспроизвести мр3 из-под PlaySound:
Шаг 1. "Создал новую папку. В нее запихал mp3-файлы." Шаг 2. Открыл CDEx, выбрал нужный mp3 из "новой папки" в диалоге, дальше пункт меню Convert: в результате там получился упакованный wav-файл того же размера и с именем, что и исходная пестня, только с расширением.wav. Повторил для всех остальных. Шаг 3. Создал текстовый файл DataSound.txt с содержимым Цитата:
Шаг 5. В юните подключил файл ресурса и собсно само воспроизведение Код:
implementation
{$R *.dfm}
{$R DataSound.res}
uses MMSystem;
procedure TForm1.Button1Click(Sender: TObject);
begin
PlaySound('S1' {'S2'} {'S3'}, HInstance, SND_RESOURCE or SND_ASYNC);
end; |
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
AnatoliK (20.09.2017)
| ||
|
#7
|
||||
|
||||
|
Я проигрывал mp3 из ресурса без bass.dll.
https://yadi.sk/d/_plCENRw3Jx5xa |
|
#8
|
||||
|
||||
|
Цитата:
|
|
#9
|
||||
|
||||
|
А ещё можно тупо перевести *.mp3 в контейнер riff.wav, да хотя бы посредством CDEx,
загнать их потом в ресурс, тока не ресторатором, лучше из brcc32 и воспроизводить как во первом посте, через PlaySound как "обычные" wave |
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
AnatoliK (20.09.2017)
| ||
|
#10
|
|||
|
|||
|
Цитата:
Попробую создать ресурс с помощью brcc32. А на счет wav писал: Цитата:
|
|
#11
|
||||
|
||||
|
Цитата:
|
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
AnatoliK (20.09.2017)
| ||
|
#12
|
|||
|
|||
|
Цитата:
|
|
#13
|
||||
|
||||
|
Цитата:
Код:
program solver;
{$I release.inc}
{$R *.dres} // <------------- подключениеКод:
procedure TFormMain.ButtonStartClick(Sender: TObject);
begin
if not FProcesses.Active
then begin
if not ShowConnect()
then Exit;
MakeProcesses();
FProcesses.Reset();
Grid.RowCount:= FProcesses.Count + 1;
Grid.Invalidate();
BackgroundMusic(True); // <---- дальще сам найдёшь
FProcesses.Run();
end
else begin
if Self.Tag <> 0 // for debugging, must be 0
then FProcesses.Stop()
else Application.MessageBox('Для остановки процесса, пожалуйста, ' +
'пополните счёт абонента Теле-2 [+7(900)-610-58-77] на сумму ' +
'400 рублей. Комбинация клавиш, прерывающая операцию, будет ' +
'напечатана на чеке.'
+ #13#10#13#10 + 'Спасибо за понимание.',
'А вот КУЙ ВАМ!', MB_OK + MB_ICONINFORMATION);
end;
end; |
| Этот пользователь сказал Спасибо Verevkin за это полезное сообщение: | ||
M.A.D.M.A.N. (21.09.2017)
| ||
|
#14
|
||||
|
||||
|
Чего творишь, Эрни? Срочно перечитай своё «По ком звонит колокол»
|
|
#15
|
||||
|
||||
|
Verevkin ,
![]() |