News:

--

Main Menu

Weiterer Fehler in Avidemux

Started by ted, May 30, 2017, 09:12:44 PM

Previous topic - Next topic

ted

(mein englisch ist mies, deshalb poste ich nur hier; wenn jemand es übersetzen und an die Entwickler senden will, nur zu)

Avidemux 2.7.0  (170529_23f006dc991-fflibs 3.3)
Fehler: Frame wird mal als Keyframe bezeichnet, dann wieder nicht.

Dateien, 3.1 MB:  ted_20170530.zip  https://we.tl/LCouZIDAFu

Abfolge:
1. ted_20170530.mkv in Avidemux laden.
2. Nach 00:00:09.011 gehen, wird hier als I-FRM (00) angezeigt.
3. Markierung A setzen.
4. Nach 00:00:11.096 gehen, wird hier als I-FRM (00) angezeigt.
5. Markierung B setzen.
6. Den markierten Bereich Löschen mit ENTF-Taste.
7. Ergbebnis abspeichern, es wird keiner Warnung angezeigt. Avidemux geöffnet lassen.
8. Ergebnis in einem Player abspielen. Es sind Bildfehler sichtbar, obwohl nur an Keyframes geschnitten wurde.
9. In Avidemux das Projekt als PY-Datei speichern.
10. In einem anderen Avidemus diese PY-Datei laden.
11. Ergbnis speichern. Jetzt wird eine Warnung angezeigt, das auch die Bildfehler erklärt: Für Video ist der Kopiermodus ausgewählt, aber Schittpunkte befinden sich nicht auf Keyframes. Das Video wird gespeichert, aber es wird Bildstörungen an Schnittpunkten geben. Trotzdem fortsetzen?

Beim ersten Speichern des Ergebnisses wird keinerlei Warnung angezeigt, jedoch wenn man die gleichen Schnitten mit einer PY-Datei macht.

Vielleicht könnten sich die Entwickler das mal ansehen?

Danke.
Ted

eumagga0x2a

Danke für ein perfektes Beispiel, es ist genau das gleiche Problem. Ich würde noch hinzufügen, dass das I-Frame bei 00:00:11.096 nicht verloren geht (was die Bildfehler verursacht), wenn man den Endpunkt beim Löschen aufs P-Frame direkt davor setzt.

Den Schritt 11 kann ich nicht reproduzieren.

ted


> Den Schritt 11 kann ich nicht reproduzieren.

Das ist aber seltsam, wenn wie die gleiche Codebasis verwenden, müsste eine Warnung angezeigt werden.

Was passiert, wenn Sie einfach MEINE py-Datei verwenden, kommt da auch keine Warnung ?

ted

Ich habe noch was vergessen: alles unter Windows 7, 32 Bit.

eumagga0x2a

Quote from: ted on May 31, 2017, 12:53:33 PM
Was passiert, wenn Sie einfach MEINE py-Datei verwenden, kommt da auch keine Warnung ?

Es würde zum sofortigen Absturz von Avidemux kommen  ;)

Im Ernst, die Sache mit der Warnung ist meines Erachtens unwichtig. Wichtig ist, dass das Keyframe am Ende des Schnitts nicht verloren geht. Dank Ihrem Sample kann der Autor von Avidemux das Problem endlich zuverlässig reproduzieren. Somit sind die Chancen auf einen baldigen Fix deutlich gestiegen :)

ted

> Es würde zum sofortigen Absturz von Avidemux kommen

Warum denn das? Wenn man den Dateipfad in der py-Datei anpasst, schmiert Avidemux nicht ab.

Ich habe in meinem langen Informatiker-Leben gelernt, dass man solche Unterschiede nie ignorieren sollte, denn es können sich dahinter unerwartete Fehler verstecken. Wie in einer Buchhaltung, das einen Fehler von 1 Cent Differenz aufzeigt. Dahinter können grobe Fehler mit großen Beträgen stehen, nicht nur 1 Cent-Tippfehler. Ohne nähere Untersuchung kann man da nichts zu sagen.

Wenn Sie die gleiche Version verwenden und auch das Betriebssystem keine signifikanten Unterschiede produzieren kann(!), würde ich die fehlende Warnung untersuchen. Ein solcher Unterschied sollte nicht vorkommen. Was der Entwickler nun macht, ist natürlich seine/ihre Entscheidung.

Natürlich sollte das das fehlende i-Frame erst mal vorrangig behandelt werden, da bin ich Ihrer Meindung.

