Jump to content

Upnp-audio-transcode in FLAC möglich?


Donald24

Recommended Posts

Hey!

Ich beschäftige mich gerade mit der Möglichkeit einen kompatibleren FLAC-Audio-Stream also ohne lossy-transcode zu mp3 aus dem DMS zu bekommen.

 

Jegliche Anpassungen dazu in der upnpprofiles4.xml schlugen dazu bisher fehl. Für Denon/Marantz-Player ging der Weg über WAV noch relativ einfach, die korrekte Zeile war im Playstation-Profil schon hinterlegt, mußte nur im Standard-Profil eingefügt werden:

<Ext name=".mp2">
          <MediaFormat mime-type="audio/wav" special="" alias=".wav" transcode="-1" hassize="-1" allaudio="0" bufsize="0">*</MediaFormat>

 

Ich verwende noch einen Squeezebox-Server, der sich allerdings an den WAVs verschluckt, offensichtlich weil er ohne Header von 44.1khz ausgeht, und dann geht gar nichts. Mit einem neuen Profil habe ich in der Sektion dann für die Squeezboxen den MP2-Stream gefüttert, was dann für native Squeezeboxen funktioniert, der Hardware-Codec der Box spielt das ab, und wird so gefiltert über ein neues Upnp-Profil:

 

<profile name="SqueezeboxServer">
      <UserAgent>.*Squeeze.*</UserAgent>
      <X-AV-Client-Info/>
      <Extensions/>
      <AudioExtensions/>
      <LiveExtensions>
        <Ext name=".mp2">
          <MediaFormat mime-type="audio/mpeg" special="" alias="" transcode="0" hassize="0" allaudio="0" bufsize="0">*</MediaFormat>
        </Ext>
      </LiveExtensions>
      <PhotoExtensions/>
    </profile>

 

Jetzt fehlte allerdings noch die Kompatibilität meinen ChromeCast-Audio-Playern, die sich über die CC-Audio-Bridge super in den Squeezebox-Server einbinden lassen. Über einen FFmpeg-conversion zu FLAC konnte ich dies am SB-Server auch noch erreichen, da anscheinend FFMpeg im Transcode dort einen kompatiblen Header setzt.

 

Aber da ja FFmpeg auch am DMS bereits eingesetzt wird, frage ich mich, ob man da viel früher in der Kette nicht ein FLAC-Profil verwenden könnte. Ich hatte noch versucht über das Editieren gemäß mp3/wav-Transcode zu verfahren, nur scheint das nicht zu funktionieren, weil einfach dafür kein CodeProfil existiert.

 

Hat das schon jmd geschafft?

 

 

Link to comment

Dein Post ist etwas schwer verdaulich. Es geht um Live Radiostreams, die der Media Server via UPnP anbietet und die irgendwelche sonderbaren Audio-Zielgeräte empfangen sollen, was eine Transkodierung erfordert - habe ich das soweit richtig verstanden?

 

Du hast das Problem teilweise schon mit einer Transkodierung nach .wav gelöst, was aber bei einem Gerät nicht funktioniert, eventuell weil ein Header fehlt oder nicht passt, und nun würdest du gerne .flac als Zielformat verwenden - soweit auch richtig?

 

Die Transkodierung nach .flac kann noch niemand geschafft haben, weil der DMS dies schlicht nicht unterstützt. Kernpunkt der Sache sind die vom DMS für die Transkodierung verwendeten FFmpeg-Kommandozeilen. Die für WAV-Output sieht so aus

 

-analyzeduration 1M -f mpegts -i "\\.\pipe\Input%s" -map 0:a:0 -acodec pcm_s16le -f wav -y "\\.\pipe\Output%s"

 

wobei FFmpeg die Quelldaten (einen Transportstrom) über eine "Named Pipe" erhält und das Ergebnis auf gleiche Weise zurückliefert - das ist für die Transkodierung an sich aber ohne Bedeutung. "-analyzeduration 1M" gibt an, wieviel Input FFmpeg analysieren soll, bevor die Transkodierung beginnt.

 

Man könnte das Problem auf zweierlei Weise angehen: Entweder man modifiziert die Kommandozeile für den WAV-Output so, dass es der Squeezebox gefällt - FFmpeg kennt dafür womöglich Optionen -, oder man ergänzt im DMS die Möglichkeit, nach FLAC zu transkodieren, wofür eine Kommandozeile der obigen Art erforderlich wäre. Ohne die Zielgeräte für Tests ist das aber ein Glücksspiel. Kannst du etwas in der Hinsicht liefern? Hier  entsprechende Abschnitte der FFmpeg-Dokumentation:

 

https://trac.ffmpeg.org/wiki/audio types

https://www.ffmpeg.org/ffmpeg-all.html#Audio-Options

https://www.ffmpeg.org/ffmpeg-all.html#flac-2

 

Link to comment

P.S. In den DMS lässt sich ein zusätzliches Zielformat leicht einbauen. Ich habe es kurzerhand mal mit

 

-analyzeduration 1M -f mpegts -i "\\.\pipe\Input%s" -map 0:a:0 -acodec flac -ac 2 -f flac -y "\\.\pipe\Output%s"

 

probiert (mitsamt entsprechender Manipulation der UPnPProfilesV4.xml). DVBViewer und VLC konnten den Stream via UPnP wiedergeben.

 

Link to comment

Hey Griga,

danke für die ausführliche Rückmeldung. Sorry, war ein wenig verbuddelt beim frickeln und schrieb so, wie es mir in die Feder floss.

 

Ja, Du hast alles richtig rausgelesen. Ich habe festgestellt, dass sich bei FLAC einfach kompatibler gegenüber WAV verhält, dabei brauch ich z.B. beim Squeezebox-Server nichtmal eine Transcodierzeile, dass ist wahrscheinlich im Framework schon im Vorfeld hinterlegt. Dort reicht den Transcoder und das gewünschte Zielformat zu hinterlegen. 

 

Kann ich die Zeile auch im DMS hinterlegen, oder ist das im Sourcecode?

 

 

Link to comment
vor 36 Minuten schrieb Donald24:

Kann ich die Zeile auch im DMS hinterlegen, oder ist das im Sourcecode?

 

Die ist zur Zeit im DMS hardgecodet. Ich könnte dir nur per PM eine Testversion zur Verfügung stellen.

 

Ich habe auch schon überlegt, dass es sinnvoll wäre, die FFmpeg-Kommandozeilen für die Radio-Transkodierung konfigurierbar zu machen. Fragt sich nur wie... die UPnPProfilesV4.xml, die sich dafür zunächst anbietet, ist auf den zweiten Blick doch nicht so geeignet. Sie bestimmt, wie UPnP-Clients Inhalte präsentiert werden und wie die URLs aussehen, die sie erhalten. Die Radio-Transkodierung führt der Live Streamserver anhand der "Dateiendung" der URL durch, hat aber ansonsten überhaupt keinen Bezug zu den UPnP-Profilen.

 

Am einfachsten wäre es wahrscheinlich, die Kommandozeilen für verschiedene Zielformate als Tweaks zu organisieren, die optional in der service.xml stehen. Der Default wären dann die bisherigen hardgecodeten Zeilen. Ich denke, das werde ich mal so probieren...

 

Link to comment

Das wäre eine Super-Idee!

Auch für die höherauflösende Sender, die im Ac3 ausstrahlen, wäre es doch ein Mehrwert für all die existierenden Streaming-Devices.

Und wenn der Transcoder über die Dateiendung alleine getriggert auf Profile zurückgreifen könnte, halte ich für einfacher und sinnvoller, als die Upnp-Implementation aufzubohren.

 

Keep it up!

Link to comment
vor 14 Minuten schrieb Donald24:

Und wenn der Transcoder über die Dateiendung alleine getriggert auf Profile zurückgreifen könnte,

 

Der Live Streamserver greift wie gesagt überhaupt nicht auf die Profile zu. Braucht er auch nicht. Er erhält vom Client eine Request, die neben der Sender-ID z.B. die Endung .wav enthält. Die Entstehungsgeschichte kennt er nicht, aber er stellt durch Vergleich fest, dass ein anderes Format gefragt ist als der Sender liefert, also spannt er FFmpeg für die Transkodierung ein.

 

Die Profile kommen ins Spiel, wenn der DMS Clients via UPnP erzählt, was er anzubieten hat und wie es sich anfordern lässt. Transkodierung findet dann irgendwann später ganz woanders statt...

 

Wie auch immer - ich werde eine Testversion vorbereiten und dir dann via PM zur Verfügung stellen. Ich sage hier Bescheid, wenn es soweit ist.

 

Link to comment

Hallo,

 

ich persönlich verwende kein FLAC, da meine Player das Format nicht unterstützen, fand es aber schon immer interessant, da es eine verlustlose Komprimierung ist und der Originalzustand wie bei ZIP wieder hergestellt werden kann.

 

Vielleicht findest Du hier etwas brauchbares. Es handelt sich um Kommandozeilen-Tools, die man ja vielleicht statt FFMpeg automatisch aufrufen lassen kann. Und frei nach den Bremer Stadtmusikant: Es leichter zu bedienendes als FFMpeg findest Du überall! ;)

 

https://www.heise.de/download/product/flac-34274

https://xiph.org/flac/download.html

 

Und hier gibt es auch ein Frontend für Windows:

 

https://sourceforge.net/projects/flacfrontend/

 

 

Viele Grüße

 

Webturtle

Edited by Webturtle
Link to comment
  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...