Erstellung des benutzerdefinierten HTML5-Audio-Player
() translation by (you can also view the original English article)



In diesem Tutorial werde ich Ihnen HTML5-Audio vorstellen und Ihnen zeigen, wie Sie Ihren eigenen Player erstellen können.
Wenn Sie eine Verknüpfung erstellen möchten, schauen Sie sich den vorgefertigten HTML5-Audio-Player an, der auf Envato Market verfügbar ist. Sie können Wiedergabelisten aus verschiedenen Quellen erstellen und verfügen über eine Vielzahl von Anpassungsoptionen.



Sie können auch viele HTML5-Experten in Envato Studio finden, die Ihnen helfen.
Einführung
Bisher war die Implementierung von Audio in ein Webprojekt ein langwieriger Prozess, der sich stark auf Plugins von Drittanbietern wie Flash stützte. Da das iPhone das Plugin nicht akzeptiert und die Nachricht, dass Adobe Flash für Handys nicht mehr unterstützt, nicht akzeptiert, suchen viele Entwickler nach anderen Möglichkeiten, Audio in ihre Projekte einzubeziehen. Hier setzt HTML5-Audio an, um das Problem zu lösen.
Obwohl HTML5 einen Standard für die Wiedergabe von Audiodateien im Web bietet, steckt es noch in den Kinderschuhen und hat noch einen langen Weg vor sich, bevor es alles bieten kann, was andere Plugins wie Flash-Audio bieten. In den meisten Fällen ist dies jedoch mehr als ausreichend.
Einfaches HTML5-Audio
Die einfachste Möglichkeit, Audio mithilfe von HTML5 in eine Webseite zu implementieren, ist die Verwendung des neuen Audio-Tags. Fügen Sie dies Ihrem HTML5-Dokument mit dem folgenden Code hinzu:
1 |
<audio controls="controls"> |
2 |
<source src="track.ogg" type="audio/ogg" /> |
3 |
<source src="track.mp3" type="audio/mpeg" /> |
4 |
Your browser does not support the audio element. |
5 |
</audio>
|
Wenn Sie sich den obigen Code ansehen, können Sie sehen, dass ich das <audio>
-Tag deklariert und das Steuerelementattribut definiert habe, sodass die Standardsteuerelemente für den Player angezeigt werden.
Im <audio>
verschachtelt haben wir 2 'src'-Tags. Einer hat einen MP3-Track und der andere das OGG-Format. Das OGG-Format wird insbesondere verwendet, um die Musikwiedergabe in Firefox zu ermöglichen, da Firefox aufgrund von Lizenzproblemen MP3 ohne Verwendung eines Plugins nicht unterstützt. Eine Textzeichenfolge Ihr Browser unterstützt das Audioelement nicht. Lassen Sie die Benutzer mit nicht unterstützten Browsern wissen, was los ist.



