In einem Museums-Projekt läuft seit ca. 2 Jahren eine Processing-App
(unter Windows 7 Pro 64 Bit), die für ein "digitales Schattentheater"
ein Video und ein Kamera-Livebild mischt.
Von einem Tag auf den anderen ist diese App (und auch eine ganz einfache
Test-App) nicht mehr in der Lage ein mp4-Video zu öffnen. Als
Fehlermeldung bekomme ich:
"(java.exe:5564): GStreamer-CRITICAL **:
Trying to dispose element Movie Player, but it is in READY instead of
the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element."
Ich kann das übersetzen, aber ich verstehe es nicht. Kann mir jemand
einen Tip geben? Also ein einfacher Neustart des PC ist nicht die
Lösung, mehrfach probiert. Das Web gibt leider auch nichts her, was ich
verwenden könnte. Danke.
Hier der Code der Test-App:
Philipp K. schrieb:> Also erster google Eintrag bei "Gstreamer Critical":>> https://forum.processing.org/two/discussion/25428/help-figuring-out-error-when-using-video-library
Danke, aber Google kann ich auch bedienen.
1. Bei mir tritt das Problem nicht wie in dem dortigen Post bei
vodeo.pause() oder video.stop() auf, sondern es startet garnicht erst
(obwohl es das monatelang tat).
2. Wie versetze ich den "GStreamer" ind den NULL-Zustand?
Ich habe den Rechner (mehrfach) neu gestartet und ich habe Processing
neu installiert. Was noch bliebe, wäre Java zu entfernen (geht das
überhaupt zu 100%?) und neu zu installieren. Ob das hilft?
Es kann sich ja eigentlich nur irgendwas geupdated haben.
Gstreamer Wiki:
GST_STATE_NULL is the default state of an element. In this state, it has
not allocated any runtime resources, it has not loaded any runtime
libraries and it can obviously not handle data.
Ich würde einfach jeden Aufruf mit Try&Catch einbetten und überprüfen ob
vorher schon ein Fehler auftritt.
Frank E. schrieb:> Was noch bliebe, wäre Java zu entfernen (geht das> überhaupt zu 100%?) und neu zu installieren.
Das ist Standard deinstallation.
Horst schrieb:> Ist da vielleicht eine SD-Karte als Speichermedium im Spiel?> Eventuell> ist die mit der Zeit kaputt geworden!
Nein, ist ein "normaler" PC mit SSD. Am darunter liegenden Win 7 Pro
gibts keine Auffälligkeiten. Er startet flink, im Dateisystem gibts
keine Fehler ... usw.
Da muss im Laufe der Zeit irgend eine (für den User normalerweise nicht
sichtbare bzw. relevante Datei) korrupt geworden sein. Diese
Fehlermeldung liest man im Web recht oft, aber keine brauchbare Lösung.
Ich hab jedenfalsl bis jetzt keine gefunden ...
Frank E. schrieb:> Da muss im Laufe der Zeit irgend eine (für den User normalerweise nicht> sichtbare bzw. relevante Datei) korrupt geworden sein.
Na, dann spiel das Backup ein und gut ist.
Kein Backup? Kein Mitleid!
hängt der Rechner (was für einer???) am Web?
ein Memtest kann auch schon mal nicht schaden.
wie alt ist der Rechner?
Ich will jetzt mal NICHT das Thema leer
werdende BIOS-Batterie ins Spiel bringen.
Wobei... bei all den kruden Fehlern,
die ich deswegen schon hatte...
Experte schrieb:> Frank E. schrieb:>> Da muss im Laufe der Zeit irgend eine (für den User normalerweise nicht>> sichtbare bzw. relevante Datei) korrupt geworden sein.>> Na, dann spiel das Backup ein und gut ist.>> Kein Backup? Kein Mitleid!
Backup? Für einen Einzel-PC, an dem niemand arbeitet und an dem keine
Daten entstehen? Wer macht denn sowas?
Du hast zwar im Prinzip recht, das würde mir jetzt helfen, unter den
gegebenen Umständen ist dein Einwurf aber einfach nur unpassend
arrogant.
● J-A V. schrieb:> hängt der Rechner (was für einer???) am Web?
nein, wozu?
> ein Memtest kann auch schon mal nicht schaden.
Es ist immer nur der eine Fehler vom "GStreamer". Ich wusste bis zu dem
Fehler garnicht, dass der zusammen mit Processing instaliert wird. aber
kann ich mal machen.
> wie alt ist der Rechner?
Ca. 5 Jahre, für den aktuellen Zweck aber neu aufgesetzt und mit SSD
versehen. So ein HP Mini Super Slim "Elite ... " , ca. 25 x 25 x 5 cm
> Ich will jetzt mal NICHT das Thema leer> werdende BIOS-Batterie ins Spiel bringen.
Dann würde ich das wohl zuerst an der Uhrzeit merken. Die ist zwar ohne
Internet nicht super-genau, passt aber (ca. 5min Differenz in 2 Jahren)
> Wobei... bei all den kruden Fehlern,> die ich deswegen schon hatte...
Frank E. schrieb:>> Ich will jetzt mal NICHT das Thema leer>> werdende BIOS-Batterie ins Spiel bringen.>> Dann würde ich das wohl zuerst an der Uhrzeit merken.
und da sage ich NEIN!
5 Jahre alt?
Bitte erstmal die Batterie wechseln.
> Ich habe den Rechner (mehrfach) neu gestartet und ich habe Processing> neu installiert. Was noch bliebe, wäre Java zu entfernen (geht das> überhaupt zu 100%?) und neu zu installieren. Ob das hilft?
Andere Option, wenn der Rechner eh kein Internet hat:
Stell die Uhr mal ein oder zwei Jahre zurück, und versuchs nochmal.
Könnte mir vorstellen, dass irgendein
Codesigning-(Intermediate-)Zertifikat zwischendurch abgelaufen ist, und
ein nötiger Codec, JAR-File, DLL, whatever nicht mehr geladen werden
kann/darf.
Da ist Uhrzeit-verstellen schneller zielführend als "alles updaten",
wenn auch nicht nachhaltig...
Frank E. schrieb:> Backup? Für einen Einzel-PC, an dem niemand arbeitet und an dem keine> Daten entstehen? Wer macht denn sowas?
Das tun Menschen, die effektiv arbeiten möchten und sich das
Neuaufsetzen von PCs und die Fehlersuche ersparen möchten. Festplatten,
Caches und RAMs können Fehler haben und infolgedessen kann das Windows
unverhoft sich selber was kaputtschreiben. Also hat man ein
Systembackup.
Εrnst B. schrieb:>> Ich habe den Rechner (mehrfach) neu gestartet und ich habe> Processing>> neu installiert. Was noch bliebe, wäre Java zu entfernen (geht das>> überhaupt zu 100%?) und neu zu installieren. Ob das hilft?>> Andere Option, wenn der Rechner eh kein Internet hat:> Stell die Uhr mal ein oder zwei Jahre zurück, und versuchs nochmal.>> Könnte mir vorstellen, dass irgendein> Codesigning-(Intermediate-)Zertifikat zwischendurch abgelaufen ist, und> ein nötiger Codec, JAR-File, DLL, whatever nicht mehr geladen werden> kann/darf.>> Da ist Uhrzeit-verstellen schneller zielführend als "alles updaten",> wenn auch nicht nachhaltig...
Habe das Jahr auf 2018 zurückgesetzt, kein Erfolg, es ist zum Brechen.
movie = new Movie(this, "video.mp4");
movie.play();
while (movie.height == 0) delay(10);
Das ist ein Stückchen Code, was 2 Jahre lang tagtäglich funktioniert
hat, plötzlich hängt er im While-Loop. Der Loop soll Verzögerungen durch
das Laden des Videos abfangen, weil die Infos erst nach dem ersten Frame
zur Verfügung stehen. Die MP4-Datei wurde definititv nicht geändert und
liegt auch im Data-Unterverzeichnis des aktuellen Sketches. Interessant:
Die Spieldauer des Videos (movie.duration()) wird korrekt ausgelesen,
height und width sind aber immer Null (was sie selbstverständlich nicht
wirklich sind) ...
Frank E. schrieb:> Das ist ein Stückchen Code, was 2 Jahre lang tagtäglich funktioniert> hat
Schonmal das behoben?
You need to explicitly set elements to the NULL state before.....
Also Java müsste doch eine Ellenlange Fehlerliste ausgeben.. ansonsten
try&catch um alles was geht. Wie sind denn die Java Debugging
Kenntnisse, oder war das nen bisschen zusammengebastelter Code der bis
jetzt lief.. oder eine aufwendige Java app von jemanden der immer schon
alles in Java gelöst hat und sich mit der Fehlersuche auskennt und jetzt
nicht mehr weiter weiß??
Das ist wie 20km zur KFZ Werkstatt gehen weil das Auto nach dem Brötchen
holen nicht startete und Fragen wodran es liegt.
bitte erstmal das BIOS resetten:
Batterie raus, die Kontakte für die Batterie auf dem MoBo
miteinander verbinden, das so im stromlosen Zustand
für 5 Minuten lassen und eine neue Batterie einsetzen.
Auch wenns lästig ist, wenn ich immer wieder DAMIT ankomme,
einfach mal machen...
Man löst damit zwar auch nicht alles,
Aber das ist eine der am einfachsten
zu behebenden Fehlerquellen.
Philipp K. schrieb:> Also Java müsste doch eine Ellenlange Fehlerliste ausgeben.. ansonsten> try&catch um alles was geht. Wie sind denn die Java Debugging> Kenntnisse, oder war das nen bisschen zusammengebastelter Code der bis> jetzt lief.. oder eine aufwendige Java app von jemanden der immer schon> alles in Java gelöst hat und sich mit der Fehlersuche auskennt und jetzt> nicht mehr weiter weiß??>> Das ist wie 20km zur KFZ Werkstatt gehen weil das Auto nach dem Brötchen> holen nicht startete und Fragen wodran es liegt.
Es ist ja leider kein "richtiges" Java, es ist Processing (was auf Java
aufsetzt, aber tief verkapselt). Im Code habe ich nix mit einem
"GStreamer" zu tun, wüsste demzufolge auch leider nicht, wie ich ihn auf
NULL setzen sollte. In Processing gibts nur ein movie-Objekt, wie oben
zusehen.
Okay kenn ich mich nicht mit aus.. Sagt mir nüx aber wir wissen trotzdem
nicht wo der aussteigt?
in welcher Zeile, am besten zum testen von unten an auskommentieren.
z.B.:
Klappt das?
movie = new Movie(this, "video.mp4");
// movie.play();
// while (movie.height == 0) delay(10);
wenn ja dann das?
movie = new Movie(this, "video.mp4");
movie.play();
// while (movie.height == 0) delay(10);
Wenn ja dann das?
movie = new Movie(this, "video.mp4");
while(!movie.available()){}
movie.play();
while (movie.height == 0) delay(10);
etc.etc.etc.
Philipp K. schrieb:> Okay kenn ich mich nicht mit aus.. Sagt mir nüx aber wir wissen> trotzdem> nicht wo der aussteigt?>> in welcher Zeile, am besten zum testen von unten an auskommentieren.> z.B.:>> Klappt das?> ...
Ja, geht alles, danke für deine Mühe. Er "steigt" eigenlich nicht aus.
Es gibt beim Start der App keine Fehlermeldung, nur einen grauen
Bildschirm (anstatt des Vieos). Beendet man mit dem Taskmanger, kann man
obige Fehlermeldung (Start-Post) in der Konsole lesen.
Während movie.duration() den korrekten Wert liefert, sind movie.width
und movie.height (seit ca. 4 Wochen) immer null (also wirklich 0, nicht
NULL). Das Video habe ich natürlich schon getauscht, ohne Erfolg. Es
läuft im VLC oder Mediaplayer enwandfrei.
Funktioniert denn ein offizielles Example mit Example Video?
Könnte die Datei aus irgendwelchen Gründen beschädigt worden sein?
Windows und vlc spielen auch teilweise kaputte Dateien ab.
Läuft denn der Kamera Teil, bzw läuft die Kamera alleine?
Stimmen die Dateirechte?
Ich glaube auch fast eher an die BIOS Batterie oder so.
Oder einfach mal ein topic im processing Forum oder eine Anfrage bei
Github aufmachen.
Philipp K. schrieb:> Funktioniert denn ein offizielles Example mit Example Video?
Nein, gleiches Problem.
> Könnte die Datei aus irgendwelchen Gründen beschädigt worden sein?
Wurde extra nochmal neu gerendert, unwahrscheinlich. Habe auch andere
Videos probiert, ohne Erfolg.
> Windows und vlc spielen auch teilweise kaputte Dateien ab.> Läuft denn der Kamera Teil, bzw läuft die Kamera alleine?
Ja.
> Stimmen die Dateirechte?
Soweit ich das beurteilen kann, ja. Unter Sicherheit steht bei
Zugriffsrechten für Lesn u. Ausführen "jeder".
> Ich glaube auch fast eher an die BIOS Batterie oder so.> Oder einfach mal ein topic im processing Forum oder eine Anfrage bei> Github aufmachen.
Processing Forum nimmt z.Zt. keine neuen User an. Github hab ich noch
nicht probiert.
Philipp K. schrieb:> Ich glaube auch fast eher an die BIOS Batterie oder so.
Man wird diesen Tipp hier schon -zig mal von mir finden:
Das ist bei unklaren Dingen im Composter
das allererste was man prüfen kann und sollte.
Aber nicht nur einfach "eben schnell" tauschen,
sondern die Spannung
an den Batterieklemmen wirklich auf Null bringen.
● J-A V. schrieb:> Das ist bei unklaren Dingen im Composter> das allererste was man prüfen kann und sollte.
5 Jahre kann man ja heutzutage schon als kritische Zeit einstufen.
Aber bei Java würde ich als erstes an Schadcode denken.
Bei so automagischen Sachen hilft hier und da auch ein Process Explorer
weiter.
https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer
mal ein anderes Benutzerkonto anlegen - läuft es dort?
-Läuft es gar im abgesicherten Modus?
können im BIOS nicht benötigte Dinge abgeschaltet werden?
Was ich bei vielen Computerproblemen oft vermisse ist,
dass man nicht erstmal alle möglichen Sachen "durchspielt"
Frank E. schrieb:> Backup? Für einen Einzel-PC, an dem niemand arbeitet und an dem keine> Daten entstehen? Wer macht denn sowas?
Doch gerade an so einem Einzel-PC der da vor sich hin arbeitet empfiehlt
sich ein komplettes Image, damit du ihn jederzeit wieder so aufsetzen
kannst.
Kein klassisches Backup wie an einem Arbeits-PC.
Frank E. schrieb:> while (movie.height == 0) delay(10);
Das könnte vom Java-Runtime-System zu einer Endlosschleife optimiert
worden sein, da keine Änderung von movie.height in diesem Kontext
sichtbar ist. Ein (guter) C-Compiler macht das jedenfalls.
Auch in Java gibt es volatile - aus gutem Grund.
@TO:
nu' steck doch endlich mal
'ne neue Scheiben-Batterie da rein...
Man kann letztlich keine konkreten Erkenntnisse gewinnen,
wenn nicht erstmal die (sprichwörtlichen) Basics
abgeklopft sind.
Welche processing und welche Java vm?
Wenn es nicht kleiner gleich 8 ist (Java) downgrade machen, aber kein
Oracle, sondern eine andere mit LTE bis 2026.