Tệp WAV điển hình bao gồm tiêu đề 44 byte theo sau là giá trị mẫu thực tế. Kích thước của một "khung" phụ thuộc vào các thuộc tính của tệp WAV: một tệp là âm thanh nổi và 16 bit mỗi mẫu sẽ có kích thước khung 4 byte (hai byte cho mẫu bên trái và hai byte cho mẫu bên phải).
Vì vậy, trong mã, bạn sẽ tạo một tệp WAV thứ hai bằng cách tạo một mảng byte có kích thước tổng thể giống như bản gốc. Bạn sao chép tiêu đề 44-bit từ bản gốc vào bản sao, và sau đó lặp qua các khung gốc bắt đầu từ cuối cùng và làm việc chuyển tiếp đến đầu tiên. Bạn sao chép từng khung vào vị trí nghịch đảo trong mảng sao chép (tức là khung gốc cuối cùng được sao chép vào mảng sao chép ngay sau tiêu đề; khung thứ hai đến cuối được sao chép sau khung đầu tiên, v.v.). Sau đó, chỉ cần chơi tập tin đảo ngược.
Vì vậy, bạn không cần thư viện javax.sound để thực hiện việc này - bạn chỉ cần có khả năng sao chép và thao tác các byte. FYI, không phải tất cả các tệp WAV đều "kinh điển" như thế này (chuẩn có nghĩa là tiêu đề 44 byte cùng với các giá trị mẫu và không có gì khác). Định dạng WAV thực sự là một định dạng RIFF, có nghĩa là trong lý thuyết bạn cần phải khai thác phức tạp hơn các giá trị mẫu. Trong thực tế (đặc biệt là nếu bạn đang tạo ra các tập tin WAV chính mình) bạn thường có thể nhận được đi với một cách tiếp cận đơn giản hơn nhiều như tôi đã mô tả ở đây.
LƯU Ý: nếu âm thanh của bạn là tệp MP3 thì việc đảo ngược là một tác vụ phức tạp hơn vì dữ liệu mẫu không được lưu trữ dưới dạng mẫu trong tệp MP3. Nếu bạn đang sử dụng MP3, một cách để đảo ngược chúng là chuyển đổi chúng thành WAV và sau đó đảo ngược tệp WAV.
Xin chào @SamRowley Bạn có đạt được mục tiêu của mình bằng thuật toán được mô tả không? Tôi sao chép tiêu đề 44-byte đầu tiên chính xác từ bản gốc để đảo ngược tập tin âm thanh, và tôi không thể làm cho âm thanh wav để chơi? Tôi sử dụng sox và đảo ngược âm thanh và kiểm tra rằng tiêu đề 44-byte là không chính xác? Xin vui lòng nếu bạn có thể giúp tôi với bất kỳ lời khuyên nào tôi sẽ đánh giá cao nó –