Video Schneiden
Was du dir da vorgenommen hast ist eine GranateJoel hat geschrieben:Ja schon, aber ich möchte soetwas mal selbst programmeren und wissen wie das geht.

Wenn du Basiswissen darüber erlangen willst, lade dir das DirectX-SDK von M$ herunter.
In der Abteilung DirectShow ist das relativ klar dargestellt.
Ach noch was, wenn du einen Video-Editor alleine schreiben willst, solltest du bis etwa 2015 nichts anderes mehr vorhaben

Man wird alt wie 'ne Kuh und lernt immer noch dazu
Und da gehts auch schon los. Gute Videoeditoren wie Vdub nutzen das VFW Interface da man damit eher die Gewissheit hat, dass sich kein anderer Filter im DS System reinschleicht. Wenns um Avi geht ist das alles kein Problem via der AviFil32 API oder dem MMIO Routinen. Aber mpeg und alle anderen speziellen Formate sollten "nativ" decodiert werden, also ohne Dshow und somit via der entspr. Dekodier-Lib.Wenn du Basiswissen darüber erlangen willst, lade dir das DirectX-SDK von M$ herunter
VdubMod hat was mpeg2 angeht da z.B. einen eigenen mpeg2 decoder eingebaut.
Und am Ende willst du alles ja wieder re-enkodieren. Und da siehts genauso aus.
Avery Lee hat sehr lange an Vdub programmiert und IngolfZ hat recht, es ist ein irre Aufwand.
Wenn man DirectShow Filterketten unintelligent aufbaut, d.h. das "intelligent connect" nicht benutzt, ist man auch sicher, dass sich keine Filter in die Kette einschleichen.Gute Videoeditoren wie Vdub nutzen das VFW Interface da man damit eher die Gewissheit hat, dass sich kein anderer Filter im DS System reinschleicht.
Das haben wir in unserem PB-Projekt MPEG-Inspector ausführlich getestet und erfolgreich zum Einsatz gebracht. Das Projekt ist übrigens mit PB realisiert.
Man wird alt wie 'ne Kuh und lernt immer noch dazu
Ne ich will kein komplett neues viseo programm erstellen sonderen ein womit man videos schneiden kann.
Ich öffne den Video und spul den da hin wo der anfacgen soll und aufhören soll und speicher den.
Ich will kein Programm Programmieren wie Video Studio, dazu brauch ich bestimmt bis 2080.
Und mich interessiert dass wie man Videos schneidet.
Ich öffne den Video und spul den da hin wo der anfacgen soll und aufhören soll und speicher den.
Ich will kein Programm Programmieren wie Video Studio, dazu brauch ich bestimmt bis 2080.
Und mich interessiert dass wie man Videos schneidet.
Selbst ein simples schneideprogramm ist nicht einfach. In so einem Video-File liegt bei den meisten formaten nicht für jedes Video-Frame ein bild, sondern es gibt ein bild und die nächsten paar frames versuchen nur die differenz dazu zu beschreiben.
Du wirst dich für sowas also aller warscheinlichkeit selbst mit den verschiedenen kompressionsverfahren beschäftigen müssen, falls du keine geeignete Bibliothek findest.
Du wirst dich für sowas also aller warscheinlichkeit selbst mit den verschiedenen kompressionsverfahren beschäftigen müssen, falls du keine geeignete Bibliothek findest.
Avi ist ein "Format", daher auch Avi file format 
Es ist richtig, dass "Format" hier ein Container ist.
Die einzelnen VideoStreams innerhalb jenes Formats/Containers besitzen ein FourCC 4 Character Identifikationscode, so z.B. bei mjpeg "mjpg" oder "DIVX", "XVID", "X264", "HUFF" etc. somit die verwendeten Compressors mit denen die Streams komprimiert wurden.
Avi hat die Möglichkeit einen Video und einen Audiostream zu besitzen. Dieses Format ist daher auf dem absterbenden Ast.
Neuere Formate wie mp4 (h264) können zudem mehrere Audiokanäle (aac) und subtitle Streams enthalten.
Das Problem beim Videoschnitt ist folgendes: Wenn du einen Stream hast, der via I,B u. P Folge enkodiert wurde (z.B. mpeg1,mpeg2,mpeg4xvid/Divx) so MUSS immer am jeweiligen "I" Farme geschnitten werden. Demnach musst du diesen ansteuern (viel Spaß). Es gibt Programme wie Cuttermaran, die lassen auch bei diesen Framegenau schneiden, aber es wird sodann jene "zerschnittene" GOP neu enkodiert welche bei mpeg2 oft 15frames und bei mpeg4 bis zu 250 frames besitzen kann.
Daher solltest du dir im Klaren sein WELCHE Codecs du in deiner Software als Import unterstützen willst.