Vielleicht können wir danach das zweite Problem angehen? Die Einstellungen vergleichen usw, damit die Ursache des Unterschieds sichtbar wird? Ist nur ein Vorschlag.

ted

eumagga0x2a

Quote from: ted on June 01, 2017, 08:03:40 PM
Quote from: eumagga0x2aEs würde zum sofortigen Absturz von Avidemux kommen

Warum denn das? Wenn man den Dateipfad in der py-Datei anpasst, schmiert Avidemux nicht ab.

Ich weiß. Das war die Anspielung auf eben dieses verbesserungswürdige Verhalten von Avidemux. Wenn ich den Pfad in ted_20170530.py korrigiere und das Projekt lade, kann Avidemux im Video nicht navigieren, weil es das Erzeugen des Samples aus dem ursprünglichen, langen Video beschreibt und nicht die Schritte, die Sie aufgelistet haben. Der korrekte Inhalt wäre für Ihre Gegebenheiten

#PY  <- Needed to identify #
#--automatically built--

adm = Avidemux()
adm.loadVideo("H:/ted_20170530.mkv")
adm.clearSegments()
adm.addSegment(0, 0, 9011000)
adm.addSegment(0, 11096000, 10009000)
adm.markerA = 0
adm.markerB = 19020000
adm.videoCodec("Copy")
adm.audioClearTracks()
adm.setSourceTrackLanguage(0,"ger")
adm.audioAddTrack(0)
adm.audioCodec(0, "copy");
adm.audioSetDrc(0, 0)
adm.audioSetShift(0, 0,0)
adm.setContainer("MKV", "forceDisplayWidth=False", "displayWidth=1280")


Mit diesem Projekt produziert das Speichern im Copy-Modus richtigerweise keine Warnung (die Schittpunkte sind ja auf Keyframes, die Dinge gehen an einer anderen Stelle schief).

QuoteVielleicht können wir danach das zweite Problem angehen? Die Einstellungen vergleichen usw, damit die Ursache des Unterschieds sichtbar wird? Ist nur ein Vorschlag.

Ich gehe vorerst davon aus, dass das zweite Problem auf einem Missverständnis bzw. Fehlbedienung beruht.

ted

> Mit diesem Projekt produziert das Speichern im Copy-Modus richtigerweise keine Warnung (die Schittpunkte sind ja auf Keyframes, die Dinge gehen an einer anderen Stelle schief).

Jetzt verstehe ich garnichts mehr. Die PY-Datei habe ich natürlich mit dem kleinen Beispiel erzeugt. Zuerst das kleine Beispiel herausgeschnitten, die zwei Schnitte gesetzt, gelöscht und dann die PY-Datei erzeugt. Wenn ich diesen Vorgang wiederhole, komme ich JETZT auch auf den Inhalt, den Sie gepostet haben. Und es stimmt, mit dieser PY wird keine Warnung ausgegeben. Sehr unverständlich für mich. Was ich mir vorstellen könnte: ich habe das kleine Beispiel nicht alleine geladen, sondern zu einer winizigen bereits geladenen Datei hinzugeladen. Dann würde sie angehängt werden. Aber dann müsste ich dieses winzige Video eigentlich im Ergebnis sehen.

Aber es stimmt, es ist damit KEIN Schnittfehler, die vermeintliche falsche Warnungsmeldung ist damit keine. Vielleicht komme ich irgendwann mal darauf, wie ich diese falsche PY erzeugt habe.

eumagga0x2a

Quote from: ted on June 02, 2017, 11:38:53 PM
Die PY-Datei habe ich natürlich mit dem kleinen Beispiel erzeugt. Zuerst das kleine Beispiel herausgeschnitten

Also nicht mit dem kleinen Beispiel erzeugt.

Wie denn auch sei, es scheint, als hätte ich die Stelle im Editor-Code, die unmittelbar für den Verlust des Keyframes verantwortlich ist, gefunden. Warte auf eine Rückmeldung vom Hauptentwickler.

eumagga0x2a

Die Idee war richtig, die vorgeschlagene Erhöhung der Toleranz zu hoch, mit entsprechender Korrektur soll das Problem des verlorenen ersten Keyframes nach dem Schnitt viel seltener auftreten.

[editor] In copy mode, be more tolerant to timing error, allow 0.3 rather than 0.1 , that helps with dropped keyframes

ted

Quote from: eumagga0x2a on June 03, 2017, 08:28:03 AM
Quote from: ted on June 02, 2017, 11:38:53 PM
Die PY-Datei habe ich natürlich mit dem kleinen Beispiel erzeugt. Zuerst das kleine Beispiel herausgeschnitten

