Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> КАК ПРОИГРАТЬ MP3 ИЗ РЕСУРСА? Не сохраняя файл на диск!!! 
:(
    Опции темы
Kostya-xp
  Дата 12.1.2005, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



Как проиграть MP3 из ресурса, не сохраняя файл на диск. Например, с помощью BASS, FMOD, DSPack или любой другой библиотеки, компонента (чего угодно лишь бы проиграло MP3 из ресурса) smile
Помогите конкретным куском кода пожалуйста - smile


Это сообщение отредактировал(а) Kostya-xp - 12.1.2005, 21:15
PM MAIL   Вверх
Kostya-xp
  Дата 12.1.2005, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



Ну, хоть кто-нибудь знает, как это сделать? smile

smile


Это сообщение отредактировал(а) Kostya-xp - 12.1.2005, 20:35
PM MAIL   Вверх
Illusion Dolphin
Дата 12.1.2005, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



Знаю smile И даже без посторонних библиотек smile Правда, это всё идёт только на винь2000\ХР... на ранних версиях вроде как не катит - увы. ПО если мы не пишем под старьё, то так:
Во-первых надо вспомнить, что не все файлы с расширением wav такие огромные... почему? Да потому что они закомпрессированы с помощью mp3. итого: берём в руки какой-нибудь конвертор и кодируем нашь mp3 файл в wav, но при этом wav-файл сжимается mp3 кодеком. (надеюсь меня поняли smile , т.к. я не уверен, что чистый mp3 так пойдёт). Создаём файл ресурсов, туда в секцию RCData заносим "MY_WAVE" - имя ресурса, в который записываем нашь wav (но он внутри как mp3). Сохраняем на диске и теперь в проекте:
Код

uses
 MMSystem, ....;

{$R sound.res} //я файл обозвал как "sound.res"

procedure TForm1.Button1Click(Sender: TObject);
var
 WaveHandle: THandle;
 WavePointer: pointer;
begin
WaveHandle := FindResource(hInstance, 'MY_WAVE', RT_RCDATA);
if WaveHandle <> 0 then
begin
  WaveHandle := LoadResource(hInstance, WaveHandle);
   if WaveHandle <> 0 then
  begin;
      WavePointer := LockResource(WaveHandle);
      sndPlaySound(WavePointer, snd_Memory or SND_ASYNC);
      UnlockResource(WaveHandle);
   FreeResource(WaveHandle);
end;
end;

end;

Вот и всё... теперь в приложении играется по сути мр3 файл.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Kostya-xp
Дата 12.1.2005, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



Illusion Dolphin
Не играет. smile
Вроде sndPlaySound играет только разжатые WAV файлы - с ними проблем нет, а вот с сжатыми…


Это сообщение отредактировал(а) Kostya-xp - 12.1.2005, 21:12
PM MAIL   Вверх
Illusion Dolphin
Дата 12.1.2005, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



Как это не играет?
У меня всё прекрасно играет! И именно сжатый! Вопросы таковы: какая у тебя винда (я говорил об ограничениях), как ты получаешься wav файл и как ты его сохраняешь в ресурсы (туда ли куда надо)?. Или я могу примерчик кинуть маленький.. может...


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Illusion Dolphin
Дата 12.1.2005, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



Вот, я прогу прицепил - там и исходник и скомпилиный экзешник (всего 100 кило всё весит).

Присоединённый файл ( Кол-во скачиваний: 46 )
Присоединённый файл  sound_res.zip


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Kostya-xp
Дата 12.1.2005, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



Получаю так

REZ:
MyWave RCDATA LOADONCALL 1.wav

Запихиваю его в прогу:
Uses
MMSYSTEM и т.д.
...

{$R sound.res}

...

procedure TForm1.Button1Click(Sender: TObject);
var
WaveHandle: THandle;
WavePointer: pointer;
begin
WaveHandle := FindResource(hInstance, 'MyWave', RT_RCDATA);
if WaveHandle <> 0 then
begin
WaveHandle := LoadResource(hInstance, WaveHandle);
if WaveHandle <> 0 then
begin;
WavePointer := LockResource(WaveHandle);
sndPlaySound(WavePointer, snd_Memory or SND_ASYNC);
UnlockResource(WaveHandle);
FreeResource(WaveHandle);
end;
end;

Скачал пример. Но звука не слышно. Подскажи что за звук должен быть?
Добавлено @ 21:33
О системе:
У меня стоит 2003 Server Enterprice Edition.Это конечно не 2000 и не XP, но по старости подходить должна smile

Это сообщение отредактировал(а) Kostya-xp - 12.1.2005, 21:36
PM MAIL   Вверх
Kostya-xp
Дата 12.1.2005, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



Illusion Dolphin
Как бы там не было спасибо за пример.
PM MAIL   Вверх
Illusion Dolphin
Дата 12.1.2005, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



Теперь разобрался (как видишь, пример я уже прицепил - успел опередить ;))? Работает на твоей машине? Если неполучается собрать или файл ресурсов создать нормальный, то я могу помочь парочкой советов....


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Kostya-xp
Дата 12.1.2005, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



