Anfänger braucht spezielle Hilfe wegen PTS

Started by Pucki, May 01, 2023, 12:57:33 PM

Previous topic - Next topic

Pucki

Ich bin neu hier und möchte mich erst mal entschuldigen wenn das Thema schon irgendwo war. Die Suche findet aber nix.

Ich habe jede Menge Videos die ich mit Avidemux schneiden will.  Das Problem ist. Sobald ich das Video lade, erstellt er einen Index (dauert einige Sekunden und ist ok.)  Dann kommt aber die PTS - Meldung und die Software rechnet 5 Min. bis das Video sauber geschnitten werden kann.

Nun meine Frage. Gibt es ein Möglichkeit diese "PTS Erstellung" vorab automatisch zu machen. ?? Ich stelle mir das so vor.

Ich sage ihm via Liste oder Verzeichnis wo die ganzen Videos sind. Er baut die PTS ein, und wenn er mag auch den Index und speichert sie neu ab. Dafür kann er gerne die ganze Nacht brauchen, da ich dann eh am Heia-machen bin ;)

Danach rufe ich das modifizierte Video auf, schneide es, und alles ist gut. OHNE das x-Minuten jedes mal warten muss.

Ich habe schon versucht das Problem "extern" mit FFMPEG zu lösen, aber das hat nix gebracht da Avidemux trotzdem die PTS an meckert und erstellen will.  Allerdings habe ich 0 Ahnung von den Parametern und habe ein Dutzend aus den Internet mit einer Testdatei versucht.

Ergebnis wie gesagt = 0

Ich habe gesehen und auch hier gelesen, das, das Programm SKRIPTE kann. Vielleicht geht es so.

Falls das mit einen Skript geht, aber das Skript nicht auf Verzeichnisse zugreifen kann, wäre das kein Problem. Dann schreibe ich kurz ein VB-Programm was das Skript (als Text-Datei) erstellt. Mein Problem ist das ich 0 Ahnung habe was in den Skript drin stehen muss.

Ich bräuchte in den Fall nur ein Funktionsfähiges Skript was bei 2 oder mehr Dateien (wegen der Wiederholung) die PTS hinzufügt.

Meine letzte Hoffnung ist nun das einer der Experten hier, eine Lösung hat. So ist es total langweilig und nervig, alle 30 Sekunden 5 Min. nix zu tun. ;(


Mit großer Hoffnung und VIELEN DANK im Voraus

Gruß

   Pucki

Pucki

Nach vielen Stunden googlen bin ich den Ziel ein ticken näher

Mein Video hat folgende Werte :

Input #0, avi, from 'der.avi':
  Metadata:    software        : Lavf54.17.100

  Duration: 01:35:48.92, start: 0.000000, bitrate: 1381 kb/s

  Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p(tv, bt470bg, progressive), 720x576 [SAR 64:45 DAR 16:9], 1176 kb/s, 25 fps, 25 tbr, 25 tbn

  Stream #0:1: Audio: mp3 (U(3x ein O in einer eckigen Klammer) / 0x0055), 48000 Hz, stereo, fltp, 192 kb/s


Was bedeutet : Es ist ein AVI - Container-Video.  Dateiname DER.AVI

Lt. diversen HP's soll angeblich FFMPEG in der Lage sein, die PTS die Avidemux ja braucht, hinzuzufügen.

Leider muss ich zu meiner Schande gestehen das ich durch die ganzen Parameter nicht durchblicke.

Vielleicht ist ja hier einer in der Lage mir mal den Befehl aufzuschreiben.

Auch dafür im Voraus  VIELEN DANK


Gruß

  Pucki




eumagga0x2a

Sieht nach Online-TVR aus, diese Quelle war (oder ist auch weiterhin) dafür berühmt, H.264 in dafür ungeeignete AVI-Container zu stecken. AVI unterstützt PTS grundsätzlich nicht (vom Design her nicht vorgesehen), daher unbrauchbar für Codecs, bei denen die Reihenfolge der Frames im Stream nicht mit der Reihenfolge der gezeigten Bilder übereinstimmt und die nicht allein vom Typ der Frames (I, P oder B) wie bei den alten Codecs wie Xvid abgeleitet werden kann.

In welchen Container sollen denn die AVIs umgewandelt werden?

Es wurden zwar im Forum einige tinyPy-Skripte gepostet (tinyPy ist die interne Skriptsprache von Avidemux), die das Gewünschte erledigen, jedoch müsste ich checken, wie sie funktionieren, wenn Rekonstruktion von PTS erforderlich ist. Ich werde versuchen, morgen ein wenig Zeit dafür zu finden, heute wird's leider nicht mehr.

Pucki

Quote from: eumagga0x2a on May 04, 2023, 09:15:25 PMIn welchen Container sollen denn die AVIs umgewandelt werden?

Ist mir eigentlich egal. Da das File danach eh in Avidemux rein soll. Es geht ja nur darum einen Job (PTS erzeugen) auszulagern. Weil das immer soo lange dauert.

Und du hast recht. Es sind OTR Videos. Der Dateiname ist "*.mpg.HQ.avi" Deklariert wird das als HQ Format. Die Dateigröße ist dabei ca. 1 GB für 90 min. Was ich o.k. finde. Qualität ist top. Was die da, wie reingesteckt haben, ist mir nicht bekannt. Aber die Videos laufen auf meiner Beere, und allen mir bekannten Playern. Das ist die Hauptsache ;)

