как заставить пользовательский аудиоплеер воспроизводить песни, размещенные в Интернете

#javascript #html #jquery #css #html5-audio

#javascript #HTML #jquery #css #html5-аудио

Вопрос:

Я хочу использовать пользовательский аудиоплеер для воспроизведения звуковых дорожек, размещенных в Интернете.

Например, я хочу иметь возможность передавать аудиоплееру ссылку, например example.com/path/to/track.mp3 и он должен разобрать его и воспроизвести. Я могу воспроизводить звуковые дорожки, размещенные локально

Вот код, в котором у меня проблема. У меня есть аудиообъект, который указывает на локальную папку, в которой находятся звуковые дорожки. Я не уверен, как с этим бороться, если он не размещен локально.

Когда я заменяю путь URL-адресом, аудиоплеер просто зависает.

 $(function () {
    var count = 0;
    var audio;

    //Hide Pause
    $('#pause').hide();

    initAudio($('#playlist li:first-child'));

    function initAudio(element) {
        var song = element.attr('song');
        var cover = element.attr('cover');
        var artist = element.attr('artist');
        var title = element.text();
        var temp = parseFloat($('#volume-slider').val() / 100);

        //Create audio object
        audio = new Audio('../media/books/'   song);

        audio.volume = temp;

        audio.addEventListener("loadedmetadata", function () {
            minutes = parseInt(audio.duration / 60);
            seconds = parseInt(audio.duration % 60);

            if (seconds < 10) {
                seconds = '0'   seconds;
            };
            if (minutes < 10) {
                minutes = '0'   minutes;
            };
        
            $('#duration').html(minutes   ':'   seconds);
        });

        $("#auto-play").click(function () {
            if (count === 1) {
                $("#auto-play").css("background-color", "black");
                count = 0;
            } else {
                $("#auto-play").css("background-color", "rgb(0,0,255)");
                count = 1;
            }
        });

        audio.addEventListener('ended', function () {
            if (count > 0) {
                var next = $('#playlist li.active').next();
                if (next.length == 0) {
                    next = $('#playlist li:first-child');
                }
                initAudio($(next));
                audio.play();
                showCurrentTime();
            }
        });

        //Inserts track info
        $('.artist').text(artist);
        $('.title').text(title);
        $('#duration').text();
        //Insert song cover. NOTE: the path below is relative to the 
        //html "img.cover" element not this js file.
        $('img.cover').attr('src', '../media/books/covers/'   cover);
        $('#playlist li').removeClass('active');
        element.addClass('active');
    };
});
  

Комментарии:

1. Вы получаете какие-то ошибки в консоли? Может быть, что-то вроде CORS.

2. Привет, брандит, да, я говорю, что доступ к xmlhttprequest по адресу (ссылка) из origin null заблокирован политикой CORS. у меня мало опыта в работе в Сети, и я не уверен, почему это так. Есть ли способ реализовать это более простым способом? Спасибо

3. Моя цель — отсканировать и перечислить все саундтреки по данной ссылке. Затем создайте список воспроизведения и сможете их воспроизводить.

Ответ №1:

Вы можете избежать ошибок CORS с помощью чего-то подобного. Для вашей локальной разработки это было бы легко. Если вы хотите перейти на продакшн, это будет немного сложнее. Сервер с саундтреками должен принять ваше приложение.

Комментарии:

1. Еще раз спасибо, я сейчас посмотрю на ссылку. Сервер принадлежит archive.org и у них действительно есть api, если вы это имеете в виду