Нет, в смысле все еще не сдвинулось с мертвой точки тишины...
Сейчас попробую на XP.
PM MAIL   Вверх
Kostya-xp
Дата 12.1.2005, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



Illusion Dolphin
А на XP все пашет!!!

И у меня все запустилось...

Это сообщение отредактировал(а) Kostya-xp - 12.1.2005, 22:00
PM MAIL   Вверх
Illusion Dolphin
Дата 12.1.2005, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



Цитата

Правда, это всё идёт только на винь2000\ХР... на ранних версиях вроде как не катит - увы. ПО если мы не пишем под старьё, то так:

smile


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Kostya-xp
Дата 12.1.2005, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



Буду ломать голову из-за чего на 2003 винде не пашет...
smile

(Вроде 2003 еще не устарела smile )

Это сообщение отредактировал(а) Kostya-xp - 12.1.2005, 22:02
PM MAIL   Вверх
Snowy
Дата 13.1.2005, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Установи кодеки, которыми вав зажат. Скорее всего дело именно в этом.
Поставь KLite. Еще можно Lame установить как кодек.
И зачем использовать sndPlaySound? PlaySound имеет более расширеные возможности.
А в XP кодек MP3 прошит уже при инсталяции, поэтому работает.
В 2003 этого делать не стали - система серверная, а не музыкальная.
PM MAIL   Вверх
Kostya-xp
Дата 13.1.2005, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



У меня стоит K-Lite 2.27. И все равно молчит. smile
Файл сжат LAME 3.92. А в состав K-Lite 2.27 входит 3.96. Так что кодек есть.

Это сообщение отредактировал(а) Kostya-xp - 13.1.2005, 21:04
PM MAIL   Вверх
Kostya-xp
Дата 13.1.2005, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



smile
PM MAIL   Вверх
Snowy
Дата 14.1.2005, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



А с несжатым файлом пробовал? Может и несжатый играть не будет? Тогда тут другие грабли.
Может попробовать загрусить файл в память и играть не из ресурса, а из памяти?
PM MAIL   Вверх
Illusion Dolphin
Дата 14.1.2005, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



Ну что? Никто не знает smile? Ладно, придётся объяснять...
1) Копируем библиотеку http://trackers.pp.ru/soft/util/bassdll.zip
2) Копируем архив
http://www.un4seen.co.uk/files/bass17.zip
И из последнего копируем себе файлик BASS.pas
3) ложим в папку с прогой библиотеку, подключаем себе этот модуль.
4) подключаем файл ресурсов, у меня ЧИСТЫЙ mp3 (без извращений) нажодился в \mp3\mp3
5) Пишем в делфе:

Код

procedure TForm1.Button2Click(Sender: TObject);
var
Res:TResourceStream;
m : Tmemorystream;
b:string;
begin
if not BASS_Init(-1, 44100, 0, handle) then begin
  Error('Could not initialize BASS');
  Exit;