Es ist richtig, dass "Format" hier ein Container ist.
Die einzelnen VideoStreams innerhalb jenes Formats/Containers besitzen ein FourCC 4 Character Identifikationscode, so z.B. bei mjpeg "mjpg" oder "DIVX", "XVID", "X264", "HUFF" etc. somit die verwendeten Compressors mit denen die Streams komprimiert wurden.
Avi hat die Möglichkeit einen Video und einen Audiostream zu besitzen. Dieses Format ist daher auf dem absterbenden Ast.
Neuere Formate wie mp4 (h264) können zudem mehrere Audiokanäle (aac) und subtitle Streams enthalten.
Das Problem beim Videoschnitt ist folgendes: Wenn du einen Stream hast, der via I,B u. P Folge enkodiert wurde (z.B. mpeg1,mpeg2,mpeg4xvid/Divx) so MUSS immer am jeweiligen "I" Farme geschnitten werden. Demnach musst du diesen ansteuern (viel Spaß). Es gibt Programme wie Cuttermaran, die lassen auch bei diesen Framegenau schneiden, aber es wird sodann jene "zerschnittene" GOP neu enkodiert welche bei mpeg2 oft 15frames und bei mpeg4 bis zu 250 frames besitzen kann.
Daher solltest du dir im Klaren sein WELCHE Codecs du in deiner Software als Import unterstützen willst.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Dem kann ich voll und ganz zustimmen.Kaeru Gaman hat geschrieben:..., weil es vielleicht vermitteln kann, wie hardcore dieses thema wirklich ist.
2003 habe ich mit VB angefangen ein Programm zu schreiben um MPEG-Dateien zu analysieren. 2004 habe ich mit "jear" ein kleines Team gegründet und wir sind auf PB umgestiegen.
Wir, jear und ich, kommen eigentlich aus der Hobby-Ecke Video-Bearbeitung. Uns hat interessiert, warum Video-Bearbeitung manchmal nicht das Ergebnis bringt, das wir erwartet haben. Und ganz speziell der Framegenaue-Schnitt von Videos ist selbst bei kommerziellen Programmen immer noch ein Problem.
Zuerst haben wir uns auf allgemein verfügbare Informationen über den Aufbau von MPEG Dateien abgestützt. Erst als wir im Internet "Kopien" der einschlägigen Normen (ISO/IEC 11172 und 13818) gefunden haben, sind wir in größeren Schritten vorangekommen. Und dabei haben wir uns nur auf MPEG-1 und MPEG2 PS konzentriert.
Bis 2005 habe wir die Dateien nur "numerisch" ausgewertet. In der zweiten Hälte 2005 haben wir begonnen DirectShow zu nutzen und auch die Frames visuell darzustellen. Die PB-Routinen zur Movie-Anzeige hatten uns nicht weitergebracht, da sie MPEG-2 Dateien nicht framegenau positionieren liessen. Zwischenzeitlich haben wir erkannt, dass das an den DirektShow Filter liegt, nicht jeder lässt sich framegenau positionieren.
Ich schätze mal, dass in der bisherigen Arbeit von uns etwa 1,5 Mannjahre drinstecken (inkl. Lernphase). Und wie gesagt, wir analysieren die Dateien nur, an einen Videoschnitt denken wir (vorerst) garnicht.
Wenn sich hier jemand mit PB und der Thematik Video gut auskennt, wir würden unser Team gegebenfalls erweitern

Man wird alt wie 'ne Kuh und lernt immer noch dazu