2012-12-11 11 views
5

jestem żółtodziobem z tych rzeczy tak łatwo przejść ...Utwórz plik .wav o określonej częstotliwości z PHP

Wszystko chcę zrobić jest skonstruowanie prostego tonu pewnej częstotliwości z wykorzystaniem PHP. Powinien wypisać plik .wav, który można wstawić bezpośrednio do tagu HTML audio.

Naprawdę nie mam pojęcia, od czego zacząć, ponieważ nie rozumiem nawet, jak przechowywane są dane audio. Czy ktoś może zasugerować zasób lub pomóc mi bezpośrednio?

byłoby muchly ceniona :)

P.S jeden jest podobne pytanie, choć nie sądzę, że to, czego szukam.

+4

można używać zewnętrznych programów oprócz PHP? Jeśli tak, to polecam za pomocą [sox] (http://sox.sourceforge.net/sox.html), aby wygenerować plik audio na serwerze, a następnie przekazać go. Aby wygenerować sinus 3 sec przy 1 kHz, należy użyć: 'sox -n output.wav synth 3 sine 1000' – Carsten

+0

Prawdopodobnie z utworzeniem poprawnej struktury danych będzie to również możliwe w php. W tym celu należy znaleźć dokumentację formatu pliku .wav. –

+0

Czy istnieje szczególny powód, dla którego chcesz używać PHP? Nie wierzę, że w PHP jest coś, co pomoże ci zrobić to inaczej niż sugerował @TomB, szukając specyfikacji i zapisując dane binarne do pliku. – Dracs

Odpowiedz

1

Spróbuj tego. (Wykorzystuje SoX więc nie jest to czysty roztwór PHP, ale działa dobrze.

Twój HTML

<embed height="50" width="100" src="/test.php?tone=1000"> 

Twój PHP

<?php 
    $tempFile = tempnam(sys_get_temp_dir(), 'AUD') . '.wav'; 
    $pitch = (int)$_GET['tone']; 

    exec("sox -n $tempFile synth 5 sin $pitch"); 

    header('Cache-Control: max-age=604800'); 
    header('Content-type: audio/x-wav'); 
    header('Content-Transfer-Encoding: binary'); 
    header('Content-Length: '.filesize($tempFile)); 
    readfile($tempFile); 
Powiązane problemy