Merging von mp4-files/Audio asynchron

  • NOCHMAL:

    Ich habe schon beschrieben, wenn man die AVIs mit CBR MP3 encodet, diese mit einem funktionierenden Joiner verbindet. Und dieses dann in MP4 Encodet, das es funktioniert.

    ALLE Anderen Wege, MP4s zuverbinden schlugen fehl. Und div. Boards sind von hunderten Beiträgen übersäht mit Jammerei in Sachen MP4 joinen.

    Ergo: schlage Endlich den richtigen Encoding Weg ein oder lebe Damit, das es unsycron ist oder warte halt solange bis irgendwann ein Entwickler es schaft, aus verhuntzen MP4s ein großes zumachen.

    Für mich ist dieser Beitrag jetzt beendet, weil es nichts mehr zu sagen gibt.


    Und erlaube mir bitte eine persönliche Bemerkung: das mit den mehrere Arbeitsplatzen mit Adobe Premiere und Prof. arbeiten, des stingt sowas zum Himmel, das das Dir hier KEINER abnimmt.

  • Alle Files die ich encode ob VirtualDub oder ffmpeg sollten eigentlich auch CBR sein, werd das aber noch mal prüfen.

    Und erlaube mir bitte eine persönliche Bemerkung: das mit den mehrere Arbeitsplatzen mit Adobe Premiere und Prof. arbeiten, des stingt sowas zum Himmel, das das Dir hier KEINER abnimmt.

    Mag sein, aber so ist es nun mal!

    Trotzdem Danke für deine Mühen.

  • zwiebel_sondermann
    Du könntest hier http://sourceforge.net/tracker/?group_id=84101&atid=571741 einen Feature Requests stellen das MP4Box beim aneinander hängen von MP4 Dateien die edit box/edit list box verwendet wenn der Audio und Video Track nicht genau genau gleich lang sind.

    Je nach Player der zum Abspielen verwendet werden soll, könnte das deine Probleme lösen. Osmo4(GPAC) und Quicktime Player sollten diese Box/Atom unterstützen. Bei anderen Playern käme es auf eine Versuch an.

  • Hi, laut Jean Le Feuvre sollte folgendes klappen:

    Wenn du eine MP4 Datei hast mit kürzeren Audio Track, fügst du bei der Datei die du anhängen willst ein Delay entsprechend der Differenz hinzu. Anschließend kannst du die Datei mit -cat wie gewohnt anhängen.

    Beispiel:

    Code
    MP4Box -info test.mp4* Movie Info *        Timescale 1000 - Duration 00:02:33.840        Fragmented File no - 2 track(s)        File Brand isom - version 512        Created: GMT Fri Jan  2 00:00:00 1970File has no MPEG4 IOD/ODTrack # 1 Info - TrackID 1 - TimeScale 25025 - Duration 00:02:33.840Media Info: Language "Undetermined" - Type "vide:avc1" - 3846 samplesMPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21AVC/H264 Video - Visual Size 640 x 480 - Profile High @ Level 5.1NAL Unit length bits: 32Pixel Aspect Ratio 1:1 - Indicated track size 640 x 480Self-synchronizedTrack # 2 Info - TrackID 2 - TimeScale 48000 - Duration 00:02:33.728Media Info: Language "Undetermined" - Type "soun:mp4a" - 7206 samplesMPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 48000Synchronized on stream 1

    Wie man sehen kann ist der Audio Track 112 ms kürzer.

    Zu Testzwecken habe ich einfach die selbe Datei mehrmals aneinander gehängt.

    Als erstes der Datei die man anhängen will ein Delay geben.

    Zitat


    MP4Box -add test.mp4#1 -add test.mp4#2:delay=112 cat.mp4

    Dann zusammen fügen:

    Code
    MP4Box -add test.mp4 -cat cat.mp4 -cat cat.mp4 -cat cat.mp4 
    ...
    
    
    ...
    -cat cat.mp4 -cat cat.mp4 -cat cat.mp4 -cat cat.mp4 out.mp4

    Die erstellte Datei war bei mir synchron mit xine-lib und vlc.
    MPlayer spielt nur den ersten Teil ab und Osmo4 scheint zur Zeit bedingt durch den Symbian Port noch ein paar Probleme zu haben.
    Andere Player habe ich nicht getestet.

  • Drachir

    Danke für deine Antwort, hatte dies bzgl. auch schon ne Antwort von Jean bekommen. Unschön ist natürlich das nicht alle Player damit umgehen können.

    Gibt es nicht einfach die Möglichkeit in dem File in deinem Beispiel "test.mp4" von der Video-Spur einfach die 112ms abzuschneiden, so dass ich dann auch wirklich ein file habe mit gleich langen Spuren? Das muss auch nicht unbedingt mit MP4Box gemacht werden, Hauptsache es ist ein Programm für die Kommandozeile unter Linux.

  • Drachir
    Gibt es nicht einfach die Möglichkeit in dem File in deinem Beispiel "test.mp4" von der Video-Spur einfach die 112ms abzuschneiden, so dass ich dann auch wirklich ein file habe mit gleich langen Spuren? Das muss auch nicht unbedingt mit MP4Box gemacht werden, Hauptsache es ist ein Programm für die Kommandozeile unter Linux.

    Mann kann ja nur ganze Frames am Ende weglassen. Je nach Frame Rate wird sich das zeitlich nicht mit dem decken was man weglassen will. Im Falle von 25 fps würde ein Frame z.B. für 40ms angezeigt. Bei meiner Beispiel Datei(erstellt mit https://localhost/www.avidemux.org) könnte man dann 2 Frames weg lassen, bleibt noch ein 32ms übrig.

    Mir ist auch noch aufgefallen das avidemux ohne Grund eine edit list beim Video Track zu erstellen scheint. Diese scheint auch für meine Probleme mit Osmo4 und MPlayer nach dem aneinanderhängen(-cat) verantwortlich zu sein.(ein Bug?)
    Wenn ich nun die Streams von der mit avidemux erstellten Datei nach RAW demuxe und mit MP4Box remuxe sind die Probleme mit Osmo4 und MPlayer weg.

    Auch ist mir aufgefallen das nach dem aneinanderhängen mit -cat bei meinem Beispiel ich keinen edit list beim Audio Track in der out.mp4 Datei finden konnte, diese aber aber mit VLC,MPlayer,xin-lib oder Osmo4 syncron abgespielt wird. Wenn ich vorher kein Delay(edit list) bei den anzuhängenden Dateien erstelle, ist die erstellte Datei asyncron.

    Ich würde es also noch mal so wie ich beschrieben habe probieren.

  • Hmm, deine Methode hatte ich ja probiert und dabei Probleme u.a. mit Quicktime. Die Videos sollten aber auf jeden Player abspielbar sein.

    Ich werde es jetzt wohl so machen, dass ich vom Video ein Teil am Ende abschneide und falls sich das aufgrund der Framerate mit der Audiospur nicht deckt auch dort.

    Also kurz encoden mit ffmpeg, checken der spurlängen mit mp4box, demuxen mit mp4box, schneiden der spuren auf einheitliche länge mit ffmpeg, remuxen mit mp4box.

    Leider kommt es beim Schneiden des Audios wiederum zu Fehlern, weil nicht genau die Länge rauskommt die ich angebe. Liegt wohl an der Samplerate. Aber die "gemergeten" Files sind nicht mehr sooo hart async.

Jetzt mitmachen!

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