Postprocessing Tool CL Linux für Videos

  • hallo,

    ich sitze momentan an einer sehr kniffeligen aufgabe und wollte bei den experten einmal fragen, ob es sowas ähnliches schon gibt oder ob jmd eine idee hätte, wie man an diese aufgabe herangehen könnte?

    vielen dank und grüße

    alex

    #############

    "Aufabe ist es, eine command-line Anwendung für Linux zu finden/schreiben, mit der man die Spurlänge eines kodierten Videos verändern kann.

    Also Input dient ein Video, bei dem die Ton- und Videospur unterschiedlich lang ist. Der Output soll nach dem post processing ein Video sein, bei dem Bild- und Tonspur exakt die gleiche Länge haben.

    Diese Anwendung sollte im Idealfall möglichst performant sein, da das Postprocessing ein zeitkritischer Prozess im Backend ist. Insbesondere der Speicher- und HDD-Durchsatz ist so weit wie möglich zu minimieren."

  • Da keine genaueren Angaben bzgl. eines sinnigen Delays gefordert sind:

    1. Audio- und Videolänge ermitteln (z.B. Infos von Mplayer parsen)
    2. Delay durch umschreiben des Headers ändern (MPlayer mit -delay oder -audio-delay)

    Aber ohne zu wissen woher der Delay stammt ist das eine nicht zu empfehlende Methode und macht auch nur Sinn, wenn der angeschlossene Player den Delayflag erkennt. ;)
    (Man könnte mit mplayer natürlich auch den Audiostream entsprechend neu encoden damit man nicht auf das Delay Flag angewiesen ist.)

    Ohne weitere Einschränkungen vor allem bzgl. des Formats der Audio-/Videodateien, Container usw. ist mplayer/ffmpeg der einzig sinnige Weg, es sei denn man hat viel Zeit und KnowHow. ;)

  • 1. Audio- und Videolänge ermitteln
    (wird z.B. mit Hilfe des Tools MediaInfo erledigt)


    2. Delay
    Es soll die Spur nicht verzögert werden, sondern beide Spuren auf die exakt gleiche Länge gebracht werden, bspw. durch Schneiden am Ende.

    Der Delay entsteht sobald Video und Audio mit unkomprimiertem AVI als Quelle encodiert werden.

    Das Video soll später auf diversen Playern abgespielt werden können, deshalb auch keine properitären Flags.

    Vor allem geht es um AVI/Xvid/mp3 und MP4/H.264/AAC Videofiles.

  • 1. Audio und Videolänge sind nieh gleichlang, weil sampling und framerate sogut wie nie auf den selben Zeitpukt fallen.
    2. Wie beschneiden dürfte ja wohl nicht so schwer sein. Löst aber nicht dein Problem, was ja unterschiedlich schnelle Video und Audio spuren sind.
    3. Sollten die Audio- und Videodaten wirklich gleichzeitig aufgenommen worden sein und gleich lang sein, dürften sie nach dem Encoding nicht unterschiedlich lang sein. -> Überprüfe die einstellungen des Encodierprogramms/-programme.

    Ansonsten werfe mal einen Blich auf avidemux und transcode(

    AC-Sama(Robert Vincenz)
    (werde für das -Chan zu alt :zunge: )

  • 1. Audio und Videolänge sind nieh gleichlang, weil sampling und framerate sogut wie nie auf den selben Zeitpukt fallen.


    So generell ist die Aussage falsch, denn beispielsweise bei einer Aufnahme (gleichzeitiger Anfang und Ende der Spuren) mit 25 fps Video und MPEG-Audio (75 fps) sind die Video- und Audiospur in der Regel gleich lang. Das gleiche gilt, wenn so ein Video mit MPEG2Schnitt oder den MPEG Tools des TMPG Encoder geschnitten werden.

    Also Input dient ein Video, bei dem die Ton- und Videospur unterschiedlich lang ist. Der Output soll nach dem post processing ein Video sein, bei dem Bild- und Tonspur exakt die gleiche Länge haben.


    Präzise wie eine Sonnenuhr.

    Mal ein paar Gedanken:

    • Je nach Videoformat sind im Stream verschiedene Timestamps enthalten. Damit lassen sich Spieldauer und Delay bestimmen.
    • Wie exakt ein Angleichen der Spiellängen von Video und Audio möglich ist, kommt auf die verwendeten Formate an. Dazu müssen in der Regel elementare Streams vorliegen. Es muss also demuxt werden.
    • Möglichkeiten zum Angleichen sind:

      • Schneiden an Anfang bzw Ende des Videos,
      • Schneiden an anfang bzw Ende des Audios,
      • Einfügen von Frames vor bzw hinter dem Video und
      • Einfügen von Stille vor bzw hinter dem Audio
    • Anschließend wird wieder gemuxt.

    Gruß Frank

  • danke für die antworten.

    Zitat

    Zitat ac_chan
    -------------------------------
    3. Sollten die Audio- und Videodaten wirklich gleichzeitig aufgenommen worden sein und gleich lang sein, dürften sie nach dem Encoding nicht unterschiedlich lang sein. -> Überprüfe die einstellungen des Encodierprogramms/-programme.
    -------------------------------


    Die Sourcefiles sind 100% sync.
    Encodiert wird bspw. mit ffmpeg:

    x264
    ffmpeg -y -i in.avi -aspect 4:3 -s 320x240 -r 25 -vcodec h264 -level 13 -b 300k -flags +loop -flags2 +mixed_refs -me_method 2 -subq 6 -trellis 2 -refs 3 -coder 0 -me_range 16 -g 250 -qmin 10 -qmax 51 -qdiff 4 -acodec aac -ac 2 -ar 44100 -ab 80 out.mp4

    xvid
    ffmpeg -y -i in.avi -aspect 4:3 -vcodec mpeg4 -vtag xvid -s 320x240 -r 25 -b 350k -g 250 -flags +umv -trellis 2 -qmin 2 -qmax 30 -mbd 2 -acodec mp3 -ac 2 -ar 44100 -ab 80 out.avi

    Oder mit VirtualDub. Die Versuche mit mencoder ergaben ebenfalls keine syncen Files.

    Als Input dient ein aus Adobe Premiere exportiertes unkomprimiertes AVI.


    Das Schneiden hab ich schon probiert. Mit Hilfe von mencoder bei den AVIs oder mp4box bei mp4's ist je nach Länge des Videos die Anzahl der abgeschnittenen Frames leider recht groß.

    Das Einfügen von Stille in der Audiospur war ebenfalls erfolglos, da ich kein Audio in der korrekten Länge erzeugen konnte. Bei avimerge aus dem Transcode-Projekt gibt es einen Parameter "-c", der eigentlich diese Aufgabe leisten sollten, dies aber meiner Erfahrung nach nicht tut.

Jetzt mitmachen!

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