[php] een wav of mp3 genereren en deze streamen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • js303
  • Registratie: April 2003
  • Laatst online: 01-06 10:17
hoi luitjes, ik ben bezig met een dingetje om geluiden te genereren via een web interface . een php script ontvangt parameters van een form pagina die vervolgens een synthesizer loopje genereert en deze op de server wegschrijft. dit heb ik inmiddels werkende, hij schrijft nu weg als aiff of wav, 16bits mono.

maar nu wil ik eigenlijk dit 'realtime' streamen naar de client toe. nu lijkt me het handig als je naar een gecomprimeerd formaat converteert of wegschrijft, zodat download tijd korter wordt.

nu ben ik zelf niet zo advanced dat ik ff een mp3 functie schrijf. bestaan er voor php modules om bijv. een file / object / string naar mp3 weg te schrijven, of hoe zou het anders kunnen?? als ik dan een mp3 kan genereren zou ik die vervolgens weer met bijv. ming naar een flash movie kunnen sturen die de boel kan streamen... of doe ik nu wel heel erg moeilijk??

-- jeroen

Acties:
  • 0 Henk 'm!

  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 08:27

Hermanvh

webOS fan, hacker, developer

Je zou bijv. elke seconde bijv. Lame alle wav's kunnen laten converteren, d.m.v. een batch en dan na 2 seconden ofzo deze .mp3 naar de user sturen. Dan moet je server wel een lekkere cpu hebben om snel te kunnen encoden naar mp3 (ligt ook aan de lengte van de bestanden).

[ Voor 7% gewijzigd door Hermanvh op 03-05-2003 21:19 ]

webOS all the way!


Acties:
  • 0 Henk 'm!

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 18:00

johnwoo

3S-GTE

Hermanvh schreef op 03 mei 2003 @ 21:12:
Je zou bijv. elke seconde bijv. Lame alle wav's kunnen laten converteren, d.m.v. een batch en dan na 2 seconden ofzo deze .mp3 naar de user sturen. Dan moet je server wel een lekkere cpu hebben om snel te kunnen encoden naar mp3 (ligt ook aan de lengte van de bestanden).
Of je laat dat gewoon op request basis gebeuren: zodra iemand een clipje wil downloaden laat je em omzetten en stuurt een berichtje terug naar de client dat het clipje geconverteerd wordt en dat ie em over 2 minuten op kan halen. Als de .mp3 al aanwezig is kan je dit natuurlijk overslaan. Als het om hele korte geluidjes gaat kan je dit ook on-the-fly doen en direct het resultaat (de .mp3) terugsturen.
Het doorgeven van een bestaande mp3 met PHP is dan niet moeilijk meer; maak gewoon een redirect naar de .mp3, of als je die niet onder je webroot hebt staan, laat em door PHP doorgeven (met fpassthru ofzo).

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Acties:
  • 0 Henk 'm!

  • js303
  • Registratie: April 2003
  • Laatst online: 01-06 10:17
tja ik weet alleen niet hoe ik een mp3 kan genereren / converteren. zijn er modules / libs voor php of moet ik dan een c++ lib of class ergens vandaan halen en deze compileren oid?? het liefst zou ik direct vanuit php willen wegschrijven naar een mp3.

Acties:
  • 0 Henk 'm!

  • hammerhead
  • Registratie: April 2000
  • Laatst online: 01-09 08:00
Ik vermoed dat het niet zo maar zal kunnen met PHP zelf. Je zult waarschijnlijk altijd een ander extern programma moeten aanroepen wat de WAV bestanden die je al hebt omzet naar MP3 en dat dan doorstuurt...(Zo'n programma wat dat kan doen is bijvoorbeeld lame)

[ Voor 12% gewijzigd door hammerhead op 05-05-2003 01:26 ]

Aviation is proof that given the will, we have the capacity to achieve the impossible.
--Eddie Rickenbacker


Acties:
  • 0 Henk 'm!

Verwijderd

Het makkelijkste is om gewoon een extern programma aan te roepen, wat alles voor je doet.

Dat wil niet zeggen dat het niet mogelijk is met php.
Zie bijvoorbeeld: pack.

Acties:
  • 0 Henk 'm!

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
Wat een doop idee overigens, een HTML-based synth 8)

Streamen van mp3tjes doe ik overigens niet via Flash, maar zo (Winamp):

