[gelöst] Werbung aus Spielfilm raus schneiden mittels ffmpeg

Sound, Digitalkameras, TV+Video und Spiele.
Antworten
Benutzeravatar
B52
Beiträge: 427
Registriert: 07.08.2011 12:35:02
Wohnort: Bern (CH)
Kontaktdaten:

[gelöst] Werbung aus Spielfilm raus schneiden mittels ffmpeg

Beitrag von B52 » 23.07.2021 20:51:43

Hallo Community

kürzlich habe ich einen Spielfilm mit dem simplescreenrecorder aufgenommen und den Spielfilm dann mittels ffmpeg geschnitten.

Code: Alles auswählen

ffmpeg -i output.mkv -codec copy -ss 18 -t 7084 alita_battleangel.mkv
das hat tipptopp geklappt und der Film beginn und endet sekundengenau.


Nun möchte ich die Werbung raus schneiden.

Werbung von: 53:20 (= 3200 s) bis: 59:41 (= 3581 s)

Meine Idee war nun, zwei Filmsequenzen zu machen:

Code: Alles auswählen

ffmpeg -i alita_battleangel.mkv -codec copy -t 3200 alita_battleangel_01.mkv
ffmpeg -i alita_battleangel.mkv -codec copy -ss 3581 alita_battleangel_02.mkv
und diese dann wieder zusammenzufügen:

Code: Alles auswählen

cat alita_battleangel_01.mkv alita_battleangel_02.mkv > alita_battleangel_de.mkv
Das Vorhaben scheitert jedoch bei der zweiten Filmsequenz alita_battleangel_02.mkv

Dieser Abschnitt beginnt zwar Sekundengenau dort, wo ich den Schnitt setzten möchte.
Leider fehlt in den ersten 5 Sekunden das Bild, während der Ton zu Beginn da ist.

B52
Zuletzt geändert von B52 am 24.07.2021 17:25:09, insgesamt 1-mal geändert.
«Der Vorteil der Klugheit besteht darin,
dass man sich dumm stellen kann.
Das Gegenteil ist schon schwieriger.»
(Kurt Tucholsky)

fischig
Beiträge: 3598
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Werbung aus Spielfilm raus schneiden mittels ffmpeg

Beitrag von fischig » 23.07.2021 21:02:57

Soweit mir bekannt, kannst du immer nur an sogenannten I-Frames schneiden. So gern ich ffmpeg nutze, aber mir ist nicht bekannt, wie ich die dem Programm beim Schneiden angeben könnte. Wenn Werbung IM Film ist, dann hast du offenbar kommerzielles TV aufgenommen. Das habe ich seit Jahren aufgegeben. Diese Firmen setzen ihre I-Frames (bei denkbar schlechter Videoqualität) gekonnt so, dass du immer verlierst. Ok, das Schweizer öffentlich-Rechtliche (sofern man das vergleichen kann) beschränkt sich auf eine Werbeunterbrechung, wenn ich recht erinnere. Ich habe das früher mit avidemux gemacht. Das listet dir die in Frage kommenden I-Frames beim Spulen. Und wenn's SF1 sein sollte, könnte das immer noch ganz akzeptabel funktionieren.

Benutzeravatar
schorsch_76
Beiträge: 2535
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: Werbung aus Spielfilm raus schneiden mittels ffmpeg

Beitrag von schorsch_76 » 23.07.2021 21:26:10

Mit Debiankdenlive kannst du Framegenau schneiden.

Benutzeravatar
Tintom
Moderator
Beiträge: 3029
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Werbung aus Spielfilm raus schneiden mittels ffmpeg

Beitrag von Tintom » 23.07.2021 21:37:00

B52 hat geschrieben: ↑ zum Beitrag ↑
23.07.2021 20:51:43
[...]
und diese dann wieder zusammenzufügen:

Code: Alles auswählen

cat alita_battleangel_01.mkv alita_battleangel_02.mkv > alita_battleangel_de.mkv
Soweit ich weiß funktioniert das simple Aneinanderreihen bei Filmen vielen Videoformaten* nicht bzw. es produziert fehlerhafte Dateien. Bei ffmpeg gibt es dafür den Filter concat.

*siehe https://unix.stackexchange.com/question ... -using-cat

Benutzeravatar
B52
Beiträge: 427
Registriert: 07.08.2011 12:35:02
Wohnort: Bern (CH)
Kontaktdaten:

Re: Werbung aus Spielfilm raus schneiden mittels ffmpeg

