С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/34: Рейтинг темы: голосов - 34, средняя оценка - 5.00
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532

Не получается узнать длину аудио

21.12.2013, 03:02. Показов 6503. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
HTML5
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
45
46
47
48
49
50
51
52
53
54
55
<!DOCTYPE html>
<html>
<head>
    <title>Player</title>
    <script type="text/javascript" src="../js/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
    var startplay;
    var audio;
    var rangeplay;
    $(document).ready(function(){
        audio1 = document.getElementById('muz');
        rangeplay = document.getElementById('range');
        rangeplay.value=0;
        rangeplay.min=0;
        rangeplay.max = audio.duration;//тут ошибка
        alert(rangeplay.max);
        function timeplay ()
        {
            rangeplay.value = audio.currentTime;
        }
        $('#start_pauze').click(function playstartvideo(){
            //alert("start");
            if(audio.paused)
            {
                audio.play();
                $(this).attr('value','pause');
                startplay=setInterval(timeplay,1000/66);
            }
            else
            {
                audio.pause();
                $(this).attr('value','start');
                clearInterval(startplay);
            }
        });
        $(rangeplay).onmousedown(function(){
   clearInterval(startplay);
        });
        $(rangeplay).onmouseup(function(){
            audio.currentTime = rangeplay.value;
            playstartvideo();
        });
 
    });
    </script>
<audio id="muz" controls>
    <source src="../muz/Slipknot - Before i Forget.mp3" type="audio/mpeg">
    Тег audio не поддерживается вашим браузером.
</audio>
<input type="range" id="range"/>
<input type="button" id="start_pauze" title="start" value="start">
</body>
</html>
Почему то не получается узнать длину песни, а алерт выводит NoN. Подскажите что не так. Спасибо.

Добавлено через 2 часа 15 минут
ауу
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2013, 03:02
Ответы с готовыми решениями:

