• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Android plik wav jak zapisać

Object Storage Arubacloud
+1 głos
272 wizyt
pytanie zadane 13 czerwca 2017 w Android, Swift, Symbian przez andrzej151 Początkujący (300 p.)

Mam problem nie rozumiem jak zapisywać do pliku wav mam używać tej funkcji do odczytu z miktofonu dzwieków 

   byte[] getNextBlock() {
        byte[] buffer = new byte[bufferSize];
        // blocking operation - suspends the thread until the buffer is ready to be
        // delivered
        int returnCode = audioRecord.read(buffer, 0, buffer.length);
        if (returnCode >= 0) {
            return buffer;
        } else {
            return null;
        }
    }

i zapisywać przez to 

    public byte[] prepareWavHeader(int pcmDataLengthInBytes) {
        int totalDataLen = pcmDataLengthInBytes + 36;
// source: https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
        byte[] wavHeader = prepareWavFileHeader(bitsPerSample, pcmDataLengthInBytes,
                totalDataLen, sampleRate,
                channelsCount, bytesPerSecond);
        return wavHeader;
    }
    private byte[] prepareWavFileHeader(
            int bitsPerSample,
            long totalAudioLen,
            long totalDataLen,
            long longSampleRate,
            int channels,
            long byteRate) {
        byte[] header = new byte[44];
        header[0] = 'R'; // RIFF/WAVE header
        header[1] = 'I';
        header[2] = 'F';
        header[3] = 'F';
        header[4] = (byte) (totalDataLen & 0xff); // little endian
        header[5] = (byte) ((totalDataLen >> 8) & 0xff);
        header[6] = (byte) ((totalDataLen >> 16) & 0xff);
        header[7] = (byte) ((totalDataLen >> 24) & 0xff);
        header[8] = 'W';
        header[9] = 'A';
        header[10] = 'V';
        header[11] = 'E';
        header[12] = 'f'; // 'fmt ' chunk
        header[13] = 'm';
        header[14] = 't';
        header[15] = ' ';
        header[16] = 16; // 4 bytes: size of 'fmt ' chunk
        header[17] = 0;
        header[18] = 0;
        header[19] = 0;
        header[20] = 1; // format = 1
        header[21] = 0;
        header[22] = (byte) channels;
        header[23] = 0;
        header[24] = (byte) (longSampleRate & 0xff);
        header[25] = (byte) ((longSampleRate >> 8) & 0xff);
        header[26] = (byte) ((longSampleRate >> 16) & 0xff);
        header[27] = (byte) ((longSampleRate >> 24) & 0xff);
        header[28] = (byte) (byteRate & 0xff);
        header[29] = (byte) ((byteRate >> 8) & 0xff);
        header[30] = (byte) ((byteRate >> 16) & 0xff);
        header[31] = (byte) ((byteRate >> 24) & 0xff);
        header[32] = (byte) (1 * 16 / 8); // block align
        header[33] = 0;
        header[34] = (byte) bitsPerSample; // bits per sample
        header[35] = 0;
        header[36] = 'd';
        header[37] = 'a';
        header[38] = 't';
        header[39] = 'a';
        header[40] = (byte) (totalAudioLen & 0xff);
        header[41] = (byte) ((totalAudioLen >> 8) & 0xff);
        header[42] = (byte) ((totalAudioLen >> 16) & 0xff);
        header[43] = (byte) ((totalAudioLen >> 24) & 0xff);
        return header;
    }

 

nie rozumiem co należy p tych zmiennych powstawiać aby stworzyć ten plik wav nie rozumiem struktury wiem że zapis pliku można w androidzie zrobic przez media recorder ale zadanie wymaga zejścia niżej do watków i audioRecord a ja nie rozumiem jak się za to zabrać i co zrobić by mi to działało 

bayty pobieram tą funkcją w wątku i zapisuje do kolejki potem mam to jakoś przetwożyć nie wiem jak i stworzyć ten plik wav i nie rozumiem  bardzo proszę o pomoc linki lub cokolwiek co by mogło mi wyjaśnić jak to zrobić 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 852 wizyt
pytanie zadane 10 stycznia 2018 w Systemy operacyjne, programy przez Tissana Nowicjusz (120 p.)
+1 głos
2 odpowiedzi 1,622 wizyt
pytanie zadane 31 maja 2015 w Inne języki przez hit02 Nałogowiec (33,970 p.)
+1 głos
0 odpowiedzi 223 wizyt
pytanie zadane 24 marca 2021 w C i C++ przez Tymek Sandelewski56 Początkujący (330 p.)

92,556 zapytań

141,404 odpowiedzi

319,562 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...