Beitrag von B52 » 23.07.2021 21:46:37

fischig hat geschrieben: ↑ zum Beitrag ↑
23.07.2021 21:02:57
Wenn Werbung IM Film ist, dann hast du offenbar kommerzielles TV aufgenommen. Das habe ich seit Jahren aufgegeben. (...) Ich habe das früher mit avidemux gemacht.
@all - Danke für den Input!
Ja, hab kommerzielles TV aufgenommen. avidemux und kdenlive schau ich mir an. Falls es dann zu aufwändig wird, lass ich es sein, denn 6 min Werbung ist nunmal kein Weltuntergang.
Tintom hat geschrieben: ↑ zum Beitrag ↑
23.07.2021 21:37:00
Soweit ich weiß funktioniert das simple Aneinanderreihen bei Filmen vielen Videoformaten* nicht bzw. es produziert fehlerhafte Dateien. Bei ffmpeg gibt es dafür den Filter concat.

*siehe https://unix.stackexchange.com/question ... -using-cat
Danke auch für diesen Hinweis.

B52
«Der Vorteil der Klugheit besteht darin,
dass man sich dumm stellen kann.
Das Gegenteil ist schon schwieriger.»
(Kurt Tucholsky)

fischig
Beiträge: 3598
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Werbung aus Spielfilm raus schneiden mittels ffmpeg

Beitrag von fischig » 23.07.2021 21:57:18