Как узнать длину mp3-аудио - JavaScript и HTML
Всем привет! У меня проблема такая - как узнать Длительность и Битрейт аудио-файла? Например: когда я выбираю mp3 файл (через...

Узнать длину аудио файла в миллисекундах
нужно узнать длину аудио файла в миллисекундах как это можно сделать? хотя и в сотых долях секунды подойдет

Узнать длину строки и длину каждого слова
есть код который реверсирует слова в строке. Как узнать длину слова(например 3 слова ) и количество символов ? #include...

16
 Аватар для vovandr
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
21.12.2013, 09:54
Вы объявляете в самом верху переменную var audio1, а потом она у вас почему-то 1 пропадает:
JavaScript
1
2
3
4
5
6
7
 $(document).ready(function(){
        audio1 = document.getElementById('muz');
        rangeplay = document.getElementById('range');
        rangeplay.value=0;
        rangeplay.min=0;
        rangeplay.max = audio1.duration;// может вот так?
        alert(rangeplay.max);
0
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
21.12.2013, 11:28  [ТС]
vovandr, это издержки тестирования разных вариантов, но не это причина проблемы(было исправлено уже давно)
0
 Аватар для vovandr
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
21.12.2013, 12:18
У вас весь скрипт неправильно написан. Получить метаданные о треке можно так:
JavaScript
1
2
3
4
5
6
        var audio = new Audio(); // создаем объект audio
        audio.src="song.mp3"; // указываем путь к треку
        audio.addEventListener('loadedmetadata', function() { // обработчик для получения метаинфы о треке
            alert(audio.duration); // выводим на экран интересующее свйство объекта audio
            audio.play();  // для примера делаем старт трека
        });
1
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
21.12.2013, 23:09
Первая причина - это то, что метаинфа почему-то не успевает считываться после загрузки <audio>...</audio>. Чтобы дать доп. время, я весь скрипт вывел в функцию, и назначил ей setInterval 100 мс. Тогда всё работает, при чём длительность определяется с офигенной точностью до 14 знаков после запятой.
Второй нюанс - формат МП3. У меня почему-то ещё ни разу тег <audio> не работал с этим форматом, он у меня и не воспроизводится. (Опера) А вот формат OGG - пожалуйста. Тогда и играет, и показывает duration.
В общем, вот у меня получился рабочий вариант :
HTML5
1
2
3
4
5
6
7
<!DOCTYPE html>
<html>
<head>
    <title>Player</title>
    <script type="text/javascript" src="../js/jquery.min.js"></script>
</head>
<body>
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
45
<script type="text/javascript">
function myfn(){
    var startplay;
    var audio;
    var rangeplay;
    $(document).ready(function(){
        audio = document.getElementById('muz');
        rangeplay = document.getElementById('range');
        rangeplay.value=0;
        rangeplay.min=0;
        rangeplay.max = audio.duration;//тут ошибка
        //alert(3);
        alert(rangeplay.max);
        function timeplay ()
        {
            rangeplay.value = audio.currentTime;
        }
        $('#start_pauze').click(function playstartvideo(){
            //alert("start");
            if(audio.paused)
            {
                audio.play();
                $(this).attr('value','pause');
                startplay=setInterval(timeplay,1000/66);
            }
            else
            {
                audio.pause();
                $(this).attr('value','start');
                clearInterval(startplay);
            }
        });
        $(rangeplay).onmousedown(function(){
   clearInterval(startplay);
        });
        $(rangeplay).onmouseup(function(){
            audio.currentTime = rangeplay.value;
            playstartvideo();
        });
 
    });
}   
    
setInterval(myfn, 1000);
</script>
HTML5
1
2
3
4
5
6
7
8
<audio id="muz" controls>
<source src="mysong.ogg" type="audio/ogg">
    Тег audio не поддерживается вашим браузером.
</audio>
<input type="range" id="range">
<input type="button" id="start_pauze" title="start" value="start">
</body>
</html>
0
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
21.12.2013, 23:31  [ТС]
Пытаюсь перестроить, что все работало, когда несколько песен на 1стр.
HTML5
1
2
3
4
5
6
7
<!DOCTYPE html>
<html>
<head>
    <title>Player</title>
    <script type="text/javascript" src="../js/jquery.min.js"></script>
</head>
<body>
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<script type="text/javascript">
    var startplay;
    var audio;
    var rangeplay;
    var chip;
    var audioid;
    var bplayid;
    var rangeid;
    $(document).ready(function(){
        rangeplay = document.getElementById('range');
        audio = document.getElementById('muz');
        rangeplay.value=0;
        rangeplay.min=0;
        chip=0;
        function timeplay ()
        {
            rangeplay.value = audio.currentTime;
        }
        /*
        $('.s_p').click(function (){
           audioid = $(this).attr('data-audio');
           rangeid = $(this).attr('data-r');
            alert(audioid);
           audio = document.getElementById(audioid);
            rangeplay = document.getElementById(rangeid);
            rangeplay.max = audio.duration;
            //alert(rangeplay.max);
            if(audio.paused)
            {
                audio.play();
                $(this).attr('value','pause');
                startplay=setInterval(timeplay,1000/66);
                chip=1;
            }
            else
            {
                audio.pause();
                $(this).attr('value','start');
                clearInterval(startplay);
                chip=0;
            }
        });
*/
 
 
    });
    function bplayckick(paramQ){
        audioid = paramQ.data-audio;
        rangeid = paramQ.data-r;
        alert(audioid);
        audio = document.getElementById(audioid);
        rangeplay = document.getElementById(rangeid);
        rangeplay.max = audio.duration;
        //alert(rangeplay.max);
        if(audio.paused)
        {
            audio.play();
            $(this).attr('value','pause');
            startplay=setInterval(timeplay,1000/66);
            chip=1;
        }
        else
        {
            audio.pause();
            $(this).attr('value','start');
            clearInterval(startplay);
            chip=0;
        }
    }
    function mdown(){
        rangeplay.max = audio.duration;
        if(chip==1)
        {
 
 
            clearInterval(startplay);
            if(audio.paused)
            {
                audio.play();
            }
            else
            {
 
                $(this).attr('value','start');
 
            }
        }
 
    }
    function mup(){
        audio.currentTime = rangeplay.value;
        if(chip==0)
        {
            audio.play();
            startplay=setInterval(timeplay,1000/66);
            chip=1;
        }
        else
        {
            clearInterval(startplay);
            startplay=setInterval(timeplay,1000/66);
 
        }
    }
    </script>
HTML5
1
2
3
4
5
6
7
8
9
10
<div>
<audio class="audio" id="muz_1">
    <source src="../muz/Slipknot - Before i Forget.mp3" type="audio/mpeg">
    Тег audio не поддерживается вашим браузером.
</audio>
<input class="rng" type="range" data-audio="muz_1" data-b="start_pauze_1" id="range_1" onMouseDown="mdown()" onMouseUp="mup()" value="0" max="100" min="0">
<input class="s_p" onClick="bplayckick(this)" type="button" data-audio="muz_1" data-r="range_1" id="start_pauze_1" title="start" value="start">
</div>
</body>
</html>
Как тут получить значения data-audio and data-r????
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
22.12.2013, 00:15
Если я правильно понял, кнопок будет столько, сколько песен, и у каждой будет data-audio="muz_1; muz_2; muz_3" и т. д. Тут можно просто передавать эти значения в функцию bplayckick(this, 1), а там соответственно их принимать.
Но дело вот в чём - чтобы менять песни, нужно кнопками менять src у <audio> примерно так :
HTML5
1
2
<input type=button onclick="audio.src='music1.mp3';audio.play()">
<input type=button onclick="audio.src='music2.mp3';audio.play()">
1
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
22.12.2013, 02:46  [ТС]
Цитата Сообщение от Опан Посмотреть сообщение
Но дело вот в чём - чтобы менять песни, нужно кнопками менять src у <audio> примерно так :
не понял

Добавлено через 2 часа 25 минут
HTML5
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<!DOCTYPE html>
<html>
<head>
    <title>Player</title>
    <script type="text/javascript" src="../js/jquery.min.js"></script>
    <style type="text/css">
     .rngVol
     {
         display: none;
     }
        .audioBloks
        {
            border: 1px ridge red;
        }
    </style>
</head>
<body>
<script type="text/javascript">
    function setCookie(name, value, options) {
        options = options || {};
 
        var expires = options.expires;
 
        if (typeof expires == "number" && expires) {
            var d = new Date();
            d.setTime(d.getTime() + expires*1000);
            expires = options.expires = d;
        }
        if (expires && expires.toUTCString) {
            options.expires = expires.toUTCString();
        }
 
        value = encodeURIComponent(value);
 
        var updatedCookie = name + "=" + value;
 
        for(var propName in options) {
            updatedCookie += "; " + propName;
            var propValue = options[propName];
            if (propValue !== true) {
                updatedCookie += "=" + propValue;
            }
        }
 
        document.cookie = updatedCookie;
    }
    function getCookie(name) {
        var matches = document.cookie.match(new RegExp(
                "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
        ));
        return matches ? decodeURIComponent(matches[1]) : undefined;
    }
    function timeplay ()
    {
        rangeplay.value = audio.currentTime;
    }
    var startplay;
    var audio;
    var rangeplay;
    var chip;
    var audioid;
    var bplayid;
    var rangeid;
    var volume;
    $(document).ready(function(){
        chip=0;
    });
    function bplayckick(paramA,paramB,idB,idV){
        audioid = paramA;
        rangeid = paramB;
        volume = document.getElementById(idV);
        audio = document.getElementById(audioid);
        rangeplay = document.getElementById(rangeid);
        rangeplay.max = audio.duration;
        //alert(rangeplay.max);
        if(audio.paused)
        {
            audio.play();
            if(getCookie('volume')!=='undefined')
            {
                audio.volume = getCookie('volume');
                volume.value=getCookie('volume')*100;
            }
 
            $('#'+idB+'').attr('value','pause');
            startplay=setInterval(timeplay,1000/66);
            chip=1;
        }
        else
        {
            audio.pause();
            $('#'+idB+'').attr('value','start');
            clearInterval(startplay);
            chip=0;
        }
    }
    function mdown(paramA,paramB,idB){
        audioid = paramA;
        rangeid = paramB;
        audio = document.getElementById(audioid);
        rangeplay = document.getElementById(rangeid);
        rangeplay.max = audio.duration;
        if(chip==1)
        {
 
            clearInterval(startplay);
            if(audio.paused)
            {
                audio.play();
            }
            else
            {
 
 
 
            }
        }
 
    }
    function mup(idB){
        audio.currentTime = rangeplay.value;
        if(chip==0)
        {
            audio.play();
            $('#'+idB+'').attr('value','pause');
            startplay=setInterval(timeplay,1000/66);
            chip=1;
        }
        else
        {
            clearInterval(startplay);
            startplay=setInterval(timeplay,1000/66);
 
        }
    }
    function FunVolume(paramA,idV){
        volume = document.getElementById(idV);
        audio = document.getElementById(paramA);
        audio.volume = volume.value/100;
        setCookie('volume',audio.volume,['2678400','/','/','false']);
    }
    function overblosks(idV)
    {
        if(getCookie('volume')!=='undefined')
        {
            volume = document.getElementById(idV);
            volume.value=getCookie('volume')*100;
        }
 
        $("#"+idV+"").show();
    }
    function outBloks(idV)
    {
        $("#"+idV+"").hide();
    }
    </script>
<div class="audioBloks" onMouseOver="overblosks('rangeVol_1')" onMouseOut="outBloks('rangeVol_1')">
<audio class="audio" id="muz_1">
    <source src="../muz/Slipknot - Before i Forget.mp3" type="audio/mpeg">
    Тег audio не поддерживается вашим браузером.
</audio>
    <input class="s_p" onClick="bplayckick('muz_1','range_1','start_pauze_1','rangeVol_1')" type="button" id="start_pauze_1" title="start" value="start">
<input class="rng" type="range" id="range_1" onMouseDown="mdown('muz_1','range_1','start_pauze_1')" onMouseUp="mup('start_pauze_1')" value="0" max="100" min="0">
    <input class="rngVol" type="range" id="rangeVol_1" onMouseMove="FunVolume('muz_1','rangeVol_1')" value="80" max="100" min="0">
</div>
<div class="audioBloks" onMouseOver="overblosks('rangeVol_2')" onMouseOut="outBloks('rangeVol_2')">
    <audio class="audio" id="muz_1">
        <source src="../muz/Stromae - Papaoutai.mp3" type="audio/mpeg">
        Тег audio не поддерживается вашим браузером.
    </audio>
    <input class="s_p" onClick="bplayckick('muz_2','range_2','start_pauze_2','rangeVol_2')" type="button" id="start_pauze_2" title="start" value="start">
    <input class="rng" type="range" id="range_2" onMouseDown="mdown('muz_2','range_2','start_pauze_2')" onMouseUp="mup('start_pauze_2')" value="0" max="100" min="0">
    <input class="rngVol" type="range" id="rangeVol_2" onMouseMove="FunVolume('muz_2','rangeVol_2')" value="80" max="100" min="0">
</div>
</body>
</html>
На вторую песню вообще никак не реагирует. Кнопка не меняется песня не играет.

Добавлено через 2 минуты
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
function setCookie(name, value, options) {
        options = options || {};
 
        var expires = options.expires;
 
        if (typeof expires == "number" && expires) {
            var d = new Date();
            d.setTime(d.getTime() + expires*1000);
            expires = options.expires = d;
        }
        if (expires && expires.toUTCString) {
            options.expires = expires.toUTCString();
        }
 
        value = encodeURIComponent(value);
 
        var updatedCookie = name + "=" + value;
 
        for(var propName in options) {
            updatedCookie += "; " + propName;
            var propValue = options[propName];
            if (propValue !== true) {
                updatedCookie += "=" + propValue;
            }
        }
 
        document.cookie = updatedCookie;
    }
    function getCookie(name) {
        var matches = document.cookie.match(new RegExp(
                "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
        ));
        return matches ? decodeURIComponent(matches[1]) : undefined;
    }
    function timeplay ()
    {
        rangeplay.value = audio.currentTime;
    }
    var startplay;
    var audio;
    var rangeplay;
    var chip;
    var audioid;
    var bplayid;
    var rangeid;
    var volume;
    $(document).ready(function(){
        chip=0;
    });
    function bplayckick(paramA,paramB,idB,idV){
        audioid = paramA;
        rangeid = paramB;
        volume = document.getElementById(idV);
        audio = document.getElementById(audioid);
        rangeplay = document.getElementById(rangeid);
        rangeplay.max = audio.duration;
        //alert(rangeplay.max);
        if(audio.paused)
        {
            audio.play();
            if(getCookie('volume')!=='undefined')
            {
                audio.volume = getCookie('volume');
                volume.value=getCookie('volume')*100;
            }
 
            $('#'+idB+'').attr('value','pause');
            startplay=setInterval(timeplay,1000/66);
            chip=1;
        }
        else
        {
            audio.pause();
            $('#'+idB+'').attr('value','start');
            clearInterval(startplay);
            chip=0;
        }
    }
    function mdown(paramA,paramB,idB){
        audioid = paramA;
        rangeid = paramB;
        audio = document.getElementById(audioid);
        rangeplay = document.getElementById(rangeid);
        rangeplay.max = audio.duration;
        if(chip==1)
        {
 
            clearInterval(startplay);
            if(audio.paused)
            {
                audio.play();
            }
            else
            {
 
 
 
            }
        }
 
    }
    function mup(idB){
        audio.currentTime = rangeplay.value;
        if(chip==0)
        {
            audio.play();
            $('#'+idB+'').attr('value','pause');
            startplay=setInterval(timeplay,1000/66);
            chip=1;
        }
        else
        {
            clearInterval(startplay);
            startplay=setInterval(timeplay,1000/66);
 
        }
    }
    function FunVolume(paramA,idV){
        volume = document.getElementById(idV);
        audio = document.getElementById(paramA);
        audio.volume = volume.value/100;
        setCookie('volume',audio.volume,['2678400','/','/','false']);
    }
    function overblosks(idV)
    {
        if(getCookie('volume')!=='undefined')
        {
            volume = document.getElementById(idV);
            volume.value=getCookie('volume')*100;
        }
 
        $("#"+idV+"").show();
    }
    function outBloks(idV)
    {
        $("#"+idV+"").hide();
    }
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
22.12.2013, 11:57
У Вас оба элемента <audio> с одинаковым id="muz_1". Всего лишь в 167 строке HTML-кода изменить id на "muz_2" и всё работает.
Ещё я предлагаю сделать, чтобы после включения воспроизведения надпись на кнопке менялась из "Старт" на "Пауза", а при нажатии паузы - наоборот. Для этого после 58 и 71 сторк JS-кода можно вставить соответственно :
JavaScript
1
2
3
document.getElementById(idB).value="Пауза";
 
document.getElementById(idB).value="Старт";
Добавлено через 12 минут
Ещё такой нюанс - тут обе песни могут играть одновременно. Не плохо было бы организовать исключение одновременности. Я, на пример, предпочетаю реализовывать так, чтобы плеер на странице был только один, а под ним - список песен. Кликнул на интересующей песне, она выделилась другим цветом, название сдублировалось большими буквами над (или под) самим плеером, и останется нажимать контролы.
1
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
22.12.2013, 23:43  [ТС]
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
    <title>Player</title>
    <script type="text/javascript" src="../js/jquery.min.js"></script>
    <style type="text/css">
     .rngVol
     {
         display: none;
     }
        .audioBloks
        {
            border: 1px ridge red;
        }
    </style>
</head>
<body>
<script type="text/javascript">
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
function setCookie(name, value, options) {
        options = options || {};
 
        var expires = options.expires;
 
        if (typeof expires == "number" && expires) {
            var d = new Date();
            d.setTime(d.getTime() + expires*1000);
            expires = options.expires = d;
        }
        if (expires && expires.toUTCString) {
            options.expires = expires.toUTCString();
        }
 
        value = encodeURIComponent(value);
 
        var updatedCookie = name + "=" + value;
 
        for(var propName in options) {
            updatedCookie += "; " + propName;
            var propValue = options[propName];
            if (propValue !== true) {
                updatedCookie += "=" + propValue;
            }
        }
 
        document.cookie = updatedCookie;
    }
    function getCookie(name) {
        var matches = document.cookie.match(new RegExp(
                "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
        ));
        return matches ? decodeURIComponent(matches[1]) : undefined;
    }
    function timeplay ()
    {
        rangeplay.value = audio.currentTime;
    }
    var startplay;
    var audio;
    var rangeplay;
    var chip;
    var audioid;
    var bplayid;
    var rangeid;
    var volume;
    var idButton;
    $(document).ready(function(){
        chip=1;
    });
    function stopPlay(idButt)
    {
        $('#'+idButt+'').attr('value','play');
        audio.pause();
        clearInterval(startplay);
    }
    function bplayckick(paramA,paramB,idB,idV){
        //alert(chip + paramA + " " + audioid);
        if(audioid!==paramA && chip!==1)
        {
            stopPlay(idButton);
        }
        idButton=idB;
        audioid = paramA;
        rangeid = paramB;
        volume = document.getElementById(idV);
        audio = document.getElementById(audioid);
        rangeplay = document.getElementById(rangeid);
        rangeplay.max = audio.duration;
        //alert(rangeplay.max);
        if(audio.paused)
        {
            audio.play();
            if(getCookie('volume')!=='undefined')
            {
                audio.volume = getCookie('volume');
                volume.value=getCookie('volume')*100;
            }
 
            $('#'+idB+'').attr('value','pause');
            startplay=setInterval(timeplay,1000/66);
            chip=2;
        }
        else
        {
            audio.pause();
            $('#'+idB+'').attr('value','play');
            clearInterval(startplay);
            chip=1;
        }
 
    }
    function mdown(paramA,paramB,idB){
        audioid = paramA;
        rangeid = paramB;
        audio = document.getElementById(audioid);
        rangeplay = document.getElementById(rangeid);
        rangeplay.max = audio.duration;
        if(chip==2)
        {
 
            clearInterval(startplay);
            if(audio.paused)
            {
                audio.play();
            }
            else
            {
 
 
 
            }
        }
 
    }
    function mup(idB){
        audio.currentTime = rangeplay.value;
        if(chip==1)
        {
            audio.play();
            $('#'+idB+'').attr('value','pause');
            startplay=setInterval(timeplay,1000/66);
            chip=2;
        }
        else
        {
            clearInterval(startplay);
            startplay=setInterval(timeplay,1000/66);
 
        }
    }
    function FunVolume(paramA,idV){
        volume = document.getElementById(idV);
        audio = document.getElementById(paramA);
        audio.volume = volume.value/100;
        setCookie('volume',audio.volume,['2678400','/','/','false']);
    }
    function overblosks(idV)
    {
        if(getCookie('volume')!=='undefined')
        {
            volume = document.getElementById(idV);
            volume.value=getCookie('volume')*100;
        }
 
        $("#"+idV+"").show();
    }
    function outBloks(idV)
    {
        $("#"+idV+"").hide();
    }
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</script>
<div class="audioBloks" onMouseOver="overblosks('rangeVol_1')" onMouseOut="outBloks('rangeVol_1')">
<audio class="audio" id="muz_1">
    <source src="../muz/Slipknot - Before i Forget.mp3" type="audio/mpeg">
    Тег audio не поддерживается вашим браузером.
</audio>
    <input class="s_p" onClick="bplayckick('muz_1','range_1','start_pauze_1','rangeVol_1')" type="button" id="start_pauze_1" title="start" value="play">
<input class="rng" type="range" id="range_1" onMouseDown="mdown('muz_1','range_1','start_pauze_1')" onMouseUp="mup('start_pauze_1')" value="0" max="100" min="0">
    <input class="rngVol" type="range" id="rangeVol_1" onMouseMove="FunVolume('muz_1','rangeVol_1')" value="80" max="100" min="0">
</div>
<div class="audioBloks" onMouseOver="overblosks('rangeVol_2')" onMouseOut="outBloks('rangeVol_2')">
    <audio class="audio" id="muz_2">
        <source src="../muz/Stromae - Papaoutai.mp3" type="audio/mpeg">
        Тег audio не поддерживается вашим браузером.
    </audio>
    <input class="s_p" onClick="bplayckick('muz_2','range_2','start_pauze_2','rangeVol_2')" type="button" id="start_pauze_2" title="start" value="play">
    <input class="rng" type="range" id="range_2" onMouseDown="mdown('muz_2','range_2','start_pauze_2')" onMouseUp="mup('start_pauze_2')" value="0" max="100" min="0">
    <input class="rngVol" type="range" id="rangeVol_2" onMouseMove="FunVolume('muz_2','rangeVol_2')" value="80" max="100" min="0">
</div>
</body>
</html>
Вот рабочий вариант плеера. На мой взгляд получилось не плохо.

Добавлено через 1 минуту
Работает в Хроме, Мазиле и, как не странно, в Эксплорере 9. В Опере не удается получить значение длительности песни, поэтому не работает.

Добавлено через 2 минуты
Также не проигрывается на АНдройд. Ползунок бежит, но песня не играет. В то же время в сафари(iphone) все работает
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
23.12.2013, 00:06
Теперь получается, что play не включается до тех пор, пока я мышью не оттащу ползунок немного вправо (чтобы он был не в начальном положении). А в опере не работает видимо из-за того, о чём я писал в пятом посте - неувязка со временем считывания метаинфы. Да, я там по ошибке задал setInterval, а нужно setTimeout.
0
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
23.12.2013, 00:25  [ТС]
Цитата Сообщение от Опан Посмотреть сообщение
Теперь получается, что play не включается до тех пор, пока я мышью не оттащу ползунок немного вправо (чтобы он был не в начальном положении)
не понимаю о чем Вы, у меня все работает. http://bitloor.url.ph/modules/audioplayer.html
С ползунками проблема в том, что возможно проигрывание 2 песен одновременно. Попытаюсь ща исправить

Добавлено через 10 минут
готово
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
23.12.2013, 23:55
У меня в Опере не играет. Когда я каждый раз проверял Ваш код на своём компьютере, я подключал файлы формата OGG, у меня МП3 не играет. Других браузеров сейчас у меня нет, чуть позже установлю и проверю.
Ага, когда я навожу курсор мыши на горизонтальные полосы правее существующих контролов range, у меня появляются по одному новому range (ползунку). Убираю курсор - исчезают.
0
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
23.12.2013, 23:57  [ТС]
Цитата Сообщение от Опан Посмотреть сообщение
Ага, когда я навожу курсор мыши на горизонтальные полосы правее существующих контролов range, у меня появляются по одному новому range (ползунку). Убираю курсор - исчезают.
так зачем, чтобы ползунки звука постоянно висели
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
24.12.2013, 23:55
Я не об этом. Зачем они появляются, так задумано ? Я заметил, что в какое положение я заведу один из них, в таком же и оказывается второй. Это общий регулятор громкости по мимо каждого отдельно ?
0
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
24.12.2013, 23:58  [ТС]
Цитата Сообщение от Опан Посмотреть сообщение
Я не об этом. Зачем они появляются, так задумано ? Я заметил, что в какое положение я заведу один из них, в таком же и оказывается второй. Это общий регулятор громкости по мимо каждого отдельно ?
синхронизация через куки

Добавлено через 26 секунд
Что бы когда пользователь вернется громкость ост как в прошлый раз
0
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
27.12.2013, 01:00  [ТС]
Блин, хотелось бы что бы работала а опере и андройде
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.12.2013, 01:00
Помогаю со студенческими работами здесь

Не получается загрузить аудио
Здравствуйте. Пытаюсь включить определённый аудиофайл в зависимости от нажатой кнопки в RadioGroup. Искал инфу об аудио в делфи, почти...

Как узнать продолжительность аудио файла и воспроизвести его например с минуты?
Как узнать продолжительность аудио файла и воспроизвести его например с 1:30 минуты? Используя MediaPlayer

Узнать длину границы
Граница В международной политике важным понятием является граница между государствами. Нечеткое понимание сторонами того, где проходит...

Узнать длину массива
Как программно узнать длину массива в консоли?

Не получается указать длину массива
Можно узнать почему так не могу указать длину массива? на мсдн пишет именно такой способ указания длинны массива с консоли. private...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru