Воспроизведение песен MP3 без раскрытия пути к файлу

Я разрабатываю корзину для покупок на PHP, где я буду продавать песни в формате MP3. С отображением продукта я хотел бы предоставить посетителям / пользователям возможность прослушать песню только 1 раз. Поэтому, если я использую такие проигрыватели, как JW player, для воспроизведения песни. Игрок раскрывает путь к файлу в исходном коде веб-страницы и может загрузить файл напрямую.

Что я ищу, чтобы воспроизвести песню, чтобы посетители не знали путь к файлу песни.

Как я могу избежать этого? Пожалуйста посоветуй.

Спасибо


person Zack    schedule 01.07.2011    source источник


Ответы (4)


Вы запрашиваете систему DRM. Такого не существует.

Обоснование:

  • Алиса хочет отправить сообщение (файл MP3) Бобу
  • Алиса не хочет, чтобы Ева получила сообщение (файл MP3)
  • Боб и Ева — один и тот же человек

Это то, что DRM пытается решить. Все, что вы можете сделать, это попытаться скрыть этот факт от конечного пользователя. Удачи с этим...

(В приведенном выше примере вы можете заменить «Алиса» на «сервер», «Боб» на «посетитель сайта» и «Ева» на «пользователь, который хочет скачать файл без оплаты».)

Если вы согласны с тем, что у вас не может быть системы DRM, есть больше возможностей:

  • Отправлять пользователю только фрагмент файла, пока он не заплатит за него
  • Уничтожьте/поместите водяной знак на образец файла (например, на 15-й секунде воспроизведения файл MP3 содержит запись «Это демо-версия песни, купленная песня не будет содержать этого сообщения»).

Обратите внимание, что образец файла должен отличаться от фактического файла, который вы продаете. Это единственный способ решить проблему получения пользователем фактического файла до его оплаты.

person Mikko Rantalainen    schedule 01.07.2011

Вы не можете.

Хотя вы можете скрыть URL-адрес, вы не можете запретить людям скачивать песни бесплатно. Это просто не то, как работает HTTP. Если вы предоставите URL-адрес, независимо от того, скрыт он или нет, он в конечном итоге должен будет ответить данными для воспроизведения. В противном случае JWPlayer не сможет воспроизвести данные.

Поскольку JWPlayer встроен в веб-сайт, он должен сделать запрос к некоторому внутреннему серверу, обслуживающему данные. Эти запросы можно легко перехватить, и всего через несколько дней люди поймут, что могут скачивать полные альбомы бесплатно.

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

person Gordon    schedule 01.07.2011
comment
Вы можете поставить полную песню, но с закадровым голосом, говорящим, что это превью время от времени. - person Bart van Heukelom; 01.07.2011
comment
@ Барт, да, это еще одна возможная альтернатива. Однако это не меняет того факта, что вы не можете защитить песню от копирования при подаче через HTTP. Я бы увидел это в том же духе, что и короткое превью. - person Gordon; 01.07.2011
comment
Хорошо, я имел в виду это в том же духе :) - person Bart van Heukelom; 01.07.2011

Создайте страницу, которая обслуживает файл MP3 на основе некоторой случайной строки, которая передается в URL-адресе. Каждая случайная строка хранится в таблице базы данных со ссылкой на реальное местоположение файла. После того, как песня будет прослушана один раз, переверните поле статуса в базе данных, чтобы предотвратить повторное использование этой случайной строки.

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

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

person AndrewR    schedule 01.07.2011
comment
Это не поможет. Даже если URL-адрес можно получить только один раз, этого одного раза достаточно, чтобы загрузить всю песню. Как только люди узнают, что они могут получить полный файл один раз, они напишут парсер, собирающий одноразовые URL-адреса и загружающий их. - person Gordon; 01.07.2011

В общем, чего вы хотите добиться, так это предоставить покупателю «образец» песни, которую он собирается купить. После прослушивания образца он может купить полную версию песни.

На мой взгляд, здесь можно пойти двумя путями:

  1. Нарежьте любую песню на небольшой фрагмент, например, 1 минуту, и дайте им услышать только это. Если пользователю удастся загрузить это, нет проблем, потому что он не будет владеть полной песней. Вы можете сделать это автоматически на стороне сервера, используя кодировщик/декодер mp3, такой как FFMPEG, чтобы создать для вас небольшие образцы.

  2. Поскольку Flash очень хорошо работает с потоковой передачей аудио/видео, вы можете использовать механизм потоковой передачи по требованию, который также предоставит пользователю образец вашей песни. Таким образом, вы отправите клиенту только байты сэмпла, а не всю песню. Этого можно достичь с помощью технологий медиасерверов с открытым исходным кодом, таких как Red5.

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

Многие интернет-магазины музыки делают то же самое. Они дают вам только ограниченный предварительный просмотр.
Вот некоторые из них, о которых я знаю:

  • https://www.beatport.com/ в настоящее время является гибким музыкальным магазином, который также использует принцип потоковой передачи по запросу. чтобы дать вам ограниченный предварительный просмотр.
  • http://www.trackitdown.net/ — это музыкальный магазин на основе HTML/AJAX.

Ваше здоровье

person Dennis Jaamann    schedule 01.07.2011
comment
Вы не можете воспроизвести весь файл даже с вариантом 2, потому что посетитель все равно может сделать точную копию, записав цифровую версию, идущую на звуковую карту (или, возможно, скопировать вывод SP/DIF, если ОС пытается предотвратить копирование данных, идущего на звуковую карту). - person Mikko Rantalainen; 01.07.2011
comment
Вариант 2 по-прежнему позволяет пользователю бесплатно записывать всю песню, если вы передаете ему всю песню целиком. Простая циклическая запись с использованием инструмента записи, такого как Adobe Audition, позволяет вам записывать звук, воспроизводимый в данный момент на вашем компьютере, и по-прежнему необходимо наносить водяные знаки на звук, чтобы предотвратить это. - person shanethehat; 01.07.2011
comment
Ну, можем ли мы использовать Flash для этого? Например, вставить песни в файл флэш-памяти, а затем воспроизвести эту флэш-память? - person Zack; 01.07.2011
comment
Действительно, для полноты отредактировал ответ. Вариант 2 также потребует, чтобы вы отправили только образец. - person Dennis Jaamann; 01.07.2011
comment
Зак, нет, я бы не советовал этого делать, так как ваш swf будет чертовски раздут, и клиент на самом деле сможет декомпилировать ваш swf и извлечь из него песню в любом случае: P Вам нужно будет загружать песни динамически, чтобы это Работа - person Dennis Jaamann; 01.07.2011