audo mp3 сделать чтоб не могли скачать

есть такой вопрос есть файл в корен сайта например test.mp3 как сделать чтоб его вставили на html audo тегу и услишали пользователи но не могли скачать его? за акцент извините не русский


Ответы (2 шт):

Автор решения: Олег

Есть хитрый вариант - конвертировать мп3 во flash с изображением собственного плеера, (или без него) а на сайте использовать это с расширением не .swf, а mp3. В итоге, это можно будет скачать, но при попытке воспроизведения в плеерах файл будет звучать с завышенной скоростью, и никто не поймет, почему. Но вряд ли кто-то догадается, что на самом деле это файл swf а не мп3.

→ Ссылка
Автор решения: Опан

Есть вариант хранить мп3-файлы на сервере в зашифрованном виде, и для получения возможности прослушивать нужно будет один раз ввести ключ для расшифровки. После этого он сохранится в localStorage и в дальнейшем можно будет свободно слушать музыку, а она будет на лету расшифровываться. Это может быть полезным так же для организации платного контента.

<audio id=audio src="http://opan.strana.de/encrypted-music/trewq.mp3" controls></audio>
<button onclick="localStorage.setItem('key', ''); location.reload()"> Удалить ключ </button>
<script>
if(!localStorage.getItem('key')) localStorage.setItem('key', prompt('Введите ключ'));
let xhr = new XMLHttpRequest();
xhr.open("get", audio.src);
xhr.responseType = "arraybuffer";
xhr.send();
xhr.onload = function(){
    let index = 0;
    let arr = new Uint8Array(xhr.response);
    let mylength = arr.length;
    let out = [[], []];
    for(i = 0; i < mylength; i ++){
        for(j = 0; j < localStorage.getItem('key'); j ++){
            while(out[1][index] = false){
                index ++;
                if(index >= mylength) index = 0;
            }
            index ++;
            if(index >= mylength) index = 0;
        }   
        out[0][i] = arr[index];
        out[1][index] = false;
    }
    audio.src = URL.createObjectURL(new Blob([new Uint8Array(out[0])]));
}
</script>

В этом примере ключ равен семи. (7)

Живая ссылка: Воспроизведение зашифрованного аудиофайла

→ Ссылка