TS Dateien mit H.264 Videostream verarbeiten

  • Demuxen geht gut mit:
    Video:

    Code
    mencoder.exe "Pfad zum Infile.ts" -of rawvideo -ovc copy -oac copy -noskip -o "Pfad zum VideoOutfile.264"

    Audio:

    Code
    mencoder.exe "Pfad zum Infile.ts" -of rawaudio -ovc copy -oac copy -noskip -o "Pfad zum AudioOutfile.ac3"

    Schneiden mit TSPE ist nerviger, der Versuch das wieder synchron in ein .mkv file zu bekommen schon krank und das vorhaben mehrere Files zusammen zu fügen mit TSPE oder TS Splitter und dann irgendwie synchron in ein .mkv file zu bekommen bis dato für mich nicht machbar. (ich teste noch; per VPN von unterwegs)
    Und Nein, mit Graphedit klappts nicht, da nur ein Teil des Files geremuxed wird und ich bis dato noch kein Programm a la ProjectX&Co gefunden habe was TS reparieren kann. (Versuche gerade mal ein remuxen mit der Trial von Xmuxer Pro. -> xmuxer crashed bei meinem file bei 90% :()

    Zitat

    Ich hab hier ne .264 Datei aus der ich den MPEG Stream bekommen möchte.

    .264 ist doch schon gedemuxed,.... (.264 = raw Stream eines h264 Encodes)

    Cu Selur

  • Ich hab hier nen H.264 Datei, die in einem Matroskacontainer zusammen mit 2 Tonspuren war.

    Leider kann ich die H.264 Datei nicht bearbeiten(Staxrip, AutoGK, GKnot) oder öffnen. Nur wenn ich die Endung .MPEG ind .264 ändere kann ich diese dann im VLC abspielen.

    Mit dem VLC kann ich auch nicht den richtigen Videostream entpacken, auch wenn ich das Video neu via VLC in MPEG2 oder 4 umwandeln will bekomme ich lauter Blockartefakte.

    Weißt du ne andere Möglichkeit?

    Fürs neuencodieren verwende ich bei MPEG2 25Mbit\s, wass würdest du empfehlen.

    mfg josch

  • Was willst den am Ende haben?
    Falls Du am Ende ne DVD willst, würde ich mal avi2DVD versuchen.
    Falls Du was anderes willst und das Inputfile normal in DirectShow basierten Playern abspielen kannst, sollte es mit Gordian Knot und dem entsprechenden Avisynth file gehen.

    Cu Selur

    Ps.:

    Zitat

    Ich hab hier nen H.264 Datei, die in einem Matroskacontainer zusammen mit 2 Tonspuren war.

    Dann haste schon gedemuxed -> wenn Du Begriffe benutzt sei Dir möglichst ihrer Bedeutung klar, ansonsten ist es sehr verwirrend.

  • Ja klar die Dateien waren in einem Matroskacontainer.

    Jetzt hab ich eine .mpeg und 2 .ac3 Dateien.

    Die .mpeg kann ich nur mit VLC(andere Player gehen nicht) öffnen wenn ich die endung .264 verwende.


    Ich will das File komplett neu mit XVid umwandel und zusammen mit den 2 .ac3 Dateien wieder in ne .mkv stopfen.


    mfg josch

  • Davon ausgegangen Du kannst das .mkv File in DirectShow basierten Playern (der VLC ist kein DirectShowPlayer!) abspielen, sollte:

    DirectShowSource("Pfad zum mkv File", fps=25, seek=false, [SIZE=-1]audio=false[/SIZE])

    eigentlich gehen.

    Falls Du das mkv File nicht abspielen kannst, dann würde ich empfehlen ffdshow und Haalis Splitter zu installieren und das .mkv und nicht irgendein mpeg als Basis zu nehmen.

    Cu Selur

    Ps.: Davon ausgegangen Du verwendest die neueste Version von DirectShowSource die ich im anderen Thread verlinkt habe.

  • Idealer weise sollte es ja so gehen:
    1. die Files in TSPE nach und nach laden und Schnittpunkte in die Liste packen
    2. Alle Schnitte nacheinander durchführen lassen und ein neues Transporstream File erhalten
    3. mit irgendeinem Tool nach mkv muxen

    Leider klappt das bei mir nicht und ich hab da einiges mit mkvtoolnix, graphedit, mencoder, vlc und ffmpeg versucht. :D
    Egal was ich gemacht habe es hat nur zu Asynchronen oder kaputten Files und Abstürzen geführt. :(


    Hier mal der einzige Weg der bis dato bei all meinen Files geklappt hat:
    (meine TS gehen i.d.R. über mehrere Files)

    1. mit TSP schneiden und für jeden Schnitt ein neues File erstellen
    2. jedes einzelne File in Graphedit öffnen und außer den Einlese-Filter alle Filter entfernen, Haalis Muxer einfügen, Filter verbinden, Playtaste drücken und so für jedes File ein neues mkv File erstellen
    3. mit Avi-Mux Gui die Files zusammenfügen.

    Ja, ich weiß es ist umständlich aber nur so geht es bei mir mit allen Clips die ich hier so habe.

    Cu Selur

    ps.: Die Werte die PTScalc bei mir so raus wirft haben leider nie gestimmt. :(

  • Hi,

    ich habe jetzt nach Selurs Anleitung 3 MKV-Datein erstellt, alle enthalten einen H.264 Stream + AC3-Audiodateien. Und sind scheinbar auch synchron.

    Bloß wie kriege ich die 3 Dateien zu jetzt einer Datei? AVI-Mux Gui stürzt mit einer Standard-Fehlermeldung ab und erstmal eine Datei die nur 448MB groß ist. Alle Dateien zusammen sind 1,11GB groß.

    Danke für eine Antwort!

  • Ich werfe die Dateien einfach per Drag&Drop alle in Avi-Mux Gui, wähle die dann alle zusammen aus und drücke dann 'gernerate data ..' und anschließen dann 'start'.

    Falls das so bei Dir nicht klappt ist es eventuell hilfreich wenn Du die Fehlermeldung mal postest. :)

    Cu Selur

  • So jetzt habe ich die fertige Datei, nur ist da noch ein Problem.

    Ich will das ganze mit x264 codieren, also demuxe ich die mkv-Datei mit MKVextract nur wird dadurch die Sound-Datei total asynchron. Gibts da irgendeinen Trick?

  • Zitat

    Ich will das ganze mit x264 codieren,..


    Warum? Die Datei ist doch schon h264 kodiert, die kann nur schlechter werden <- Sicher das Du weißt was Du da tust?

    Zitat

    .. also demuxe ich die mkv-Datei


    Warum demuxed du denn? Bzw. Warum vorher die Mühe den transportstream in einen mkv container packen,.. ?

    Zitat

    nur wird dadurch die Sound-Datei total asynchron. Gibts da irgendeinen Trick?


    Ich würde folgendes machen, wenn ich (mir momentan unsinng erscheinend) das Material mit x264 komprimieren will:
    1. das mkv per Avisynth MeGui füttern (hierbei neuste DirectShowSource mit fps Angabe und seek=false verwenden) und encoden.
    2. das mkv und das neu erstellte File in avi-mux gui laden, für jedes einzeln 'generate .. ' aufrufen und dann unten nur den Audiostream des mkv und den Videostream des neuen files nehmen und das Ganze als mkv speichern.

    Cu Selur

  • Das Material hat im Moment eine Größe von 1920x1088, da mein Bildschirm aber nur 1280x1024 Pixel darstellen kann, verkleinere ich das Bild auch gleichzeitig auf 1280x720. Und durch neucodieren, kann man nochmal ordentliche Speicherplatz sparen.

    Was bewirkt eigentlich die Angabe seek=false? Bisher lasse ich das weg und habe damit keine Probleme, bloß wenn ich das setze stürzen ständig die Programme (vdub usw.) ab oder liefern irgendeinen Müll als Ergebniss.

    Aber danke für deinen Tipp, das werde ich gleichmal testen. ;) Naja vorher muss MeGui mit ner anderen Encodierung fertig werden. :)

    Edit: Ich habe das jetzt mal getestet und es funktioniert bestens! Danke nochmal!
    Nur an der Schnittstelle ist etwa für ne Sekunden kein Ton, aber das liegt soweit ich weiß an TSPE.

  • Zitat

    Was bewirkt eigentlich die Angabe seek=false? Bisher lasse ich das weg und habe damit keine Probleme, bloß wenn ich das setze stürzen ständig die Programme (vdub usw.) ab oder liefern irgendeinen Müll als Ergebniss.


    Die neue DirectShowSource.dll und das seek=false sorgt dafür, dass beim Encoden keine grauen Frames entstehen. ;)

    Zitat

    Gibts irgendeinen Trick wenn man mit TSPE schneidet? In der Vorschau in TSPE passt alles, aber nach dem schneiden beginnt die geschnittene Datei an einer ganz anderen Stelle, paar Sekunden weiter.


    Das Problem liegt glaub ich daran, dass TSPE nicht so 100%ig mit IDR und I Frames klar kommt. ;)

    Folgendes klappt bei mir wunderbar:
    1. ungefähr an die Stelle springen (per Maus&Regler) an der man schneiden will
    2. mit -IF/+IF zu der Stelle gehen an der man Schneiden will
    3. 'Test' drücken, nun wird ein kleiner Teil um die Stelle als Transportstream gespeichert, diesen guckt man sich an und verschiebt dann mit -IF/+IF die Stelle etwas (bei mir meist 2x +/i IF) und testet wieder.
    4. wiederhole 3. für Start- und Endschnittpunkt
    5. füge den Schnitt in die Schnittliste ein und lasse TSPE per Edit die Änderung vornehmen

    Cu Selur

  • Ah, danke! Jetzt kann ich ordentlich schneiden.

    Und das mit seek=false muss ich mal mit der fertigen Datei testen.

    Edit: Trotz neuster DirectShowSource stürzen alle Probleme, ohne Fehlermeldung ab, wenn seek=false gesetzt wurde.

  • So, ich habe jetzt endlich eine Lösung für das SyncMuxing-Problem gefunden. Hab's bis jetzt erst einmal ausprobiert aber da hat alles 100% gepasst.

    Quelle war ein TS File mit H264 Video und 2x AC3 Sound.
    - Mit TSPE die Schnittpunkte raussuchen
    - Mit meinem eigenen Programm schneiden (weils doppelt so schnell ist :-))
    - Mit GraphEdit nur das Video in ein Matroska File Muxen
    - Mit xport die beiden Audiospuren demuxen (mit Parameter "-n" !)
    - Mit PTScalc das Delay berechnen
    - Mit AVI Mux GUI das Video Matroska File + AC3 Files muxen (mit Delaywerten von PTScalc)

    zu TSPE:
    Als erstes sollte man immer einen scan machen sonst funktioniert das Springen zu den Frames nicht richtig. Die Vorschau liegt auch immer ein paar Frames daneben, aber für das gibts ja die Test Funktion.

    zu TSCut (mein eigenes Programm):
    Ich hab mir dieses kleine Command Line Programm geschrieben weil TSPE anscheinend wirklich 188b liest und dann 188b schreibt, was nicht gerade sehr schnell ist (z.B. 11min mit TSPE und nur 4min mit TSCut). Ich werds die nächsten Tage online stellen wenn ich dazu komme.

    zu xport:
    Mit dem Parameter "-n" versucht xport nicht die Audiospur zu synchronisieren. Nur wenn man dieses Parameter mit angibt stimmt der Wert von PTScalc! xport selbst gibt die PTS Differenz schon in "PTS Units" an, da im ZIP auch der Quellcode dabei war könnte man die Umrechnung in ms leicht ins Programm mit einbauen. Wenn mir jemand raussuchen kann welche Konstante ich für AC3 und MP2 verwenden muss würde ich das machen.

    zu PTScalc:
    Leider kennt das Programm nur die 1. Tonspur (da die Different laut meinen Berechungen aber nur die 2 Stelle hinterm Komma betroffen hat wars kein Problem).


    Wenn man nur eine Tonspur hat kann man auch gleich in Graphedit den Ton mit muxen. Beim Muxer dann den Delaywert aus PTScalc verwenden.


    Zur Bearbeitung mit AviSynth:
    Manchmal funktioniert bei mir der MpegSplitter aus dem MPC besser manchmal der von Haali. Also am besten mit Graphedit einen Graphen erstellen und diesen bei DirectShowSource angeben. seek=false ist immer gut!


    Ich möchte mich an dieser Stelle bei allen die auch fleissig rumprobiert haben und ihre Ergebnisse hier oder im englischen Forum geposted haben bedanken!

  • - TSCut ist mir bei SkyHD Streams immer abgeschmiert. :(

    Zitat

    Ich werds die nächsten Tage online stellen wenn ich dazu komme.


    Nice :)

    - PTScalc, liefert der bei Dir richtige Werte? (hat bei mir nur Unsinn von sich gegeben); hatte aber nie xport zum Demuxen benutzt.

    Zitat

    Wenn man nur eine Tonspur hat kann man auch gleich in Graphedit den Ton mit muxen. Beim Muxer dann den Delaywert aus PTScalc


    Ich hab mich um den Delay nicht gekümmert und direkt (geschnittener) ts -> mkv mit Haalis Muxer gemacht und das File wurde synchron. PTScalc lieferte immer merkwürdige Werte zurück, was natürlich daran leigen mag, dass ich xport nicht verwende.

    ---------

    könntest Du eventuell auch die ganzen Kommandozeilen Parameter&Co posten die DU verwendet hast?

    Cu Selur

Jetzt mitmachen!

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