Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Воспроизведение звука [Delphi, Windows]


Zwein ©   (2005-05-03 14:35:00) 

Конкретных требований в задаче нет. Общее - нужно, чтобы пользователь не смог воспроизвести содержимое файла стандартными проигрывателями. То есть файл должен быть закодирован хоть как-нибудь. Проблема в том, что большинство проигрывателей требуют на вход файл стандартного формата и ничего другого.

Вижу два варианта:
1)[проигрыватель] принимает данные из потока (потомка TStream) (или что-то в этом роде), тогда у меня есть возможность прочитать файл, раскодировать и т.п.
2)[проигрыватель] использует свой формат, в который можно упаковать мои исходные файлы.

Посоветуйте что-нибудь (компонент/библиотека) подходящее, и как вообще сабж решается в играх.


OSokin   (2005-06-07 20:06:00) [1]

Компонент TMediaPlayer с присабаченным к нему другим (что-то типа TVideo или др., вроде во вкладке Win32)


Odyssey   (2005-05-17 09:24:00) [2]

Здравствуйте. А как решить ту же задачу, но для видео?


OSokin   (2005-05-09 19:55:00) [3]

Да не мучайтесь вы! На исходниках.ру где-то в паскалевской секции были исходники проигрывателя на паскале. Но он немного не подходит для современных wav-файлов, и немного запись приходится дописывать...


Zwein   (2005-05-07 16:43:00) [4]

Всем спасибо.
Остановился на TBASSPlayer.
Ещё, есть много интересного на
http://www.nctsoft.com/download/index.aspx
DirectSound, конечно тоже подойдёт, но он слишком обширен для моей задачи.


Soft   (2005-05-05 00:15:00) [5]

Использование DirectSound на Delphi  
http://www.goldfaq.ru/modules/xfsection/article.php?articleid=431


Sphinx   (2005-05-03 21:42:00) [6]

Если не ошибаюсь bassумеет читать из потоков...


XProger   (2005-05-03 21:29:00) [7]

Читай DirectSound SDK


Zwein   (2005-05-03 21:08:00) [8]

> XProger ©   (03.05.05 18:17) [3]

Мне не влом шифровать. Как раз дело в том, что у меня нет такой возможности - известные мне компоненты её не предоставляют, т.к. они воспринимают только правильный общедоступный файл без всякого шифрования, и без всяких "промежутков" типа чтения из буфера...

Так вот заменяем первые N байта - пользователь конечно удивится что он не открывается винампом. Далее перед использованием восстанавливаем, чтоб, скажем, TMediaPlayer, смог его правильно прочитать, и файл становится стандартным. Юзер берёт FileMon смотрит чего моя софтина делает, находит этот файл и злобно тырит его, ведь он лежит там такой открытый всему миру :(((
Ему даже exclusive права на доступ нельзя задать, ведь он уже открыт.
А вот если б не надо было править файл прямо на диске для использования (если б это делал проигрыватель или я в памяти), то файл был бы защищён.

> cyborg ©   (03.05.05 19:46) [4]
это интересно, попробую.
было бы хорошо увидеть пример на delphi...


cyborg   (2005-05-03 19:46:00) [9]

DirectSound создаёшь буфер и пишешь в него всё, что угодно, угодного формата.


XProger   (2005-05-03 18:17:00) [10]

Ну раз влом шифровать...
Замени первые 4 байта в WAV файле на что-то вроде ZWAV ;)
Никакой проигрыватель такой файл не откроет.
Затем перед воспроизведением, восстанавливай эти байты обратно в 'RIFF' и после воспроизведения снова меняй на своё...
Подходит?


Zwein   (2005-05-03 15:51:00) [11]

>XProger ©   (03.05.05 14:42) [1]

Это вопрос совсем не о методах криптозащиты, а о том, что нужно "что-нибудь (компонент/библиотека)", позволяющее эту защиту, вообще, реализовать.
Достаточно перечитать тему.

Можно объяснить по другому:
Вещи типа TMediaPlayer требуют указать конкретный файл стандартногоформата, доступный для чтения. Ясно, что этот файл доступен и пользователю :( . А вот если бы он принимал в качестве параметра TMemoryStream, то можно было бы прочитать закодированный файл, расшифровать его в память (TMemoryStream) и дать проигрывателю. (Расшифровка в другой файл не подходит, т.к. легко отслеживается).
Т.е. мне нужен "TMediaPlayer", работающий с TStream.
Это самый простой вариант. Вполне возможно что такое "промежуточное звено" было реализовано как-то ещё...
Или же, может существовать специализированный [проигрыватель], который сам занимается сокрытием от пользователя...

Задача актуальна, судя по тому что мало игр хранят свои soundtrack's в *.mp3, *.wav и т.п.


XProger   (2005-05-03 14:42:00) [12]

a xor b = c
c xor b = a
Дальше догадаешься?


Наверх

Титульная страница Поиск, карта сайта Написать письмо