Pipeline Problem zwischen FFMpeg und MP4alsRM23

  • Hallo ihr guten Leute aus dem Gleitz Forum ^^

    Und zwars habe ich ein Problem eine Pipeline zwischen FFMpeg und MP4alsRM23 aufzubauen.

    Mein aktueller Versuch war bissher:

    Code
    ffmpeg -i "Test.aac" -c:a pcm_s16le -f wav - | mp4alsRM23.exe - "neu.als"

    Dabei schmeißt er mir folgende Fehlermeldung raus:

    Code
    Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument

    Dann habe ich versucht das irgendwie als RAW zu übergeben mittels:

    Code
    ffmpeg -i "Test.aac" -c:a pcm_s16le -f s16le - | mp4alsRM23.exe - "neu.als"

    Dies quittiert er mir dann mit:

    Code
    av_interleaved_write_frame(): Invalid argument
    size=       4kB time=00:00:00.02 bitrate=1411.2kbits/s
    video:0kB audio:4kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
    Conversion failed!


    Ich habe keine Ahnung wie ich da eine funktionierende Pipeline reinbekomme. Laut der Hilfe zu mp4alsRM23 sollte die Funktion des stdin mit - für In- Und Output möglich sein.

    Den Audio-Encoder habe ich hier gedownloaded: http://www.nue.tu-berlin.de/menue/forschun…s/parameter/en/

    Unter dem Punkt: Reference Software

    Ich hoffe ihr könnt mir da irgendwie weiterhelfen.

    Weil wenn das irgendwie machbar ist, könnt ich das auch in VirtualDub nutzen. Das wäre richtig nice ^^

  • 0-Erfahrung mit dem Encoder, aber hier in paar allgemeine Sachen:
    a. wenn ffmpeg mit wav output verwendet wird, stimmt die Größe im wave header nicht, wird diese nicht ignoriert wird es nicht klappen.
    b. wenn Du raw "s16le" nimmst, solltest Du dem Encoder vermutlich auch mitteilen, dass der Input als RAW ankommt,...

    Code
    Audio file support:  -R  : Raw audio file (use -C, -W, -F and -M to specify format)  -S# : Sample type: 0 = integer (default), 1 = float  -C# : Number of Channels (default = 2)  -W# : Word length in bits per sample (default = 16)  -F# : Sampling frequency in Hz (default = 44100)  -M  : 'MSByte first' byte order (otherwise 'LSByte first')  -H# : Header size in bytes (default = 0)  -T# : Trailer size in bytes (default = 0)  -I  : Show info only, no (de)compression (add -x for compressed files)


    also -R wird wäre wohl auf jeden Fall nötig, davon ausgegangen, dass Dein Input die anderen Charakteristika hat (stereo, 44.1kHz)

    Klappt denn der Encoder bei Dir mit Datei Input der gepiped wird?

    Code
    "C:\Users\Selur\Desktop\mp4alsRM23.exe" -v - test.als < "f:\TestClips&Co\audio\later.wav"


    liefert bei mir nur:

    Code
    Unable to open file   for reading!
    Code
    "C:\Users\Selur\Desktop\mp4alsRM23.exe" -v "f:\TestClips&Co\audio\later.wav" test.als


    geht aber.

    Würde spontan sagen: Frag am Besten mal bei denen direkt nach. :)

    Cu Selur

  • Zitat

    Klappt denn der Encoder bei Dir mit Datei Input der gepiped wird?


    Nee, klappt bei mir auch nicht. Komisch. Obwohl das so als Beispiel in der Hilfe sogar steht.

    Zitat

    b. wenn Du raw "s16le" nimmst, solltest Du dem Encoder vermutlich auch mitteilen, dass der Input als RAW ankommt,...


    Habe ich versucht, nur leider ohne Erfolg. Kann es sein das die Hilfe nur für Linux bzw. Mac zutreffen? Also das dort die Pipe dann so funktioniert? Weil dann würde das einiges erklären, da ja die Windows Pipe ja auch nicht gerade so toll ist wie die von Linux z.B.


    Den Source Code für mp4alsRM23 habe ich auch schon gefunden:
    https://code.google.com/p/opensourceli…23.zip&can=2&q=

    Sogar mit nem Patch:
    https://code.google.com/p/opensourceli….patch&can=2&q=

    Da ich kein Visual Studio habe bzw. überhaupt etwas um das zu kompilieren, denke ich das sich das vllt ein Entwickler bzw. jemand der die nötigen Programme hat es kompilieren könnte. Weil das wäre wirklich cool wenn das Tool mit einer Pipeline richtig laufen würde.

    Zitat

    Würde spontan sagen: Frag am Besten mal bei denen direkt nach. :)


    Werde ich auf jeden Fall demnächst machen.


    Der Encoder wäre halt ne schöne Sache, da man ihn dann in VDub hätte unterbringen können oder auch noch ganz woanders.
    Weil wenn ich ein Video mache mit x264, dann mache ich oft auch FLAC Audio in einem MKV Container.
    Aber MKVs wieder in einem Schnittprogramm zu laden ist wieder nicht so toll.
    Daher habe ich gedacht das ich mit ALS Audio Verlustfrei komprimiere und zusammen mit dem Video und MP4 Box zusammen muxe. Sprich eine MP4 Variante zur MKV. Weil doch FLAC nicht in MP4 geht.

    Hat ja auch soweit alles funktioniert. Nur möchte ich den Ablauf etwas optimieren und nicht jedesmal alles in PCM wandeln und dann noch mal in ALS. Ich meine... mit dem FLAC Encoder ging ja auch ne Pipeline aufzubauen und mit NeroAAC auch. Von daher... muss es doch auch irgendwie mit diesem Encoder gehen xD

  • Gibt es mittlerweile eigentlich nicht auch noch andere ALS Encoder als den Referenz-Encoder? (hab irgendwie noch om Kopf, dass bei HydrogenAudio, mal jemand ne optimiertere Version gepostet hatte, kann mich da aber auch irren,.. meine auch ffmpeg sollte doch auch mal nen als Encoder bekommen,..)
    Nebenbei: Würde selber vermutlich eher Apple Lossless Audio Codec (ALAC) verwenden, was durch qaac und fhgaacenc erstellt werden kann.
    Gerade eingefallen, ALAC ist vermutlichlich doch keine Lösung, weil das glaub ich nur Stereo konnte.
    Gerade probiert:

    Code
    ffmpeg -y -threads 8 -loglevel fatal -i "H:\Temp\iId_3_aid_1_DELAY_-44ms_10_47_50_3710_01.ac3" -ac 6 -ar 48000 -acodec pcm_s16le -f wav - | qaac --delay -0.044 --threading --alac --raw - -o "H:\Temp\iId_3_aid_1_aa.aac"


    output ist stereo, auch wenn https://sites.google.com/site/qaacpage/ schreibt 'Support for hi-resolution/multichannel ALAC. '
    und https://en.wikipedia.org/wiki/Apple_Lossless 'Apple Lossless supports up to 8 channels of audio at 16, 20, 24 and 32 bit depth with a maximum sample rate of 384kHz.' schreibt.
    FFmpeg kann vielleicht multichannel alac,..
    ja, geht mit:

    Code
    ffmpeg -y -threads 8 -i "H:\Temp\iId_3_aid_1_DELAY_-44ms_10_47_50_3710_01.ac3" -ac 6 -ar 48000 -c:a alac  -f ipod h:\Temp\ffmpeg_alac.m4a


    hab mal bei qaac in den Bug tracker gepostet: https://github.com/nu774/qaac/issues/35
    -> geht wenn man das '--raw' weglässt auch mit qaac, also:

    Code
    ffmpeg -y -threads 8 -loglevel fatal -i "H:\Temp\iId_3_aid_1_DELAY_-44ms_10_47_50_3710_01.ac3" -ac 6 -ar 48000 -acodec pcm_s16le -f wav - | qaac --delay -0.044 --threading --alac - -o "H:\Temp\iId_3_aid_1_aa.m4a"

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!