Der Standard-HTML5-Audio-Player
HTML5-Audio-Tag-Attribute
Das Tag unterstützt nicht nur globale HTML5-Attribute, sondern auch eine Reihe von Attributen, die für sich selbst eindeutig sind.
- autoplay - Dies kann auf "true" gesetzt oder leer gelassen werden, um festzulegen, ob der Titel automatisch abgespielt werden soll, sobald die Seite geladen wird.
- controls - Wie im obigen Beispiel gezeigt, wird hiermit festgelegt, ob die nativen Steuerelemente wie "Wiedergabe, Pause" usw. angezeigt werden sollen.
- loop - Dies kann auf "loop" gesetzt werden und legt fest, ob der Titel nach Beendigung erneut abgespielt werden soll.
- preload - Dies kann auf "auto" (das beschreibt, ob die Datei geladen werden soll, sobald die Seite geladen wird), "metadata" (das beschreibt, ob nur die Metadaten, der Titel des Titels usw. geladen werden sollen), "none" ( Dies schreibt vor, dass der Browser die Datei beim Laden der Seite nicht laden soll.
- src - Dies ist auch im obigen Beispiel zu sehen und definiert die URL der Musik, die vom Audio-Tag abgespielt werden soll.
Drehen Sie es auf elf
In den letzten Schritten haben wir uns die einfachste Form von HTML5-Audio angesehen. Wenn wir anfangen, das Audio-Tag mit Javascript zu verwenden, können wir einige wirklich interessante und nützliche Audio-Player erstellen. Werfen wir einen Blick darauf, was jQuery für uns tun kann. Nachdem wir in jQuery das document ready definiert haben, können wir eine neue Audiovariable erstellen, um unsere Audiodatei so einfach zu halten:
1 |
var myaudio = new Audio('mysong.mp3'); |
Das ist wirklich so einfach! Wenn wir dann eine Aktion für das Audio ausführen möchten, können wir sie mithilfe der Variablen 'myaudio' auslösen. Hier ist eine Liste von Aktionen, die wir mit der Variablen ausführen können. Notieren Sie sich diese, wir werden einige davon später im Tut verwenden, wenn wir unseren Audio-Player erstellen.
1 |
myaudio.play(); - This will play the music. |
2 |
myaudio.pause(); - This will stop the music. |
3 |
myaudio.duration; - Returns the length of the music track. |
4 |
myaudio.currentTime = 0; - This will rewind the audio to the beginning. |
5 |
myaudio.loop = true; - This will make the audio track loop. |
6 |
myaudio.muted = true; - This will mute the track |
Wenn Sie möchten, dass eine Funktion aufgerufen wird, sobald die Audiowiedergabe beendet ist, können Sie 'myaudio.addEventListener('ended',myfunc)' verwenden. Dies ruft 'myfunc()' auf, sobald die Audiowiedergabe beendet ist.
Die Erstellung des HTML5 Audio Players: Markup
Nachdem Sie ein wenig Hintergrundwissen zu HTML5-Audio hatten und die Grundprinzipien verstanden, ist es an der Zeit, diese in die Praxis umzusetzen und einen benutzerdefinierten HTML5-Audio-Player zu erstellen. Ich werde die Entwurfsphase verpassen, da sie außerhalb des Rahmens dieses Tutorials liegt. Sie können jedoch den zugehörigen Quellcode herunterladen und die PSD durchsuchen, um eine Vorstellung davon zu erhalten, wie sie zusammengesetzt ist.
Der obere Teil des Dokuments besteht aus dem HTML5-Doctype. Yahoos CSS Reset, die Google-Webschrift 'Lobster' für den Titel. Dann haben wir die neueste jQuery und die benutzerdefinierte JavaScript-Datei js.js. Schließlich haben wir html5slider.js, mit dem Firefox den HTML5-Eingabebereichstyp anzeigen kann, den wir für den Audio-Scrubber verwenden werden.
1 |
<!DOCTYPE html>
|
2 |
<head>
|
3 |
<title>HTML5 Audio Tutorial</title> |
4 |
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.3.0/build/cssreset/reset-min.css"> |
5 |
<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'> |
6 |
<link rel="stylesheet" type="text/css" href="css/style.css"> |
7 |
<script src="http://code.jQuery.com/jQuery-latest.js" type="text/javascript"></script> |
8 |
<script type="text/javascript" src="js/js.js"></script> |
9 |
<script type="text/javascript" src="js/html5slider.js"></script> |
10 |
</head>
|
Nach dem h1-Titel habe ich ein div mit einer Klasse von "container" und "gradient" erstellt. Ich habe eine separate Gradientenklasse erstellt, da diese für einige andere Elemente wiederverwendet wird. Innerhalb von ".container" habe ich ein Bild hinzugefügt (das wird das Albumcover sein), dann dienen die drei Ankertags als Steuerelemente für den Player. Dazwischen befindet sich das Eingabefeld für den Scrubber/HTML5-Bereich.
1 |
<body>
|
2 |
|
3 |
<h1>HTML 5 Audio Player</h1> |
4 |
|
5 |
<div class="container gradient"> |
6 |
|
7 |
<img class="cover" src="images/cover.jpg" alt=""> |
8 |
|
9 |
<div class="player gradient"> |
10 |
|
11 |
<a class="button gradient" id="play" href="" title=""></a> |
12 |
<a class="button gradient" id="mute" href="" title=""></a> |
13 |
|
14 |
<input type="range" id="seek" value="0" max=""/> |
15 |
|
16 |
<a class="button gradient" id="close" href="" title=""></a> |
17 |
|
18 |
</div><!-- / player --> |
19 |
|
20 |
</div><!-- / Container--> |
21 |
</body>
|
22 |
</html>
|
Die Erstellung des HTML5 Audio Players: Stile
Anstatt jeden Aspekt des CSS durchzugehen, werde ich Ihnen einen Überblick geben und bestimmte Teile notieren, auf die Sie möglicherweise achten möchten.
Im folgenden Code habe ich den Verlauf für den Player erstellt, der mit diesem CSS-Verlaufseditor generiert wurde. Ich habe dann den Player ".container" mit einigen CSS3-Übergängen erstellt.
Sie werden feststellen, dass ich auch das CSS3-Box-Größenattribut "border-box" verwendet habe. Auf diese Weise kann die 10-Pixel-Polsterung um den Container in der von mir angegebenen Breite enthalten sein, in diesem Fall 427 Pixel. Wenn ich dies nicht verwendet hätte, würde die Polsterung dem 427px hinzugefügt, wodurch der Container größer wird, als ich es eigentlich möchte. Heutzutage ist es gängige Praxis, * {box-sizing: border-box;}
anzuwenden, was eine intuitivere Art des Stylings ermöglicht.
Ich habe auch einige CSS3-Übergänge zu ".coverlarge" hinzugefügt, um einige schöne Übergänge beim ersten Öffnen des Players zu ermöglichen. Das CSS mag auf den ersten Blick etwas überwältigend aussehen, aber viele davon sind spezifische Browserpräfixe, um sicherzustellen, dass der Audio-Player in verschiedenen Browsern gleich aussieht und funktioniert.
1 |
.gradient { |
2 |
border: 1px solid black; |
3 |
|
4 |
-webkit-box-shadow: inset 0 1px 0px rgba(255,255,255,.2); |
5 |
-moz-box-shadow: inset 0 1px 0px rgba(255,255,255,.2); |
6 |
box-shadow: inset 0 1px 0px rgba(255,255,255,.2); |
7 |
background: #494949; /* Old browsers */ |
8 |
background: -webkit-linear-gradient(top, #494949 0%, #434242 31%, #393838 55%, #242323 83%, #1b1a1a 100%, #161515 100%, #0b0b0b 100%); |
9 |
|
10 |
background: -moz-linear-gradient(top, #494949 0%, #434242 31%, #393838 55%, #242323 83%, #1b1a1a 100%, #161515 100%, #0b0b0b 100%); |
11 |
background: -o-linear-gradient(top, #494949 0%, #434242 31%, #393838 55%, #242323 83%, #1b1a1a 100%, #161515 100%, #0b0b0b 100%); |
12 |
background: -ms-linear-gradient(top, #494949 0%, #434242 31%, #393838 55%, #242323 83%, #1b1a1a 100%, #161515 100%, #0b0b0b 100%); |
13 |
background: linear-gradient(top, #494949 0%, #434242 31%, #393838 55%, #242323 83%, #1b1a1a 100%, #161515 100%, #0b0b0b 100%); /* W3C */ |
14 |
-image filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#494949', endColorstr='#0b0b0b',GradientType=0 ); /* IE6-9 */ |
15 |
}
|
16 |
|
17 |
.container { |
18 |
-webkit-transition: all .7s ease; |
19 |
-moz-transition: all .7s ease; |
20 |
-o-transition: all .7s ease; |
21 |
-ms-transition: all .7s ease; |
22 |
transition: all .7s ease; |
23 |
position: absolute; |
24 |
width: 427px; |
25 |
height: 70px; |
26 |
|
27 |
-webkit-border-radius: 10px; |
28 |
-moz-border-radius: 10px; |
29 |
border-radius: 10px; |
30 |
|
31 |
-webkit-box-shadow: 0px 0px 13px rgba(0,0,0,.3),inset 0 1px 0px rgba(255,255,255,.2); |
32 |
-moz-box-shadow: 0px 0px 13px rgba(0,0,0,.3),inset 0 1px 0px rgba(255,255,255,.2); |
33 |
box-shadow: 0px 0px 13px rgba(0,0,0,.3),inset 0 1px 0px rgba(255,255,255,.2); |
34 |
top: 50%; |
35 |
left: 50%; |
36 |
margin: -214px 0px 0px -214px; |
37 |
padding: 10px; |
38 |
|
39 |
-webkit-box-sizing: border-box; |
40 |
-moz-box-sizing: border-box; |
41 |
-ms-box-sizing: border-box; |
42 |
box-sizing: border-box; |
43 |
}
|
44 |
|
45 |
|
46 |
.containerLarge { |
47 |
height: 427px; |
48 |
}
|
49 |
|
50 |
.cover { |
51 |
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; |
52 |
filter: alpha(opacity=0); |
53 |
opacity: 0; |
54 |
width: 398px; |
55 |
height: 10px; |
56 |
border: 2px solid black; |
57 |
|
58 |
-webkit-border-radius: 5px; |
59 |
-moz-border-radius: 5px; |
60 |
border-radius: 5px; |
61 |
|
62 |
-webkit-box-shadow: inset 0px 5px 5px rgba(0,0,0,1); |
63 |
-moz-box-shadow: inset 0px 5px 5px rgba(0,0,0,1); |
64 |
box-shadow: inset 0px 5px 5px rgba(0,0,0,1); |
65 |
}
|
66 |
|
67 |
.coverLarge { |
68 |
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; |
69 |
filter: alpha(opacity=100); |
70 |
opacity: 1; |
71 |
height: 398px; |
72 |
|
73 |
-webkit-transition: opacity .7s ease; |
74 |
-moz-transition: opacity .7s ease; |
75 |
-o-transition: opacity .7s ease; |
76 |
-ms-transition: opacity .7s ease; |
77 |
transition: opacity .7s ease; |
78 |
|
79 |
-webkit-transition-delay: .5s; |
80 |
-moz-transition-delay: .5s; |
81 |
-o-transition-delay: .5s; |
82 |
-ms-transition-delay: .5s; |
83 |
transition-delay: .5s; |
84 |
}
|



Wie der Audio-Player in dieser Phase aussehen soll
Sobald der Container für den Player fertig ist, ist es Zeit, die eigentlichen Steuerelemente zu erstellen. Die meisten Schaltflächen wurden mit CSS-Sprites erstellt
Leider unterstützt der IE die HTML5-Bereichseingabe noch nicht, daher habe ich beschlossen, den Audio-Scrubber den IE-Benutzern nicht anzuzeigen. Wenn Sie sich in einer Position befinden, in der dies nicht akzeptabel ist, können Sie den Schieberegler für die jQuery UI slider auf ähnliche Weise wie die von mir verwendete Methode verwenden. Trotzdem habe ich mich dafür entschieden, den Scrubber einfach auszublenden, daher Eingabe input{display:none\9!important;
} Dies verbirgt im Grunde die Eingabe von dh Benutzern (lesen Sie diesen Thread auf Stack Overflow für weitere Informationen zu \9
).
Das Problem mit dem HTML5-Bereichsregler besteht darin, dass nur wenige Browser ein benutzerdefiniertes Styling unterstützen. hauptsächlich Webkit-Browser (Chrome und Safari). Opera und Firefox zeigen leider nur einen Standardbereichsregler an. Wenn Sie ein benutzerdefiniertes Styling für alle Browser benötigen, können Sie den Schieberegler für die jQuery UI slider verwenden, wie bereits erwähnt. Sie können das benutzerdefinierte Design für Webkit-Browser im Attribut input::-webkit-slider-thumb
sehen.
1 |
.player { |
2 |
-webkit-box-sizing: border-box; |
3 |
-moz-box-sizing: border-box; |
4 |
-ms-box-sizing: border-box; |
5 |
box-sizing: border-box; |
6 |
position: absolute; |
7 |
width: 300px; |
8 |
bottom: 10px; |
9 |
width: 95%; |
10 |
|
11 |
-webkit-border-radius: 3px; |
12 |
-moz-border-radius: 3px; |
13 |
border-radius: 3px; |
14 |
padding: 5px; |
15 |
}
|
16 |
|
17 |
.button { |
18 |
display: block; |
19 |
width: 34px; |
20 |
height: 34px; |
21 |
background-image: url(../images/sprite.png); |
22 |
background-repeat: no-repeat; |
23 |
float: left; |
24 |
margin-right: 5px; |
25 |
}
|
26 |
|
27 |
#play { |
28 |
background-position: 6px 5px; |
29 |
}
|
30 |
|
31 |
#pause { |
32 |
background-position: -32px 5px; |
33 |
}
|
34 |
|
35 |
#mute { |
36 |
background-position: -63px 5px; |
37 |
}
|
38 |
|
39 |
#muted { |
40 |
background-position: -106px 5px; |
41 |
}
|
42 |
|
43 |
input[type="range"] { |
44 |
width: 250px; |
45 |
margin-top: -5px; |
46 |
}
|
47 |
|
48 |
#close { |
49 |
float: right; |
50 |
background-position: -146px 5px; |
51 |
display: none; |
52 |
}
|
53 |
|
54 |
.volume { |
55 |
position: absolute; |
56 |
height: 100px; |
57 |
width: 34px; |
58 |
border: 1px solid black; |
59 |
background-color: #242323; |
60 |
top: -97px; |
61 |
display: none; |
62 |
}
|
63 |
input{ |
64 |
display:none\9!important; |
65 |
}
|
66 |
input[type="range"] { |
67 |
-webkit-appearance: none; |
68 |
border: 1px solid black; |
69 |
position: absolute; |
70 |
top: 18px; |
71 |
display: block; |
72 |
width: 63%; |
73 |
height: 15px; |
74 |
|
75 |
-webkit-border-radius: 20px; |
76 |
-moz-border-radius: 20px; |
77 |
border-radius: 20px; |
78 |
background-color: #242323; |
79 |
left: 90px; |
80 |
|
81 |
-webkit-box-shadow: inset 0px 4px 4px rgba(0,0,0,.6); |
82 |
-moz-box-shadow: inset 0px 4px 4px rgba(0,0,0,.6); |
83 |
box-shadow: inset 0px 4px 4px rgba(0,0,0,.6); |
84 |
}
|
85 |
|
86 |
input::-webkit-slider-thumb { |
87 |
-webkit-appearance: none; |
88 |
width: 20px; |
89 |
height: 20px; |
90 |
border:1px solid black; |
91 |
|
92 |
-webkit-border-radius: 10px; |
93 |
border-radius: 10px; |
94 |
background: #80e4df; /* Old browsers */ |
95 |
background: -webkit-linear-gradient(top, #80e4df 0%, #75dbd6 13%, #5ec4bf 33%, #57bbb6 47%, #419d99 80%, #378f8b 100%); |
96 |
|
97 |
background: -moz-linear-gradient(top, #80e4df 0%, #75dbd6 13%, #5ec4bf 33%, #57bbb6 47%, #419d99 80%, #378f8b 100%); |
98 |
background: -o-linear-gradient(top, #80e4df 0%, #75dbd6 13%, #5ec4bf 33%, #57bbb6 47%, #419d99 80%, #378f8b 100%); |
99 |
background: linear-gradient(top, #80e4df 0%, #75dbd6 13%, #5ec4bf 33%, #57bbb6 47%, #419d99 80%, #378f8b 100%); /* W3C */ |
100 |
}
|
Die Erstellung des HTML5 Audio Players: jQuery
Sobald das Styling und Markup gemacht ist, ist es Zeit, den Player zum Leben zu erwecken. Wir können das mit dem Javascript-Framework jQuery schaffen. Sobald das jQuery-document ready
deklariert wurde, erstellen wir einige Variablen, in denen wir unsere jQuery-Objekte speichern können.
1 |
container = $('.container'); |
2 |
cover = $('.cover'); |
3 |
play = $('#play'); |
4 |
pause = $('#pause'); |
5 |
mute = $('#mute'); |
6 |
muted = $('#muted'); |
7 |
close = $('#close'); |
8 |
song = new Audio('music/track1.ogg','music/track1.mp3'); |
9 |
duration = song.duration; |
In der Variablen "song" oben können Sie sehen, dass wir zwei Tracks deklariert haben. Das OGG-Format für Firefox und MP3 für andere Browser. Ich erstelle dann eine bedingte IF
-Anweisung, damit wir prüfen können, ob der Browser MP3s abspielen kann oder nicht. Wenn dies möglich ist, wird die Variable "Song" zum MP3-Titel. Wenn nicht, wird das Format "OGG" abgespielt.
1 |
if (song.canPlayType('audio/mpeg;')) { |
2 |
song.type= 'audio/mpeg'; |
3 |
song.src= 'music/track1.mp3'; |
4 |
} else { |
5 |
song.type= 'audio/ogg'; |
6 |
song.src= 'music/track1.ogg'; |
7 |
} |
Die nächsten Dinge sind Klickfunktionen, mit denen wir die Musik abspielen und anhalten können. Ich verwende die Audio-Aktion play()
, um das Audio zu starten, und verwende dann die jQuery-Methode replaceWith
, die im Grunde die Wiedergabetaste durch die Pause-Taste ersetzt.
Ich habe auch die Klassen "coverLarge" und "containerLarge" zu "container" und "cover" hinzugefügt. Da ich diesen bereits im CSS CSS3-Übergänge hinzugefügt habe, wird dies einen schönen Übergang hinzufügen, wenn die Audiowiedergabe beginnt. Die "pause"-Funktion funktioniert auf ähnliche Weise, jedoch ohne die Übergänge. Wenn Sie darauf klicken, wird die Pause-Schaltfläche durch die Schaltfläche "Wiedergabe" ersetzt.
1 |
play.live('click', function(e) { |
2 |
e.preventDefault(); |
3 |
song.play(); |
4 |
|
5 |
$(this).replaceWith('<a class="button gradient" id="pause" href="" title=""></a>'); |
6 |
container.addClass('containerLarge'); |
7 |
cover.addClass('coverLarge'); |
8 |
$('#close').fadeIn(300); |
9 |
$('#seek').attr('max',song.duration); |
10 |
}); |
11 |
|
12 |
pause.live('click', function(e) { |
13 |
e.preventDefault(); |
14 |
song.pause(); |
15 |
$(this).replaceWith('<a class="button gradient" id="play" href="" title=""></a>'); |
16 |
|
17 |
}); |
Die Stumm- und Stummschalttasten funktionieren ähnlich, wie die Wiedergabe- und Pause-Tasten, rufen Sie die zugehörigen Aktionen auf und ersetzen Sie die Tasten durch die entsprechenden Alternativen.
1 |
mute.live('click', function(e) { |
2 |
e.preventDefault(); |
3 |
song.volume = 0; |
4 |
$(this).replaceWith('<a class="button gradient" id="muted" href="" title=""></a>'); |
5 |
|
6 |
}); |
7 |
|
8 |
muted.live('click', function(e) { |
9 |
e.preventDefault(); |
10 |
song.volume = 1; |
11 |
$(this).replaceWith('<a class="button gradient" id="mute" href="" title=""></a>'); |
12 |
|
13 |
}); |
Wenn der Benutzer auf die Schaltfläche "Schließen" klickt, rufen wir jQuery auf, um die Klassen "containerLarge" und "coverLarge" zu entfernen. Dadurch wird die Abdeckung ausgeblendet und der Player wieder geschlossen. Anschließend halten wir den Player an, indem wir die Aktion pause()
aufrufen und die Audio-CurrentTime auf 0 zurücksetzen. Dadurch wird der Track auf den Anfang zurückgesetzt.
1 |
$('#close').click(function(e) { |
2 |
e.preventDefault(); |
3 |
container.removeClass('containerLarge'); |
4 |
cover.removeClass('coverLarge'); |
5 |
song.pause(); |
6 |
song.currentTime = 0; |
7 |
$('#pause').replaceWith('<a class="button gradient" id="play" href="" title=""></a>'); |
8 |
$('#close').fadeOut(300); |
9 |
}); |
Es ist jetzt Zeit, sich dem Audio-Scrubber zuzuwenden, dem die ID "Suchen" zugewiesen wurde. Die erste Funktion besteht darin, den Scrubber auf einen beliebigen Teil des Audios zu verschieben. Dies erfolgt durch Erkennen einer Änderung, wenn jemand den Scrubber bewegt. Wir setzen dann die Datei song.currentTime so, dass sie mit dem Teil des Songs übereinstimmt, zu dem der Scrubber verschoben wurde. Wir setzen auch das max-Attribut, um die Songdauer widerzuspiegeln.
1 |
$("#seek").bind("change", function() { |
2 |
song.currentTime = $(this).val(); |
3 |
$("#seek").attr("max", song.duration); |
4 |
}); |
Der letzte Teil der jQuery besteht darin, den "#seek -Wäscher zusammen mit der Dauer des Audios zu bewegen. Dazu fügen wir einen Ereignis-Listener hinzu, und wenn die Audiozeit aktualisiert wird, rufen wir die Funktion auf. Ich habe eine Variable von "curtime" gesetzt, um die aktuelle Songtime zu erhalten. Ich aktualisiere dann den Wert des Scrubbers, um die aktuelle Zeitposition des Audios wiederzugeben.
1 |
song.addEventListener('timeupdate',function (){ |
2 |
curtime = parseInt(song.currentTime, 10); |
3 |
$("#seek").attr("value", curtime); |
4 |
}); |
Und da sind wir fertig! Ein HTML5-Audio-Player, den Sie auf Ihrer Website oder App implementieren können.
Abschluss
Wie bereits erwähnt, steckt HTML5-Audio noch in den Kinderschuhen und bietet noch Verbesserungspotenzial. Im Moment ist das Audio für die Musikwiedergabe ausgelegt und wird daher immer Audio vom Server streamen, was dazu führt, dass einige Browser Probleme mit der Wiedergabe haben. Dies ist nicht immer ein Problem, sondern bedeutet nur, dass es manchmal anfängt zu zahlen, bevor das Audio vollständig heruntergeladen wurde.
Dies kann möglicherweise ein Problem sein, wenn Sie HTML5-Audio für Soundeffekte in Spielen oder audio-intensive Apps verwenden möchten. Aus diesem Grund haben unsere Freunde bei Google eine Methode entwickelt, um die Schwächen des Audio-Tags zu beheben. Google hat einen Vorschlag für die "Web Audio API" erstellt und dem W3C vorgelegt. Dies erweist sich als viel leistungsfähiger als natives HTML5-Audio. Das Problem ist jedoch, dass es derzeit nur in Chrome funktioniert (können Sie sich vorstellen?!).
Sie können mehr über die Web-Audio-API von Google lesen und einige Beispiele im Google-Code sehen oder die Web-Audio-Spezifikation lesen.
Ich hoffe, es hat Ihnen Spaß gemacht, etwas über HTML5-Audio zu lernen und wie Sie Ihre eigenen Player erstellen können. Mein Player enthält grundlegende Steuerelemente, aber nichts hindert Sie daran, weitere Funktionen wie die Lautstärkeregelung und sogar Ihre eigenen benutzerdefinierten Animationen hinzuzufügen. Mit ein wenig Nachdenken und Experimentieren können Sie wirklich einige großartige Audio-Player erstellen. Laden Sie den Quellcode herunter und ich freue mich darauf zu sehen, was Sie sich einfallen lassen!
Wenn Sie weitere Optionen für die Arbeit mit Audioplayern und anderen Medien in HTML5 bekommen möchten, lesen Sie die HTML5-Medienelemente auf Envato Market.