Hey Leute, ich arbeite grad an einem Projekt (auf Basis von einem STM32F7) und möchte den Sound den ich über ein PDM Mikrofon aufzeichne über einen HTTP-MP3 Stream ausgeben (ähnlich wie bei einem Webradio z.B.) sodass ich den Sound über Windows-Media-Player oder VLC am PC abhören kann. Das Netzwerk-Interface inklusive lwIP habe ich zum laufen bekommen inzwischen und kann einen generischen TCP-Server starten (aktuell noch ein Echo bei mir - aber sollte dann easy sein ein paar HTTP Header + raw-content zu senden). Das PDM Mikrofon inklusive Filterung zu PCM läuft auch inzwischen (sende die PCM samples aktuell über eine USB-CDC an meinen computer wo ich es in ein wav-file abspeichere und der Sound ist sauber). Zu meiner Schande muss ich gestehen - ich habe noch nie was mit mp3 encoding/decoding gemacht und wirklich gute Infos oder gute (minimalistische) Beispielprojekte finde ich auch nicht im Internet. Ein paar Sachen die ich herausfinden konnte: - viele Webradios arbeiten mit einem Shoutcast Protokoll (das heißt zwischendurch kommen immer mal wieder Metadaten durch) -> das würde ich gerne verhindern weil ich das nicht brauche. - MP3 lässt anscheinend nicht wirklich Blockweise kodieren? (das wäre bei mir aber so weil ich das PDM ja per DMA anfahre und dann immer callbacks alle 64 samples bekomme). Meine Idee wäre wirklich: -> Client sendet HTTP-GET request an den uC -> uC antwortet mit einem HTTP Header und danach werden konstant MP3-chunks geflutet (natürlich mit MP3-Header am Anfang). Kann mir da vielleicht mal einer auf die Sprünge helfen ob es nicht vielleicht doch irgendwo ein Projekt gibt? Der MP3-Encoder müsste natürlich so effizient sein, dass er auf dem cortex-m7 laufen muss. Danke!
Robert schrieb: > Zu meiner Schande muss ich gestehen - ich habe noch nie was mit mp3 > encoding/decoding gemacht und wirklich gute Infos oder gute > (minimalistische) Beispielprojekte finde ich auch nicht im Internet. Das liegt daran, dass MP3 halt schon recht komplex ist. Das kann man einfach nicht in zehn Zeilen Code abhandeln. > - MP3 lässt anscheinend nicht wirklich Blockweise kodieren? Quatsch. MP3 arbeitet im Gegenteil von Hause aus fast auschließlich blockweise. Die "Blocks" heißen hier nur Frames.
hui schrieb: > lmgtfy > > https://www.esp32.com/viewtopic.php?t=9186 Danke für den Tipp. Die Shine-Library sieht recht interessant aus. Ich werde es einfach mal probieren damit ;-)
MP3 Encoding ist verdammt aufwändig auf einem µC, da ist dein STM32F7 komplett ausgelastet IMHO. Ethernet/WLAN ist für unkomprimierten Stereo Sound in CD Qualität schnell genug. IMHO müsste man mit RTP auch unkomprimierten Sound übertragen können.
Man muss das Projekt in 3 Schritte unterteilen. Schritt 1 : das Gesprochene in mp3 umzuwandlen. Dazu gibt es wie auch für die Wiedergabe inzwischen fertige Chips. Da heißt es dann nur Datenblatt lesen. Aber ich weiß aktuell keine Typenbezeichnung. Aber ich habe so Chips schon gesehen. Werden z.b. in modernen Diktiergeräten verbaut. Die Teile die das Gelabere auf die SD-Karte schaffen. Schritt 2 : Ist eigentlich der einfachste. Einfach die umgewandelten Daten seriell oder via Protokoll (Http reicht völlig, macht das Webradio auch) zu senden. Schritt 3. Den Datenstrom wieder in Töne umwandeln. Das ist auch nicht besonders schwer. Passende Elektronik gibts aus China für 5 Euro. Hier sogar eine Art Schaltplan dazu. https://manualzz.com/doc/8779228/mp3-artikel-in-mikroc-f%C3%BCr-dspic
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.