end;
// start BASS
if not BASS_Start then begin
  Error('Could not start the BASS output');
  Exit;
end;
Res:=TResourceStream.Create(Hinstance,'MP3','MP3');
Res.Seek(0,soFromBeginning);
setlength(b,Res.size);
Res.ReadBuffer(b[1],Res.size);
m := Tmemorystream.Create;
m.Write(b[1],Res.size);
m.Seek(0,soFromBeginning);
SineStream:=BASS_StreamCreateFile(true, m.Memory,0,m.Size,0);
if (SineStream = 0) then begin
 Error('Could not create user stream');
 Exit;
end;
if not BASS_StreamPlay(SineStream, FALSE, 0) then begin
 Error('Could not start stream playback');
 Exit;
end;
end;


P.S. За освобождением памяти следите уж как-нибудь сами, т.к. это не суть сабжа, а я пока искал всё это уже замучался smile

FIN


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Snowy
Дата 14.1.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



В данном случае придется еще и BASS с собой таскать (кстати он уже версии 2.1)
PlaySound в данном случае удобней, но есть зависимость от кодека.
Интересно, а можно ли так извернуться, чтобы еще и BASS.dll запихать в ресурс и оттуда его юзать? smile Теоретически да, но...
PM MAIL   Вверх
Illusion Dolphin
Дата 14.1.2005, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



Цитата

В данном случае придется еще и BASS с собой таскать

Смотри первый пост.

Цитата

но есть зависимость от кодека

уже нет smile

Цитата

Интересно, а можно ли так извернуться, чтобы еще и BASS.dll запихать в ресурс и оттуда его юзать?

Можно туда засунуть и при необходимости "инсталить" в систему, но напрямую без сохванения на диск вроде как не получится.

Это сообщение отредактировал(а) Illusion Dolphin - 14.1.2005, 16:29


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Kostya-xp
Дата 14.1.2005, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



Snowy
Не сжатый файл играет спокойно.

Illusion Dolphin
Спасибо за пример. smile Сейчас попробую поюзать...

Это сообщение отредактировал(а) Kostya-xp - 14.1.2005, 17:42
PM MAIL   Вверх
Kostya-xp
Дата 14.1.2005, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



Illusion Dolphin
Все сделал, Ошибки таковы:

[Error] Unit1.pas(56): Undeclared identifier: 'SineStream'
[Error] Unit1.pas(58): Missing operator or semicolon {(это к Error)}
возникла парочка вопросов:

Я задал SineStream по типу DWORD.

Осталось определиться с Error


Если не трудно, ты бы не мог кинуть рабочий пример, без самого mp3 конечно?

P.S. Да это не sndPlaySound… smile

Это сообщение отредактировал(а) Kostya-xp - 14.1.2005, 18:52
PM MAIL   Вверх
Illusion Dolphin
Дата 14.1.2005, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



Код

var
SineStream: HSTREAM;

Прогу прилагаю.

Присоединённый файл ( Кол-во скачиваний: 57 )
Присоединённый файл  st.zip


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Kostya-xp
Дата 15.1.2005, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



Illusion Dolphin
По поводу примера:
А можно ли использовать что-то другое, а не
Код

sleep(5000);

Чтобы приложение не засыпало smile

Это сообщение отредактировал(а) Kostya-xp - 15.1.2005, 16:36
PM MAIL   Вверх
Illusion Dolphin
Дата 15.1.2005, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



Я sleep использовал только из-за того, что демо-программа была неоконной, а звук играется асинхронно. Если у тебя есть любое окно, то тогда тебе sleep использовать совсем не нужно.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Kostya-xp
Дата 15.1.2005, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.8.2004
Где: Россия

Репутация: нет
Всего: нет



Illusion Dolphin
Все это я уже совсем запрограммировался ...smile
smile Все работает. Огромное спасибо за помощь. smile smile

Это сообщение отредактировал(а) Kostya-xp - 15.1.2005, 18:48
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0737 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.