PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Über Kommandozeile Schneiden



vayne
15.09.2008, 11:30
Hallo erstmal.

Ich finde nirgends den Befehl mit dem ich über ein Kommandozeilenskript etwas zwischen 2 markern löschen kann.

Möchte nicht nur Werbung sondern auch uninteressante Sachen rausschneiden, quasi nur das wichtigste drinhaben, aber alles über n Skript machen, weil ich vorher festlege in einer Textdatei von wann bis wann ich etwas vom Video haben möchte.

Kann da jemand helfen?
Der Befehl würd mir auch schon reichen^^

Grüße,
vayne

PeGu
15.09.2008, 11:34
Da würde ich dir raten, statt eines Programms, bei dem die GUI ja gerade der Witz ist, eines zu wählen, das von Haus aus über Kommandozeile arbeitet. Und da wäre der MEncoder (http://mplayerhq.hu) die ideale Variante. Da kannst du Start- und Endpunkt des Schnitts problemlos über Parameter eingeben (evtl. sogar aus der Textdatei automatisch rauslesen).

SGE
16.09.2008, 01:06
was du meinst ist mplayer mit edl-datei, oder? Das ist aber nur zum abspielen.
das man mit dem mencoder schneiden kann wäre mir absolut neu.

bowmore
16.09.2008, 21:19
Arbeitet das framegenau?
Laut manpage kann man ja Millisekunden angeben?

bowmore
17.09.2008, 09:20
Ich mach in den nächsten Tagen mal Vergleichtests.

Ich habe mal getestet:
Der Schnitt ist framegenau, sofern man einen gewissen Offset berücksichtigt.
Allerdings habe ich an den Schnittstellen leichte Artefaktbildungen.
Außerdem ist der Schnitt mit Avidemux wesentlich flotter, da ich mit mencoder erst die einzelnen Schnitte erstelle und hinterher zusammenfügen muss.

Ich habe mit TV_total_08.09.15_23-15_pro7_55_TVOON_DE.mpg.avi
getestet.

mencoder -> 1 Minute 30 Sekunden
avidemux -> 41 Sekunden

Ich bleibe also beim guten alten avidemux_cli ;-)

Aber für die Fragestellung hier im Thread ist das wohl eine einfache und gute Lösung.

Gruß
bowmore

SGE
17.09.2008, 13:32
Das mit den Artefakten ist klar, findet ja auch kein smart rendering statt.
Aber wie immer unter Linux gibts es für ein Problem mehrere Lösungen. Ist auch ne interessante Technik, aber die Vorteile eines avidemux kann das natürlich nicht toppen.
Wenn man vorher Schnittpunkte festlegen will muß man sich das doch sowieso in einem Schnittprogramm oder mit mplayer anschauen,oder?

PeGu
17.09.2008, 14:59
Das mit den Artefakten ist klar, findet ja auch kein smart rendering statt.


Richtig; daher sähe es evtl. wieder anders aus, wenn man sowieso noch umcodieren möchte.?

Aber wie immer unter Linux gibts es für ein Problem mehrere Lösungen. Ist auch ne interessante Technik, aber die Vorteile eines avidemux kann das natürlich nicht toppen.
Wenn man vorher Schnittpunkte festlegen will muß man sich das doch sowieso in einem Schnittprogramm oder mit mplayer anschauen,oder?

