Hoi rubens34,
Volgens mij kan de hanna/handleidinghtml-methode inderdaad niet werken, want deze maakt gebruik van een
extern .wav bestand.
Dat valt niet zomaar om te zetten in een brok interne base64-code.
Er zijn twee eigenlijk onmogelijk te nemen hobbels:
- Een .wav-bestand als afspeelbare base64-code opnemen in een normale html-pagina.
- Zo'n speciale html-pagina gebruiken als voer voor een html-code in een e-mail.
Ad 2: html in e-mail ...
Om met de laatste te beginnen:
- Zoals Naarling al zei, is de ondersteuning van html in losse e-mail programma's als Outlook en Thunderbird gebrekkig. E-mail programma's zijn geen browsers! Voor zover ik weet zijn er ook geen standaarden voor wat een e-mail programma wel of niet met html moet kunnen doen; er zijn in elk geval verschillen. De ondersteuning van "specialiteiten" als ingebedde elementen of audio's vormt daarbij een extra handicap.
- Mogelijk hangt de al of niet audio-ondersteuning in mails ook af van het Operating System.
- Gebruikers van e-mail programma's kunnen in hun instellingen een html-weergave (met alles wat daar aan vast zit) uitzetten, zodat er alleen een pure tekst-weergave komt. Een aantal mensen doen dat bv. om veiligheidsredenen: dan kan er via de mail er ook geen ongewenste troep in werking gezet worden. Maar ook geen audio!
- Audio-bestanden en zeker wav's zijn erg groot. Als het audio-bestand opgenomen zou kunnen worden in de html van het mail-bericht, wordt het mailtje dus ook erg groot! Mogelijke gevolgen: erg lange downloadtijd voor het mailtje (wellicht vastlopen van het mailprogramma), waarschijnlijk erg lang wachten als het mailtje geopend wordt (of alsnog crashen), en verstopping van de INbox.
- Als de mail-bekijker niet toevallig zijn speaker-boxjes aan heeft staan (ik heb ze bv. standaard altijd uit staan) ... valt er weinig van de ge-embedde wav te horen.

Conclusie Ad 2: geen enkele garantie dat het werkt.
Eigenlijk hoeft punt 1 dan al niet meer aan de orde te komen!
Tussendoor: de werking van base64
@hanna e.a.:
In principe kan je externe bestanden opnemen ("inkapselen") in een html-pagina zelf, door de gegevens van het externe bestand als "data" voor de vindplaats in de html-code op te nemen. Op zo'n manier kan je bijvoorbeeld een afbeelding inbouwen, die dan niet als afzonderlijk img-bestand hoeft te worden opgevraagd en gedownload.
Nu bestaat de broncode van de externe afbeelding uit
binaire data, die geen html-code zijn. Om de inhoud op te nemen in de html van de pagina, moet deze eerst geconverteerd worden tot
base64-code. De browser zet het dan weer om in een plaatje.
- Voorbeeld: base64-image.htm
- Het "image" is hier geen meegezonden gif, png of jpg. De oorspronkelijke gif is omgezet in base64-code, en staat direct in de html (zie broncode).
Ad 1. Een audio-bestand als base64 invoegen in html ...
Een base64-afbeelding kan kan bij binnenkomst van de pagina meteen gerenderd worden om op scherm te verschijnen.
Bij een audio-bestand ligt dit echter heel anders. Op het moment dat een base64-audiobestand ergens in de html is gedownload, kan dat niet meteen afgespeeld worden. Eerst moet de rest van de html-code binnen zijn. Dat schept een probleem: de audio-gegevens moeten ergens gebufferd worden. Bij een extern audio-bestand is het geen probleem, dat wordt apart gedownload en is in de map "Tijdelijke Internet bestanden" altijd beschikbaar als de browser of de player het nodig heeft (ook: om er porties van te kunnen gebruiken).
Voor het bufferen van een base64-audiobestand moet dus een list uitgevonden worden!
En dat gaat niet (zo maar) ...
Vandaar dat een Google naar
google.nl/search?q=demo+base64+embedded+audio heel erg weinig resultaten geeft!
=======
Als een min of meer werkend verhaal kwam ik deze tegen:
In het hulpbestand zit de truc om de audio te decoderen en te lokaal bufferen.
Maar ...
- ... Alleen in Chrome hoor ik geluid op mijn desktop, niet in Firefox, Opera, Safari en IE7 (IE8 en IE9 niet getest).
- ... De base64 en het hulpbestand zijn aparte javascripts > die zouden nog in de html-code zelf gestopt moeten worden.
- ... Het is html5, wat niet door IE8 heen zal komen (misschien met modernizer erbij, maar dat is weer extra javascript; als het al op audio werkt).
=======
Uit Stackoverflow (
stackoverflow.com/questions/2270151/is-it-possible-to-use-data-uris-in-video-and-audio-tags) haalde ik deze html5-oplossing:
Maar ...
=======
Conclusie Ad 1:
Ik heb niet alle Google-resultaten gelezen / getest, maar het lijkt me meer dan aannemelijk (= vrijwel zeker) dat er momenteel geen waterdichte crossbrowser methode is.
=======
Superconclusie
Als ik de conclusies 1 en 2 bij elkaar neem, zit er niets anders op: helaas-pindakaas, het gaat niet!
Maar een beetje
nightly experimenteren is altijd leuk!
Met vriendelijke groet,
CSShunter