2013-09-06 17 views
6

Piszę coś w rodzaju edytora audio-wideo i wydaje mi się, że jestem bliski ukończenia podstaw. Mogę grać i zatrzymać audiofila, ale kiedy spróbuję ponownie wywołać metodę odtwarzania, to po prostu nie zadziała, mimo że parametry się nie zmieniły.WebAudio nie odtwarza się po zatrzymaniu (0)

Byłbym szczęśliwy, gdyby ktoś spojrzał w mój problem, ponieważ nie rozumiem, dlaczego nie działa, gdy podobny kod w innych projektach. Niestety nie mogę utworzyć jsfiddle, ponieważ musiałbym załadować zewnętrzny plik mp3 i wydaje mi się, że nie wolno mi tego robić. Ale wkleiłem javascript here i odpowiedni plik html here.

Wszystko czego potrzebujesz to serwer, na który możesz przesłać pliki i plik mp3. Alternatywnie możesz użyć this link, ale ostatecznie usunę pliki.

Odpowiedz

8

Nie można wywołać start() na AudioBufferSourceNode więcej niż jeden raz. Są jednorazowe.

Naprawdę jedynym sposobem, aby to zrobić, jest utworzenie nowego AudioBufferSourceNode z podstawowego AudioBuffer za każdym razem, gdy trzeba rozpocząć odtwarzanie.

+0

Dziękuję, spróbuję. Jaki byłby najszybszy sposób na "skopiowanie" wszystkich właściwości do NEW AudioBufferSourceNode? Czy istnieje powód, dla którego musi to być zrobione w ten sposób? Nie mogę wymyślić żadnego, który miałby sens. –

+1

Wszystko, co naprawdę musisz zrobić, to powiedzieć 'var newSource = context.createBufferSource(); newSource.buffer = oldAudioBuffer; '. Dlaczego tak działa ... nie jestem pewien. Podejrzewam, że ma to związek z pamięcią/wydajnością. –

0

Można również pozostawić go uruchomionym i po prostu odłączyć go od węzła zysku, a oscylator prawdopodobnie po prostu bezczynnie/cicho wygeneruje kształt fali.

Powiązane problemy