Образец песни, хранящийся на сервере


Я разрабатываю сайт, который позволит пользователям прослушать 30-секундный образец песни, прежде чем решить, покупать ее или нет. Я планирую хранить все MP3-файлы под корневой папкой, чтобы к ним нельзя было получить прямой доступ.

Однако я пытаюсь выяснить, есть ли способ разрешить прослушивание 30-секундного образца песни, используя полный mp3-файл, или мне придется иметь уже вырезанный образец mp3, сохраненный на сервере как хорошо. Спасибо.

Author: user3817799, 2015-07-29

1 answers

Приведенный ниже код должен быть тем, что вы ищете:

HTML:

<audio src="song.mp3" id="song">

Javascript:

var song = document.getElementById('song');
song.play(); //Start playing sound
setTimeout(function(){song.pause(), 30000}; //Pause the song after 30,000 millisends(30 seconds);

Или

var song = document.getElementById('song');
song.play(); //start playing sound
setTimeout(function(){song.src="";}, 30000); //Instead of pausing the song, you remove the source file of the song which basically stops the sound

Второй вариант, вероятно, был бы предпочтительнее, потому что любой, обладающий базовыми знаниями HTML/JS, мог бы легко отключить аудиофайл и прослушать всю песню целиком. Однако лучшим вариантом было бы обрезать песню на сервере, потому что это экономит драгоценную пропускную способность. Это можно легко сделать с помощью инструмента редактирования звука командной строки сокс(http://sox.sourceforge.net /) с использованием следующего синтаксиса

sox <originalFile> <newFile> trim <startTime> <duration>

Пример:

sox input.wav output.wav trim 0 00:35

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

Надеюсь, это поможет:)

РЕДАКТИРОВАТЬ: Прочитав комментарий Солая, я думаю, что решение, на которое он ссылался, было бы самым простым, если вы используете PHP и хотите сделать это на стороне сервера. Если ты хочешь чтобы сделать это на стороне клиента или вы не используете PHP, мой, вероятно, был бы (на данный момент) правильным решением.

 1
Author: Ben Wingerter, 2015-07-29 05:16:39