[OT] Videos konkatenieren

  • Hallo,


    mein Thema hat nichts mit dem VDR zu tun, aber da ich nach zwei Tagen googeln mit meinem Latein am Ende bin und hier der ein oder andere Videofreak dabei ist, stelle ich meine Frage einfach mal hier.


    Ich habe hier diverser Mitschnitte (von http://new.livestream.com/) bzw. Webinar-Aufzeichnungen (GoToWebinar) und möchte ein Intro davor- und ein Outro (rechtliche Hinweise) dahinterhängen. In den Videos passiert im Prinzip nicht viel, da im wesentlichen nur irgendwelche Charts oder Powerpoint-Präsentationen zu sehen sind. Ich verwende eine aktuelle Version von FFmpeg unter Windows.


    Das Intro sieht folgendermaßen aus:

    Code
    1. Duration: 00:00:03.86, start: 0.000000, bitrate: 444 kb/s
    2. Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 274 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc (default)
    3. Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 178 kb/s (default)


    Das Outro so:

    Code
    1. Duration: 00:00:05.07, start: 0.000000, bitrate: 162 kb/s
    2. Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 160 kb/s, 15 fps, 15 tbr, 15 tbn, 30 tbc (default)


    Das eigentliche Video wurde per Handbrake von WMV (proprietärer Codec) in MP4 konvertiert und die Framerate auf 25 fps geändert (vorher 4.12 ?( ):

    Code
    1. Duration: 02:35:04.42, start: 0.000000, bitrate: 448 kb/s
    2. Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 306 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    3. Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 135 kb/s (default)


    Ich bin nach dieser Anleitung vorgegangen und habe den Concat-Demuxer und das Concat-Protokoll verwendet.


    Demuxer:


    Code
    1. ffmpeg -f concat -i concat.txt -c copy output.mp4


    concat.txt

    Code
    1. file intro_1920x1080.mp4
    2. file 02072014_25.mp4
    3. file outro_1920x1080_25.mp4


    Ausgabe:


    Laut VLC hat das Video eine Länge von 1300 Stunden und nach dem Vorspann springt das Bild nicht um (der Ton läuft aber weiter).


    Concat-Protokoll:


    Die einzelnen Videos habe ich mittels

    Code
    1. ffmpeg -i $INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb -f mpegts -y $OUTPUT.ts


    in einen MPEG Transport Stream gewandelt und dann per

    Code
    1. ffmpeg -i "concat:intro_1920x1080.ts|02072014_25.ts|outro_1920x1080.ts" -c copy -bsf:a aac_adtstoasc -y output.mp4


    zu einem Video zusammengefügt. Ganz nach Anleitung eben ;D



    Das Video lässt sich zwar abspielen, ist aber nicht 100%ig synchron.


    Im Netz gibt es zwar einige Threads aus der FFmpeg-Mailingliste zur Verarbeitung von Streaming-Daten und den damit verbundenen Timestamp-Problemen, aber ich bin noch nicht fündig geworden.


    Kann mir vllt. jemand einen Tipp geben?



    Gruß,
    Marco

    Siemens Scenic, DVB-S Rev. 1.6, Airstar 2, 1 TB HD, Allnet ALL0281, AV-Board 1.3, Debian Squeeze