Falls es dann zu aufwändig wird
Aufwendig wird das nciht, aber es kommt Müll heraus an den Schneidestellen. Für mich immer noch besser als 5Min. unsägliche Werbung. :P (A propos: bei deutschen kommerziellen sind's in der Regel acht bis neun Minuten). Insgesamt kosten die dich pro Video ca. 25 Min Lebenszeit.

Benutzeravatar
B52
Beiträge: 427
Registriert: 07.08.2011 12:35:02
Wohnort: Bern (CH)
Kontaktdaten:

Re: Werbung aus Spielfilm raus schneiden mittels ffmpeg

Beitrag von B52 » 23.07.2021 22:01:25

fischig hat geschrieben: ↑ zum Beitrag ↑
23.07.2021 21:57:18
Aufwendig wird das nicht, aber es kommt Müll heraus an den Schneidestellen.
Dann lass ich es sein und nutze die Werbepause, um ein kühles Bier zu holen...
«Der Vorteil der Klugheit besteht darin,
dass man sich dumm stellen kann.
Das Gegenteil ist schon schwieriger.»
(Kurt Tucholsky)

fischig
Beiträge: 3598
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Werbung aus Spielfilm raus schneiden mittels ffmpeg

Beitrag von fischig » 23.07.2021 22:04:47

Dem habe ich nichts entgegenzusetzen, aber probier doch erstmal kdenlive. Vielleicht ist das ja ganz brauchbar.

Ich hab's z-B. auch mit P-Frames versucht. war manchmal durchaus sinnvoll. Aber wie du schon sagst: Aufwand und Ertrag müssen irgendwie passen! :wink:

MaGe
Beiträge: 1708
Registriert: 01.06.2014 17:12:16

Re: Werbung aus Spielfilm raus schneiden mittels ffmpeg

Beitrag von MaGe » 23.07.2021 23:28:08

B52 hat geschrieben: Nun möchte ich die Werbung raus schneiden.
Werbung aus Spielfilm raus schneiden mittels ffmpeg

Warum nicht mit mkvmerge.
Muster: Anfang 00:05:06.250 Ende 01:42:07.500

Code: Alles auswählen

 mkvmerge --split timecodes:00:05:06.250,01:42:07.500 -d 0 -a 4 -S Frau_Holle.m2t -o Frau_Holle.mkv 
Videospur = -d 0 ( optional muß nicht )
Audiospur = -a 4 ( 1, 2, 3, 4 u.s.w )
Untertitelspur = -S ( Keine )



gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

wanne
Moderator
Beiträge: 7447
Registriert: 24.05.2010 12:39:42

Re: Werbung aus Spielfilm raus schneiden mittels ffmpeg

Beitrag von wanne » 24.07.2021 12:00:55

Grundsätzlich:
1. mkvs/webm oder gar mp4/mov schneiden ist leider kompliziert. Das geht mit ts einfach viel besser/einfacher. Die kannst du auch per cat aneinander setzen (solltest sie aber nicht per split schneiden, weil dir da ein paar s verloren gehen.) Zumindest für mkv gibt es einige spezialisierte Tools. Wenn nicht: ffmpeg -i alita_battleangel.mkv -c copy alita_battleangel_02.ts ist in null Komma nichts durchgefüht. Danach auf ts arbeiten und zurück nach mkv umtopfen tut nicht weh macht die sachen aber viel einfacher.
2. Die Idee ist von Videokompression ist es, Redundanzen – Also mehrfach vorhandene Information zu entfernen. Entfernst du jetzt nochmal zusätzlich Information ist vorher doppelt vorhandene Information eventuell doppelt entfernt und entsprechend nicht mehr vorhanden.
Die meiste proffessionelle Software oder kdenlive umgeht das Problem, indem sie dekomprimieren, schneiden, neu komprimieren. Das vermeidet auch direkt Inkonsistenzen wie codeceinstellungswechsel oder temproäre Bandbreitenüberschreitungen im Film. Ist dafür natürlich sehr zeitaufwändig und verlustbehaftet.
Auf für ffmpeg ist dieses Verhalten default.
Deine -codec copy-Option schaltet dieses verhalten ab. Danach kannst du nur noch an den dafür vorgesehen Stellen über die absichtlich keine Redundanzen entfernt werden schneiden.
Du kannst natürlich auch beide Methoden Kombinieren zuerst große Stücke mit copy und dann kleinere ohne schneiden. – Du musst dann aber extrem aufpassen, dass du sauber die selben codec Einstellungen etc. verwendest....
Prinzipiell kann man auch an der "falschen" Stelle schneiden und dann versuchen die Probleme die das verursacht zu reparieren. (wegkomprimierte Redundanzen wider an anderer Stelle einfügen, einige Frames stark komprimieren, damit die Bandbreitenlimits eingehalten werden...). Für einige Codecs gibt es da Tools. In den 00ern hat man oft Filme gesehen wo dass schief gelaufen ist. Für moderne, komplexe Codecs (h.264 und neuer) kenne ich keine derartigen Tools – Das ist zu kompliziert.
Leider fehlt in den ersten 5 Sekunden das Bild, während der Ton zu Beginn da ist.
Eigentlich gab es früher mal 2 Varianten entweder du fügst das -ss/-t/-to vor dem -i ein: Dann wurde vor dem dekomprimieren an die stelle gesprungen (was sehr schnell ist) oder du machst es wie du vor den Output. Dann wurde nach dem dekomprimieren aber vor dem komprimieren gesprungen, was maximal genau ist (also frame bzw. sample-genau). Seit ffmpeg auch im komprimierten Teil genau springen kann, ist die 2. Variante eher obsolet.
Nu hast du aber mit der copy-Option das dekomprimieren abgeschaltet... – Ein echtes Problem denn genau springen im Video ist damit unmöglich. ffmpeg springt dann zum nächsten möglichen Frame. Im Audio kann er genauer springen. Ich glaube wenn du das -ss nach vorne packst springt er in video und audio gleich genau. – Im Notfal musst du ihn a/v-Sync manuell reparieren lassen.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
B52
Beiträge: 427
Registriert: 07.08.2011 12:35:02
Wohnort: Bern (CH)
Kontaktdaten:

Re: Werbung aus Spielfilm raus schneiden mittels ffmpeg

Beitrag von B52 » 24.07.2021 17:24:41

wanne hat geschrieben: ↑ zum Beitrag ↑
24.07.2021 12:00:55
Nu hast du aber mit der copy-Option das dekomprimieren abgeschaltet... – Ein echtes Problem denn genau springen im Video ist damit unmöglich. ffmpeg springt dann zum nächsten möglichen Frame. Im Audio kann er genauer springen. Ich glaube wenn du das -ss nach vorne packst springt er in video und audio gleich genau. – Im Notfal musst du ihn a/v-Sync manuell reparieren lassen.
Danke, das war's. Lass ich -codec copy aus, kann ich tatsächlich sekundengenau schneiden. Es dauert jedoch wesentlich länger. Mit -codec copy dauerts ein paars Sekunden. Lass ich ffmpeg erneut codieren, dauerst rund 1.5 Stunden. Ziel jedoch erreicht. Irgendwie hats mich jetzt gepackt und ich werde mich tiefer damit beschäftigen. Netter Zeitvertrieb ;-)
«Der Vorteil der Klugheit besteht darin,
dass man sich dumm stellen kann.
Das Gegenteil ist schon schwieriger.»
(Kurt Tucholsky)

Benutzeravatar
Tintom
Moderator
Beiträge: 3029
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Werbung aus Spielfilm raus schneiden mittels ffmpeg

Beitrag von Tintom » 24.07.2021 20:05:19

wanne hat geschrieben: ↑ zum Beitrag ↑
24.07.2021 12:00:55
Grundsätzlich:
1. mkvs/webm oder gar mp4/mov schneiden ist leider kompliziert. Das geht mit ts einfach viel besser/einfacher. Die kannst du auch per cat aneinander setzen (solltest sie aber nicht per split schneiden, weil dir da ein paar s verloren gehen.) Zumindest für mkv gibt es einige spezialisierte Tools. Wenn nicht: ffmpeg -i alita_battleangel.mkv -c copy alita_battleangel_02.ts ist in null Komma nichts durchgefüht. Danach auf ts arbeiten und zurück nach mkv umtopfen tut nicht weh macht die sachen aber viel einfacher.
Interessant - wieso funktioniert das dann auch ohne den Schalter concat von ffmpeg? Mit dem Befehl wird ja am eigentlichen Video nichts geändert, lediglich der Container wird in einen MPEG-TS 'umgetopft'. Oder ist es gerade deswegen, weil MPEG-TS keinen Header im klassischen Sinn hat und deswegen auch nichts kaputt gehen kann?

wanne
Moderator
Beiträge: 7447
Registriert: 24.05.2010 12:39:42

Re: [gelöst] Werbung aus Spielfilm raus schneiden mittels ffmpeg

Beitrag von wanne » 25.07.2021 15:06:05

Oder ist es gerade deswegen, weil MPEG-TS keinen Header im klassischen Sinn hat und deswegen auch nichts kaputt gehen kann?
Ich würde es eher anders herum bezeichnen. Weil TS ähnlich wie mp3 vor jedem Paket einen Header hat.
ts wurde halt für TV entwickelt. TV hat das Problem, dass du nicht die Möglichkeit hast beliebig hin und her zu springen und zu lesen kannst aber es trotzdem möglich sein soll an jeder Stelle einsteigen zu können.
Das bedingt einen Haufen Desighnentscheigungen, die Schneiden sehr einfach machen:
Du willst deinen TV einfach anmachen und los gucken können: Entsprechend muss jemand der den Anfang eines Streams nicht kennt, in der Lage sein den Abzuspielen. (Deswegen hat jedes Paket seinen eigenen Header.) Das heißt aber eben auch, dass du eine ts auseinander schneiden kannst. Fernsehsender wollen auch für ne nachfolgende Sendung eventuell Codecs umstellen können und sogar zusätzliche Sprachen an und abschalten von 4:3 auf 16:9 umstellen etc. Das ist eine tolle Eigenschaft um Filme zusammen zu setzen. Es ist explizit erlaubt, Müll zwischen den Paketen einzufügen (um auf die Übertragungsbandbreite aufzufüllen). Wenn du also beim schneiden irgend was kaputt machst ist das halt Müll zwischen Paketen. Das nächste Paket kann wieder gelesen werden. Du kannst bei fehlerhaft empfangenem im TV nicht erneut senden. Selbst wenn ein Paket beim schneiden kaputt geht, weil man es zerschneidet: Alle ts Implementierungen müssen damit zurecht kommen, danach wieder irgend wie weiter zu machen. Während alle Formate Audio und Video verweben, damit man die Datei beim Abspielen von vorne nach Hinten lesen kann (Auf praktisch allen Datenträgern, wie platten und CDs... ist hüpfen langsam) können Audio und das passende Video doch ein ganzes Stück auseinander liegen. Player brauchen sie doch einen gewissen Buffer mit dem sie ein bisschen Vorraus lesen damit sie dann beides zusammen absiepilen können. Das ist bei ts deutlich härter. Es ist für receiver, DVD-Player oder Fernseher die praktisch keinen Speicher haben gedacht. Sachen die gleichzeitig sind, sollen entsprechend auch weitestgehend an der gleichen Stelle stehen.
All das sind Eigenschaften die Schneiden sehr viel einfacher machen:
Selbst wenn du mit Split und cat drauf los gehst: Du zerstörst im dümmsten Fall ein Paket das ist dann Müll am Anfang und Ende der beiden Teile. So what? Das darf da sein. Der Rest ist wieder ein ganaz normales ts. Audio und Video passen zusammen. – Alles bestens.
rot: Moderator wanne spricht, default: User wanne spricht.

Antworten