Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/75: Рейтинг темы: голосов - 75, средняя оценка - 4.87
(ノಠ益ಠ)ノ彡┻━┻
152 / 152 / 78
Регистрация: 05.06.2014
Сообщений: 710
Записей в блоге: 2
1

Реализовать плейлист для HTML тега <audio>

31.08.2014, 11:18. Показов 15538. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача состоит в следующем, реализовать плейлист для тега <audio> с запуском по клику по файлу и тд.
Что то на подобии плеера ВКонтакте
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.08.2014, 11:18
Ответы с готовыми решениями:

Остановить музыку тега audio ( HTML 5 )
Как через JavaScript остановить музыку, которая играет через тег &lt;audio&gt;?

Реализовать плейлист радиостанций для AxWindowsMediaPlayer
Всем доброе время суток. Есть программа радио онлайн делал давно и давно не слушал вот решил...

Стилизация тега audio
Здравствуйте. Подскажите, есть тег &lt;audio&gt; &lt;audio controls&gt; &lt;source src=&quot;my_audio.mp3&quot;...

Стилизация тега audio
Всем привет) Подскажите пожалуйста плагин для стилизации аудио-плеера) Я пробовал использовать...

20
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
31.08.2014, 12:14 2
N3stY,

Создайте список, в котором будут храниться названия всех песен, так же для каждого LI пропишите атрибут
data-src, там пропишите ссылки на аудио. Далее создайте свои контроллеры : play/pause/stop, пусть текущее аудио находится в переменной currentAudio, с ней проводите все манипуляции, весь список храните в массиве ( так можно будет реализовать кнопки след/пред трeк )

И все, по клику на список доставайте атрибут data-src и вставляйте его в тег audio
1
(ノಠ益ಠ)ノ彡┻━┻
152 / 152 / 78
Регистрация: 05.06.2014
Сообщений: 710
Записей в блоге: 2
31.08.2014, 12:46  [ТС] 3
Thisman, и окончанию одного начнет играть другой?
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
31.08.2014, 14:45 4
Лучший ответ Сообщение было отмечено N3stY как решение

Решение

N3stY, есть событие окончания трека, при нем запускаешь новый
1
(ノಠ益ಠ)ノ彡┻━┻
152 / 152 / 78
Регистрация: 05.06.2014
Сообщений: 710
Записей в блоге: 2
01.09.2014, 08:11  [ТС] 5
Thisman, Большое спасибо, а то уж мозги начинали кипеть, не знал в каком направлении рыть
0
Юзер с абсолютным слухом
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
02.09.2014, 11:25 6
Thisman, Вы не могли бы чуть более подробно об использовании data-src с <audio> с примером кода? (Пытался я гуглить, но ничего не понял.)
0
(ノಠ益ಠ)ノ彡┻━┻
152 / 152 / 78
Регистрация: 05.06.2014
Сообщений: 710
Записей в блоге: 2
02.09.2014, 15:10  [ТС] 7
Опан,

Что то типа этого:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$(function() { 
        // Setup the player to autoplay the next track
        var a = audiojs.createAll({
          trackEnded: function() {
            var next = $('ol li.playing').next();
            if (!next.length) next = $('ol li').first();
            next.addClass('playing').siblings().removeClass('playing');
            audio.load($('a', next).attr('data-src'));
            audio.play();
          }
        });
        
        // Load in the first track
        var audio = a[0];
            first = $('ol a').attr('data-src');
        $('ol li').first().addClass('playing');
        audio.load(first);
 
        // Load in a track on click
        $('ol li').click(function(e) {
          e.preventDefault();
          $(this).addClass('playing').siblings().removeClass('playing');
          audio.load($('a', this).attr('data-src'));
          audio.play();
        });
        // Keyboard shortcuts
        $(document).keydown(function(e) {
          var unicode = e.charCode ? e.charCode : e.keyCode;
             // right arrow
          if (unicode == 39) {
            var next = $('li.playing').next();
            if (!next.length) next = $('ol li').first();
            next.click();
            // back arrow
          } else if (unicode == 37) {
            var prev = $('li.playing').prev();
            if (!prev.length) prev = $('ol li').last();
            prev.click();
            // spacebar
          } else if (unicode == 32) {
            audio.playPause();
          }
        })
      });
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
03.09.2014, 14:00 8
Опан, ну,любому тегу можно приписать любой "свой" атрибут.
Поэтому можно делать вот так вот:

HTML5
1
2
3
4
5
6
7
<ul>
<li><span data-src="track1.mp3">трек №1</span></li>
<li><span data-src="track2.mp3">трек №2</span></li>
<li><span data-src="track3.mp3">трек №3</span></li>
<li><span data-src="track4.mp3">трек №4</span></li>
<audio src=""/>
</ul>
Javascript
1
2
3
4
5
6
7
var audio = $("audio")[0];
//Вешаем обработчик
$.each($("li"),function (i,el) {
    el.onlick = function() {
         audio.src = $(el).atrr("data-src");
    }
})
0
Юзер с абсолютным слухом
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
04.09.2014, 12:24 9
У меня почему-то не работает. Такое ощущение, что не хватает какой-то библиотеки.
Ещё такое - редактору notepad++ видится незнакомым атрибут data-src, (подсвечивается чёрным цветом) а вот если без тире - datasrc - признаёт знакомым. (подсвечивается красным)
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
04.09.2014, 12:49 10
Опан, я использовал JQ, возможно ее стоит подключить, на счет тире, без разницы должно работать и с тире
0
Юзер с абсолютным слухом
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
04.09.2014, 13:24 11
JQ у меня подключено, но может неправильно или у меня неправильная версия jQuery v1.7.1?
Javascript
1
<script src="jquery.js"></script>
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
04.09.2014, 13:36 12
Опан, использовал 2.1.1 кажется

Добавлено через 56 секунд
Цитата Сообщение от Thisman Посмотреть сообщение
audio.src = $(el).atrr("data-src");
заметил опечатку, там свойство attr, исправьте и должно работать
0
Юзер с абсолютным слухом
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
04.09.2014, 13:52 13
Ничего не изменилось. Я потом даже под этой строкой вставил audio.play();, не помогло.

Добавлено через 4 минуты
Буду искать версию 2.1.1
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
04.09.2014, 13:53 14
Цитата Сообщение от Thisman Посмотреть сообщение
onlick

замени еще на onclick
0
Юзер с абсолютным слухом
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
04.09.2014, 15:47 15
Не помогло. И версию тоже обновил.
Ещё я заметил, что в обработчике нигде не используется переменная i.
А в общем, оказывается можно этот алгоритм реализовать без jquery - изменил data-src на id и вот что получилось:
HTML5
1
2
3
4
5
6
7
8
<audio id=audio></audio>
 
<ul>
<li><span id="track1.mp3">трек №1</span></li>
<li><span id="track2.mp3">трек №2</span></li>
<li><span id="track3.mp3">трек №3</span></li>
<li><span id="track4.mp3">трек №4</span></li>
</ul>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
<script>
var audio = document.getElementById("audio");
var all_span = document.getElementsByTagName("span");
 
for(i=0;i<all_span.length;i++){
    all_span[i].onclick=function(){
        audio.src=this.id;
        audio.play();
    }
}
 
</script>
Всё работает.
0
Юзер с абсолютным слухом
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
16.09.2014, 21:27 16
Thisman, я нашёл в и-нете пример, где используется data-src: http://kolber.github.io/audiojs/demos/test6.html но там используется библиотека audio.js. Без неё...
N3stY, оказывается исходный код примера по выше указанной ссылке эдентичен Вашему коду в седьмом посту этой темы. И этот пример подходит для решения Вашей задачи.
0
(ノಠ益ಠ)ノ彡┻━┻
152 / 152 / 78
Регистрация: 05.06.2014
Сообщений: 710
Записей в блоге: 2
16.09.2014, 22:51  [ТС] 17
Опан, спасибо, я уже разобрался с этим, осталось найти нормальный способ заставить плеер играть при переходах по страницам (наподобии вк), но это уже совсем другая история
0
Юзер с абсолютным слухом
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
16.09.2014, 23:02 18
Похоже, что на вк переход по страницам делается путём обновления <frame> или <iframe>, или чего-то в этом роде, а плеер находится на основной странице. Так что, на его работу это не влияет.
0
(ノಠ益ಠ)ノ彡┻━┻
152 / 152 / 78
Регистрация: 05.06.2014
Сообщений: 710
Записей в блоге: 2
16.09.2014, 23:19  [ТС] 19
Опан, нет, там не iframe, это AJAX. Мне данный метод не подходит, тк. я использую готовую CMS (да это никуда не годится, но не было времени писать своё) и там используется шаблонизатор не позволяющий использовать AJAX навигацию. Возможно как только переведу все скрипты на свою cms, тогда и ajax навигацию сделаю.
0
Юзер с абсолютным слухом
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
16.09.2014, 23:34 20
Всё равно попробуйте поместить плеер в шаблоне основной страницы. В cms DLE, на пример, этот шаблон находится в файле main.tpl (хотя я так ещё не пробовал).
0
16.09.2014, 23:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2014, 23:34
Помогаю со студенческими работами здесь

Обработка тега <audio>
Доброго времени суток! У меня на странице есть несколько тегов &lt;audio&gt;. Когда запускаешь один из...

CSS модификаторы тега <audio>
Здравствуйте. Я пишу курсовую работу в универе, простенький сайт-набор страничек. Мне необходимо...

Звуковое уведомление на сайте с помощью тега audio
Здравствуйте. На сайте есть уведомления, появляются автоматически подгружаясь ajax-ом в див элемент...

Запуск проигрывания аудиозаписи из тега audio программным путем на мобильных брузерах
Здравствуйте. У меня такой вопрос: можно ли, и если да, то как, программным путем запустить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru