[FFmpeg] AAC LATM

  • Wie bekomme ich mit FFmepg das Encoding vom Audio Codec AAC LATM hin ?

    Mir ist bei Tests der markad Version V04 aufgefallen, dass bei HVEC Aufnahmen mit AAC LATM Audio die Schnittfunktion noch nie funktioniert hat. Nutzt wohl keiner.

    Code
     ffmpeg  -hide_banner -codecs | grep LATM
     D.AIL. aac_latm             AAC LATM (Advanced Audio Coding LATM syntax)

    Decoder ist da, aber kein Encoder. Wie bekomme ich den Encoder ?

    "configure --enable-encoder=aac" bringt nichts.

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • Mein Script kann das

    Du brauchst libfdk_aac und dann:

    -profile:a aac_he -latm 1 -mpegts_flags latm -flags:a +global_header

    Mein VDR

    VDR1 Mediaportal mit QVT-Board, Intel 810 Chipsatz, Pentium III 1,1 Ghz, 256 Mb Ram, WDC WD5000AAKB, DVB-S TT 1.5, Nova-S, Digidish 33, Gentoo Kernel 2.6.31, VDR 1.4.7
    VDR2 Asrock M3N78D, AMD Phenom II X6 1055T, 8 Gb Ram, Geforce GTX 950, WinTV dualHD, Gentoo Kernel 5.10, VDR 2.6.0, softhddevice
    VDR3 MC-1200, GA-B85M-HD3, Celeron G1840, Quadro P400. 4G Ram, CineS2 6, DuoFlex S2, WinTV dualHD, Gentoo Kernel 5.10, VDR 2.6.0, softhddevice
    TV TX-37LZD85F, AV VSX-520D - Consono 35


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Das basiert ja auf FFmpeg, dann muss das ja dein FFmpeg können. Ich will zwar nicht FFmpeg selbst verwenden, sondern die libavcodec API, aber wenn es mein FFmpeg nicht kann, kann es auch libavcodec nicht. FFmpeg mit "--enable-libfdk-aac --enable-nonfree" bauen habe ich auch versucht, ändert aber nichts bei mir.

    Zeigt mal bitte deine Ausgabe von "ffmpeg -codecs | grep LATM".

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • Das brauche ich nicht, da wird nichts kommen, es geht nicht um den Codec, sondern ums packetieren. Ich bin nicht sicher, ob das nur mit libfdk_aac geht.

    Mein VDR

    VDR1 Mediaportal mit QVT-Board, Intel 810 Chipsatz, Pentium III 1,1 Ghz, 256 Mb Ram, WDC WD5000AAKB, DVB-S TT 1.5, Nova-S, Digidish 33, Gentoo Kernel 2.6.31, VDR 1.4.7
    VDR2 Asrock M3N78D, AMD Phenom II X6 1055T, 8 Gb Ram, Geforce GTX 950, WinTV dualHD, Gentoo Kernel 5.10, VDR 2.6.0, softhddevice
    VDR3 MC-1200, GA-B85M-HD3, Celeron G1840, Quadro P400. 4G Ram, CineS2 6, DuoFlex S2, WinTV dualHD, Gentoo Kernel 5.10, VDR 2.6.0, softhddevice
    TV TX-37LZD85F, AV VSX-520D - Consono 35


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Habe ich das richtig verstanden ? Mit o.g. Parametern wird nicht decodiert und encodiert, darum braucht du LATM Encoder nicht ?

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • So wie ich das verstehe ja,

    Mit aac und -latm 1 -mpegts_flags latm

    Code
        Stream #0:1[0x1e1]: Audio: aac_latm (LC) ([17][0][0][0] / 0x0011), 48000 Hz, stereo, fltp
    Mein VDR

    VDR1 Mediaportal mit QVT-Board, Intel 810 Chipsatz, Pentium III 1,1 Ghz, 256 Mb Ram, WDC WD5000AAKB, DVB-S TT 1.5, Nova-S, Digidish 33, Gentoo Kernel 2.6.31, VDR 1.4.7
    VDR2 Asrock M3N78D, AMD Phenom II X6 1055T, 8 Gb Ram, Geforce GTX 950, WinTV dualHD, Gentoo Kernel 5.10, VDR 2.6.0, softhddevice
    VDR3 MC-1200, GA-B85M-HD3, Celeron G1840, Quadro P400. 4G Ram, CineS2 6, DuoFlex S2, WinTV dualHD, Gentoo Kernel 5.10, VDR 2.6.0, softhddevice
    TV TX-37LZD85F, AV VSX-520D - Consono 35


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Vielen Dank, du hast mich auf eine Idee gebracht:

    Ich muss mir mal anschauen, ob ich das bei der Schnittfunktion in markad genauso machen kann. Den Ton brauche ich ja eigentlich nicht zu decodieren/encodieren, da muss ich nur PTS und DTS überschreiben. Mit DVB Subtitel mache ich das schon immer so, weil FFmpeg das auch nicht kann.

    Den Video Stream muss ich Decodieren/Encodieren, sonst könnte ich nur an i-frames schneiden. Das ist bei SD noch OK, aber bei HVEC ist das zu ungenau.

    Vorsicht Spoiler: Das kommt dann in der Version 4.1 mit hwaccel im Encoder. Aber das dauert noch, erstmal muss der Decoder mit hwaccel sauber laufen.

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

    Edited once, last by kfb77 (July 10, 2024 at 10:45 PM).

  • Dein Hinweis hat die Lösung gebracht: Ich nutze das Codec Objekt vom Decoder um den Ausgabefile Header schreibe (ja, ich war auch erstaunt, dass das geht) und kopiere dann nur die Pakete ohne zu decodieren/encodieren. Ab der nächsten markad Version kann man dann auch HVEC Video mit AAC LATM Ton schneiden.

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!