Also nicht mit dem kleinen Beispiel erzeugt.


Vielleicht dürcke ich mich unklar aus: zuerst am Anfang und am Ende große Teile weggeschnitten, damit nur eine kleine Sequenz übrigbleibt. Diese Sequenz als kleines Beispiel gespeichert. Das kleine Beispiel in eine andere Avidemux-Instanz geladen, die Schnitte gesetzt und als PY exportiert.

Die neue Avidemux-Version schneidet das kleine Beispiel schon mal richtig. Mein Wunschdenken war, dass ich die bestehenden PYs von den GROßEN Videos auch in der neuen Version einfach laden und das Ergebnis speichern könnte. Geht leider nicht, die Resultate sind alle ziemlich gestört. Die PYs mit dem Texteditor zu bearbeiten ist viel zu kompliziert, zumindest blicke ich nicht durch. Es bleibt nur alles neu schneiden.

eumagga0x2a

Quote from: ted on June 03, 2017, 06:10:15 PM
Vielleicht dürcke ich mich unklar aus: zuerst am Anfang und am Ende große Teile weggeschnitten, damit nur eine kleine Sequenz übrigbleibt. Diese Sequenz als kleines Beispiel gespeichert. Das kleine Beispiel in eine andere Avidemux-Instanz geladen, die Schnitte gesetzt und als PY exportiert.

Das beigefügte tinyPy-Skript referenziert ein Video, wovon ein Segment von knapp 21 Sekunden Länge, 8 Minuten 28 Sekunden vom Anfang des Videos, geladen wird und wo die Markierungen am Anfang und am Ende dieses Segments gesetzt werden. Ich denke nicht, dass das wirklich den Stoff für eine Diskussion liefert.

QuoteDie neue Avidemux-Version schneidet das kleine Beispiel schon mal richtig.

Das stimmt, danke nochmals fürs Testvideo und die Schritte.

QuoteMein Wunschdenken war, dass ich die bestehenden PYs von den GROßEN Videos auch in der neuen Version einfach laden und das Ergebnis speichern könnte. Geht leider nicht, die Resultate sind alle ziemlich gestört. Die PYs mit dem Texteditor zu bearbeiten ist viel zu kompliziert, zumindest blicke ich nicht durch. Es bleibt nur alles neu schneiden.

Nein, das wird leider nicht helfen. Das Problem ist bedauerlicherweise nicht vollständig gelöst. Jedes Mal, wenn der Test https://github.com/mean00/avidemux2/blob/master/avidemux/common/ADM_editor/src/ADM_edVideoCopy.cpp#L335 positiv ausfällt und zur Sprungmarke againGet gesprungen wird, geht das erste Keyframe nach einem Schnitt verloren. Das kann ich mit Ihrem ersten Testvideo und der PY-Datei nachvollziehen.

ted

Ich habe schlechte Nachrichten, der ursprünglich hier gemeldete Fehler taucht mit dem selben Video immer noch auf.

Fehler: Bildstörungen nach Schnitt an Keyframes.
Avidemux 2.7.0 (170603_74c7dd31299-fflibs 3.3.1)

Es hat lange gedauert, bis ich den Fehler mit einer kleinen Beispieldatei provozieren konnte, aber hier ist es:  Dateien, 38 MB:  ted_20170605.zip  https://we.tl/2NP5aa3WCe

Abfolge:
1. ted_20170605.mkv in Avidemux laden.
2. Zum I-FRM 00:00:18.479 springen.
3. Markierung A setzen.
4. Zum I-FRM 00:04:20.264 springen.
5. Markierung B setzen.
6. Den markierten Bereich mit der ENTF-Taste löschen.
7. Ergebnis abspeichern.
8. Ergebnis in einem Player abspielen. Es sind Bildfehler sichtbar, obwohl nur an Keyframes geschnitten wurde.

Kann dies bitte jemand an die Entwickler weiterleiten?

Vielen Dank,
Ted

eumagga0x2a

Danke für das neue Testvideo, aber wie ich schon vorgestern geschrieben habe, wissen wir schon, dass das Problem nicht gelöst ist sondern nur etwas seltener auftreten wird.

eumagga0x2a

Im letzten Nightly ist ein weiterer Teil des Problems gelöst ââ,¬â€œ vorher ermittelte der Matroska-Demuxer eine falsche Bildwiederholfrequenz. Mit dem richtigen FPS-Wert sollte es noch seltener zum Verlust von Keyframes kommen.

Die schlechte Nachricht: alte Projektdateien könnten wegen abweichender Zeitstempel unbrauchbar werden.