Ich muss da i.d.R. nur Kopf und Hinterteil abschneiden.

Ansonsten sind das nämlich jede Menge verschwendete Lebenszeit jedes mal 3-5 Min. zu warten, bis das Avidemux die PTS erzeugt. Der Schnitt ist mit schreiben in ca. 1 Min. erledigt.


Quote from: eumagga0x2a on May 04, 2023, 09:15:25 PMIch werde versuchen, morgen ein wenig Zeit dafür zu finden, heute wird's leider nicht mehr.

Finde ich super das du mir da hilfst.

VIELEN DANK

Gruß

  Pucki

eumagga0x2a

Um die PTS-Abfrage zu unterdrücken, muss entweder die Anzeigestufe in den Avidemux-Einstellungen auf "Keine Meldungen anzeigen" gestellt oder Avidemux mit dem Kommandozeilenparameter --nogui gestartet werden (letzteres wirkt sich nur auch diese eine Sitzung aus, ersteres ist persistent). Dies bewirkt, dass die Standardoption – also PTS zu rekonstruieren – automatisch ausgeführt wird.

Das folgende Skript zum Remuxen in Matroska –

#PY  <- Needed to identify #
#
ui = Gui()
adm = Avidemux()
sep = "\\"
#
# Function to convert an individual video
#
def convert2mkv(filein,out):
    if not adm.loadVideo(filein):
        ui.displayError("oops","cannot load "+filein)
        return 0

    adm.videoCodec("Copy")
    if adm.audioTracksCount() > 0:
        adm.audioClearTracks()
        adm.audioAddTrack(0)
        adm.audioCodec(0, "copy")
    adm.setContainer("MKV", "forceAspectRatio=False", "displayWidth=1280", "displayAspectRatio=2", "addColourInfo=False", "colMatrixCoeff=2", "colRange=0", "colTransfer=2", "colPrimaries=2")

    filename = (splitext(filein))[0]
    filename += ".mkv"
    filename = basename(filename)
    return adm.save(out + sep + filename)
#
# Main
#
ext = "avi"

# -------- select input directory --------
inputFolder = ui.dirSelect("Select source folder")
if inputFolder is None:
    ui.displayError("Oops", "No source folder selected")
    return 0

# -------- read content --------
list = get_folder_content(inputFolder, ext)
if list is None:
    ui.displayError("Oops", "No " + ext + " files found in \"" + inputFolder + "\"")
    return 0

# -------- select output directory --------
outputFolder = ui.dirSelect("Select output folder")
if outputFolder is None:
    ui.displayError("Oops", "No output folder selected")
    return 0

if(inputFolder == outputFolder):
    ui.displayError("Error","Output folder cannot be the same as the input one")
    return 0

# -------- process --------
total = 0
counter = 0

for i in list:
    total += 1
    counter += convert2mkv(i, outputFolder)

if not counter:
    ui.displayInfo("Warning", "No files converted")
    return 0

if counter == 1:
    ui.displayInfo("Finished", "One file out of " + str(total) + " converted")
    return 0

ui.displayInfo("Finished", str(counter) + " files out of " + str(total) + " converted")
return 1

– als Textdatei mit Dateiendung ".py" abspeichern und an Avidemux entweder über "Datei" --> "Projekt-Skript" --> "Projekt ausführen" oder auf der Kommandozeile als Argument für --run übergeben. Das Skript setzt eine aktuelle Avidemux-Version voraus (idealerweise ein aktuelles Nightly Build).

Pucki

WOW.

Vielen vielen Dank für deine Mühe.  :)

Werde ich nachher mal testen.

Gruß

  Pucki

Pucki

Habe es gerade getestet. Ist perfekt.

Wenn ich die MKV jetzt lade erstellt er nur noch den Index und gut ist. Das ist fein so. :)

Jetzt kann der PC die nächsten Nächte erst mal alles umwandeln.

Ich bin dir sehr sehr dankbar, und gebe ehrlich zu, das hätte ich nie allein geschafft.


Gruß

   Pucki