STM32f4 Discovery: wave aufnehmen

OP #3208870
Lesenswert?
• ▲
▼
Hallo liebe Leute.

ich versuch mich momentan in den STM32 Controller einzuarbeiten.
ich wollte es anhand des Beispielst: Audio Playback and Record von ST 
machen.

Das Programm bringt mich jedoch leicht zum verzweifeln...
mit dem Aufnehmen und darauffolgenden Wiedergebe klappt alles super...
jedoch wenn ich die Datei seperat vom USB, mit dem Mediaplaye, abspielen 
möchte, bekomme ich nur eine Fehlermeldung, dass diese Datei nict 
wiedergegeben werden kann.

Hat jemand schon mal das gleiche Problem gehabt und kann mir da vllt 
weiterhelfen? ich würde es wirklich willkommen heißen, wenn auch die 
Datei auf dem USB richtig funktioniert. Wenn dass jedoch nicht der Fall 
ist, dann stimmmt wohl etwas mit den Programmiercode nicht.

Gruß
Roggen
#3208903
Lesenswert?
• ▲
▼
Hi Roggen,

ich habe mit dem STM Beispiel auch rumgespielt
und hab dann selbst eine Funktion zum Aufnehmen geschrieben

die von STM erstellte WAV hat, so wie ich das gesehen habe
mehrere Fehler im WAV-Header :

1. sie speichern nicht die tatsächliche Länge vom File
und die korrekte Datenanzahl stimmt auch nicht

2. sie speichern das File als "Stereo" obwohl es Mono ist

3. sie speichern als Sampl-Frq 8000 Hz, es wird aber mit 16000 Hz
aufgenommen

4. das TAG (Byte/sec) beschreiben sie auch mit 8000 obwohl bei 16bit da
der doppelte Wert reinkommen müsste

ich kann dir jetzt nicht genau sagen welcher dieser Fehler
dazu führt das Windows dein File nicht abspielt
zur not musst du alle 4 Punkte per Hand korrigieren
(z.B. per HEX-Editor)

Gruss Uwe
#3209704
Lesenswert?
• ▲
▼
Ich vermute dem Player passt die Filelänge nicht

die anderen Werte führen eigentlich nur zu einer falschen
Abspielgeschwindigkeit

schau dir mal nach dem Aufnehmen die Filegröße im Explorer an (in Bytes)
und schreib diesen Wert (als 4Byte Hex) ab Adr 0x04 im WAV-Header
(direkt nach 'RIFF')

dann zieh von dem Wert 44 Bytes ab (so lange ist der Header) und 
speicher
diesen kleineren Wert (auch als 4Byte Hex) ab Adr 0x28 im WAV-Header
(direkt nach 'data')


hier mal ein Beispiel :

dein File ist 902836 Bytes gross => 0x0DC6B4

Adr 0x04 = 0xB4
Adr 0x05 = 0xC6
Adr 0x06 = 0x0D
Adr 0x07 = 0x00

902836 - 44 = 902792 => 0x0DC688

Adr 0x28 = 0x88
Adr 0x29 = 0xC6
Adr 0x2A = 0x0D
Adr 0x2B = 0x00

und schau mal ob das File dann abgespielt wird

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.