MP3 Daten mit FMOD konvertieren um Stream mit konstanten Einstellungen zu senden?



  • Ich übertrage einen MP3 Strean an einen Client der als "44100Hz, stereo, 16Bit" eingestellt ist. Wenn der nächste Song abgespielt wird kann es sein dass sich die Einstellung ändert da er als "44100Hz, stereo, 8Bit" eingestellt ist.

    Kann ich zur Laufzeit die 8Bit zu 16Bit konvertieren und an die Clients übertragen?

    Gruß



  • 8 Bit wäre plem, das macht doch keiner. Wenn dann wirst du eher den Fall haben dass die Samplerate nicht übereinstimmt (48 vs 44.1 kHz) bzw. Joint-Stereo vs. Stereo.

    Aber grundsätzlich... ja, klar geht das.

    Ohne Re-Encoding wird es aber wohl etwas gefinkelt. Und wenn du das File "streaming" konvertieren willst, also immer nur das Stück das gerade gesendet wird, dann wird das vermutlich auch schwierig.
    Beides natürlich technisch machbar, aber vermutlich eben sehr sehr aufwendig.
    Es sei denn du findest irgendwo ne Library die genau das kann, die du "nur noch" einbinden musst.

    Ich würde mich da aber eher nicht bei FMOD umsehen sondern bei ffmpeg & co.

    Die einfachste Variante wäre vermutlich vor der Übertragung checken ob das Format passt, und wenn nicht einfach schnell mit nem Commandline-Encoder ala LAME konvertieren. Wenn Files öfter verwendet werden kannst du die konvertierten Files ja irgendwie cachen, damit welche die häufig gebraucht werden nicht jedesmal neu konvertiert werden müssen.

    Das Beste wäre aber - falls möglich - dem Client beizubringen mit dem Wechsel klarzukommen.



  • Ja bestimmt, das mit den 8Bit war nur als Beispiel gedacht..

    Ok, wenn das so schwer ist dann muss ich den Client ändern - hatte gehofft das geht einfacher mit FMOD. Wenn der Stream zuende ist muss dann ja gewartet werden bis der Client das Lied abgespielt hat (der hat ja nen Puffer von 1 oder 2 Sekunden). Könnte mir vorstellen dass man da mit ner Verzögerung leben müsste; genau wie auch beim vorspulen z.B.

    Daher kahm die Idee mit dem konvertieren..



  • Wieso willst du warten bis das Lied zu ende ist?



  • Ich habe eine Playlist mit X Liedern. Ein Lied wird nach dem anderen gespielt, da wird es vorkommen das mal ein Lied mit 44100Hz und mal eins mit 48000Hz dabei ist..



  • Hm, OK.

    Samplerate ändern kann man natürlich nicht ohne dass man den Player anhält - bzw. mit zwei Playern parallel arbeitet.
    Du könntest aber in dem Fall nen kurzen Crossfade machen, wenn du quasi "übergangslos" spielen willst.



  • Jaa, so wird es gemacht 🙂 geile Idee!


Anmelden zum Antworten