PHP:
1
2
3
4
5
6
7
8
header("Content-Type: audio/x-mpegurl;");
header("Content-Disposition: inline; filename=\"play.m3u\"");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: nocache");

echo "#EXTM3U\r\n";
echo $_GET["file"];


Deze roep ik dan aan in een onzichtbaar iframe, zodat niet steeds een loos window op-popt.

Acties:
  • 0 Henk 'm!

  • js303
  • Registratie: April 2003
  • Laatst online: 01-06 10:17
werkt dat ook op een mac? of komt quicktime dan aanfietsen met z'n gemuggezift?
ik probeer het binnen 1 geheel te houden, alles binnen 1 browser window. dus een een simpele html pagina in een onzichtbaar frame die een flash swf gebruikt om de mp3 te streamen. dan heb je wel flash nodig maar dat werkt het ook meteen met zowel pc als mac.

[ Voor 17% gewijzigd door js303 op 05-05-2003 16:38 ]


Acties:
  • 0 Henk 'm!

  • js303
  • Registratie: April 2003
  • Laatst online: 01-06 10:17
ja ut werkt wel goed op een pc idd, alleen loopen gaat niet. in flash kan je aangeven hoe vaak je wilt loopen (forever bijv.).

Acties:
  • 0 Henk 'm!

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
ik geloof dat ik het wel aan de praat heb gekregen op mac ja, maar dat loopen dat zal idd moeilijk gaan

Acties:
  • 0 Henk 'm!

  • Skinkie
  • Registratie: Juni 2001
  • Laatst online: 09-06-2020

Skinkie

Op naar de 500

ik ga denk ik mijn client/server flash model ook maar is met geluid uitbreiden, heeft wel wat zo'n synth :)

Steun Elkaar, Kopieer Nederlands Waar!


Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 12:47

killercow

eth0

wel eens aan een lichter formaat gedacht? midi mischien? dat is bedoelt voor synthesizers (oid) en is super lichtgewicht, plus kan je dit direct vanuit php creeeren zonder allerlei externe tools/libs/dll's Het klinkt mischien niet even goed allemaal, maaar je kunt ze natuurlijk altijd nog een final version geven als ze klaar zijn.

Ook is het mischien een goed plan om de generator niet server side te doen, maar client site, java bijvoorbeeld. je kunt dan dus gewoon de client alles laten doen.

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • js303
  • Registratie: April 2003
  • Laatst online: 01-06 10:17
...midi? volgens mij snap je niet wat ik precies wil doen, nl. geluiden genereren. geen notitie data die ik vervolgens naar zo'n als muzak klinkende gm ding stuur... en ik kan geen java.

Acties:
  • 0 Henk 'm!

Verwijderd

js303 schreef op 05 May 2003 @ 01:18:
tja ik weet alleen niet hoe ik een mp3 kan genereren / converteren. zijn er modules / libs voor php of moet ik dan een c++ lib of class ergens vandaan halen en deze compileren oid?? het liefst zou ik direct vanuit php willen wegschrijven naar een mp3.
Ik hoop dat je hier nog iets aan hebt: ik bedacht dat je LAME ook de uitvoer naar stdout kunt laten schrijven. Dit betekent dat je het encoden van een wav-bestand als cgi applicatie kunt laten uitvoeren op de server. De uitvoer komt dan via http direct aan bij de client aan. Dit is min of meer 'streaming', omdat de inhoud realtime wordt gegenereerd. En de client kan het waarschijnlijk ook gewoon opslaan als mp3-bestand.

Ik heb dit net getest op mijn Windows-machine. Daar gaat het als volgt:
code:
1
G:\>lame --silent "Track 39.wav" - > out.mp3

De --silent optie is er om te zorgen dat er geen extra informatie van LAME op het scherm komt te staan. "Track 39.wav" is de naam van het invoerbestandje, en het '-' streepje is er om aan te geven dat de uitvoer naar stdout moet gaan. Vervolgens heb ik de uitvoer weer naar een bestandje ge-redirect via '> out.mp3'. Hier kwam toen gewoon een keurig afspeelbaar mp3tje uit. Ik denk dat dit ook op een webserver prima zou moeten werken. Het is wel de vraag of de pc waar het op draait niet te zwaar belast gaat worden. Als er een paar van deze mp3tjes tegelijk worden opgevraagd, zal dat toch wat kracht van de pc vergen.
Pagina: 1