Typowy plik WAV składa się z 44-bajtowego nagłówka, po którym następują rzeczywiste wartości próbek. Rozmiar "ramki" zależy od właściwości pliku WAV: plik stereofoniczny i 16 bitów na próbkę będzie miał 4-bajtowy rozmiar klatki (dwa bajty dla lewej próbki i dwa bajty dla prawej próbki).).
W kodzie należałoby utworzyć drugi plik WAV, tworząc tablicę bajtów o takim samym rozmiarze jak oryginał. Kopiujesz 44-bajtowy nagłówek z oryginału do kopii, a następnie powtarzasz oryginalne klatki zaczynając od ostatniego i przesuwając je do pierwszego. Kopiujesz każdą ramkę w odwrotnym miejscu w tablicy kopiowania (tzn. Ostatnia oryginalna ramka jest kopiowana do tablicy kopii zaraz po nagłówku, druga do ostatniej ramki jest kopiowana po pierwszej klatce itp.). Następnie po prostu odtwarzaj odwrócony plik.
W tym celu nie potrzebujesz biblioteki javax.sound - wystarczy, że będziesz w stanie skopiować i zmanipulować bajty. FYI, nie wszystkie pliki WAV są "kanoniczne" w ten sposób (kanoniczny oznacza 44-bajtowy nagłówek plus przykładowe wartości i nic więcej). Format WAV jest w rzeczywistości formatem RIFF, co oznacza, że teoretycznie konieczne jest bardziej złożone wyodrębnianie wartości próbek. W praktyce (szczególnie jeśli sam tworzysz pliki WAV), zazwyczaj możesz uciec z prostszym podejściem, jak to opisałem tutaj.
UWAGA: jeśli twoje dźwięki są plikami MP3, cofanie jest bardziej skomplikowanym zadaniem, ponieważ dane próbki nie są przechowywane jako próbki w pliku MP3. Jeśli korzystasz z plików MP3, jednym ze sposobów odwrócenia ich jest przekonwertowanie ich na format WAV, a następnie odwrócenie pliku WAV.
Witam @SamRowley Czy osiągasz swój cel za pomocą opisanego algorytmu? Skopiowałem pierwszy 44-bajtowy nagłówek dokładnie z oryginalnego na odwrócony plik audio i nie mogłem odtwarzać dźwięku wav? Używam Sox i Reverse Audio i sprawdzam, czy 44-bajtowy nagłówek nie jest dokładnie taki? Proszę, jeśli mógłbyś mi pomóc z jakąkolwiek radą, doceniam to. –