Ja. (Ich oute mich mal: Ich schneide mit der Avidemux-GUI, allerdings auch ohne cutlist, da ich immer gerne selbst entscheide -- auch wenn's Zeit kostet).

anatol.at
18.09.2008, 17:22
Ohne es noch einmal nachgeprüft zu haben:
Bei mir schnitt der MEncoder (unter Win32) nur an Keyframes!
Dafür mehrere Teile auf einmal:

mencoder -oac copy -ovc copy -ss $ANF1 -endpos $END1 -ss $ANF2 -endpos $END2 -o $DATEI-2-tmp.avi $DATEI.avi
(so oder so ähnlich)

Ich hoffe das war hilfreich und stiftet nicht nur Verwirrung...

Ich persönlich verwende MEncoder um fehlende Anfänge/Enden dazuzukleben.

SGE
18.09.2008, 21:14
Also das mit der Aneinanderreihungsnummer der -ss funktioniert in meinen Augen so nicht.
Hier nimmt der nur den letzten angebenen Optionen als Ausschnitt an. Kann mir nicht vorstellen das sich der mencoder in cygwin anders verhält.

Jedenfalls kann mit Pegus Methode einfach die Zeitangaben aus einer Cutlist übernehmen, hab ich gerade mal mit der Scrubs-Folge von gestern abend probiert.

[Cut0]
Start=342.72
Duration=737.44
[Cut1]
Start=1707.12
Duration=423.72

mencoder -oac copy -ovc copy -ss 342 -endpos 737
mencoder -oac copy -ovc copy -ss 1707.12 -endpos 423.72
Aneinandergeklebt dann einfach mit avimerge.
Aber da er nur an den Keyframes schneidet hat man ein Frame von der Werbung mit drin, das taucht mit der gleichen CL und Avidemux nicht auf. Könnte aber auch an multicut liegen, das die Zeitangaben vorher in Frames umrechnet.

bowmore
19.09.2008, 08:17
Also das mit der Aneinanderreihungsnummer der -ss funktioniert in meinen Augen so nicht.
Hier nimmt der nur den letzten angebenen Optionen als Ausschnitt an. Kann mir nicht vorstellen das sich der mencoder in cygwin anders verhält.
...
Aber da er nur an den Keyframes schneidet hat man ein Frame von der Werbung mit drin, das taucht mit der gleichen CL und Avidemux nicht auf. Könnte aber auch an multicut liegen, das die Zeitangaben vorher in Frames umrechnet.

Mehrere -ss und -endpos geht bei mir definitiv nicht!
Aber mencoder schneidet m.M. nicht nur keyframes, allerdings hat man diese unschönen Artefakte an den Schnittstellen.
Vermutlich muss man an den Schnittstellen einfach einen Offset beachten.
Einfach mal 0.04 bei den Zeiten abziehen (1 Frame)



Vielleicht hat ja doch mal jemand Lust, das Skript so zu gestalten, dass man cutlist-Angaben (bzw. Zeitlisten) mit beliebig vielen Schnitten an MEncoder übergeben kann. Das war ja schließlich vaynes Wunsch (im Startpost)?


Für OTR Filme erledigt multicut genau das.
(In meiner aktuellen Version ist sogar noch mein mencoder Test auskommentiert erhalten)

Und für private Videos sehe ich keinen Sinn in einem solchen Skript, erledigt Avidemux das gewünschte doch in einem Rutsch.

Gruß
bowmore

SGE
19.09.2008, 13:17
Aber mencoder schneidet m.M. nicht nur keyframes, allerdings hat man diese unschönen Artefakte an den Schnittstellen.

Das mplayer-Wiki sagt das aber auch so.

Crop/sub-section videos

You can use the -ss and -endpos parameters to specify start and end point, but it can only start on the nearest keyframe. So, depending on how frequently keyframes were placed into the video, the actual start time may be as much as 10 seconds off.
http://en.wikibooks.org/wiki/Mplayer#Crop.2Fsub-section_videos
Man kann sogar MB als Einheit bei -endpos angeben und nach Größe schneiden, wußte ich auch noch nicht.

bowmore
19.09.2008, 14:37
mencoder -oac copy -ovc copy -ss 00.04 -endpos 00.12 -o test1.avi EUReKA_Die_geheime_Stadt_08.07.14_21-10_pro7_60_TVOON_DE.mpg.avi
mencoder -oac copy -ovc copy -ss 00.04 -endpos 00.16 -o test2.avi EUReKA_Die_geheime_Stadt_08.07.14_21-10_pro7_60_TVOON_DE.mpg.avi
mencoder -oac copy -ovc copy -ss 00.04 -endpos 00.20 -o test3.avi EUReKA_Die_geheime_Stadt_08.07.14_21-10_pro7_60_TVOON_DE.mpg.avi


test1.avi besteht aus 3 Frames
test2.avi besteht aus 4 Frames
test3.avi besteht aus 5 Frames

bowmore
20.09.2008, 13:23
Und @bowmore:
teste doch mal:

mencoder -oac copy -ovc copy -ss 00.04 -endpos 00.12 -o test1_0.avi EUReKA_Die_geheime_Stadt_08.07.14_21-10_pro7_60_TVOON_DE.mpg.avi
mencoder -oac copy -ovc copy -ss 01.04 -endpos 00.12 -o test1_1.avi EUReKA_Die_geheime_Stadt_08.07.14_21-10_pro7_60_TVOON_DE.mpg.avi

dann sollte dir auffallen, dass beide ausgabe ident sind. zwar 3 Frames aber die identen ersten 3 Frames ab dem Keyframe! (ist zumindest bei mir so...)

Bei mir nicht, ich hänge mal jeweils den ersten Frame hier an.
Wobei das zweite Bild Frame 100 im original ist, und nicht wie angegeben Frame 26.

mencoder schneidet also den Anfang an einem Keyframe, das Ende jedoch wie gewünscht.
Das macht ja auch Sinn.

anatol.at
20.09.2008, 17:48
in der annahme dass zwischen sekunde 0.04 und 1.04 kein keyframe ist, müssten die frames doch rein logisch ident sein oder nicht?

Beispiel: Ein Video mit Frames 1-9 mit F3 als Keyframe.
Schneidest du 3 Frames ab F4 bekommst du 3,4,5 (ab Keyframe 3)
Bei 3 Frames ab F6 aber ebenso 3,4,5 (weil wieder ab Keyframe 3)

außer da geschieht mehr als nur an keyframes zu schneiden. (vielleicht nimmt er in obigem beispiel F3 F5 F6 bzw F3 F7 F8, das würde erklären, warum bei mir das bild nicht ganz korrekt dargestellt wird...)

@SGE: ok, recodieren war das falsche wort... aber nur kopieren ist auch nicht... (dazu passieren zu viele unerklärbare dinge dabei / ist es zu undurchschaubar/unlogisch)

Ich habe mich vor längerem seeeehr lange damit beschäftigt, bis es mit zu blöd wurde... vor diesem Punkt stehe ich beinahe schon wieder. vielleicht lasse ich mich dadurch zu falschen schlüssen treiben...

Mein Fazit: MEncoder ist zwar das mMn beste Tool dieser Richtung, aber ohne SmartCopy/mit falschem StreamCopy leider nicht zu gebrauchen.

SGE
20.09.2008, 18:32
@SGE: ok, recodieren war das falsche wort... aber nur kopieren ist auch nicht... (dazu passieren zu viele unerklärbare dinge dabei / ist es zu undurchschaubar/unlogisch)


:confused: -v bitte

vayne
30.09.2008, 21:01
Kann man vll an den Schnittstellen einfach die Keyframes setzen um dann da genau zu schneiden (dass die Datei größer wird ist mir klar, aber man kanns danach ja wieder neu encodieren^^)?

vayne
07.10.2008, 12:24
So, hab jetzt einfach als huffyuv codiert, geschnitten, und dann in avi codiert.
Funktioniert auf den frame genau, nimmt dafür aber auch 80gb weg(die huffyuv + schnitte davon).
Wenn man Zeit und Festplattenspeicher hat, ist das eine funktionierende, Lösung, wenn auch ein work-around.
Also, wenn jemand eine sauberere Lösung hat, bitte posten!

Grüße,
vayne