Forum: PC-Programmierung Processing: Merkwürdiger Video-Fehler


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

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:
1
import processing.video.*;
2
   Movie video;
3
   void setup()
4
   {
5
     size(640, 360);
6
     background(0);
7
     video = new Movie(this, "video.mp4");
8
     video.play();
9
   }
10
   
11
   void movieEvent(Movie m)
12
   {
13
     m.read();
14
   }
15
 
16
   void draw()
17
   {
18
     image(video, 0, 0, 640, 360);  
19
   }

von Philipp K. (philipp_k59)


Lesenswert?


von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

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?

von Philipp K. (philipp_k59)


Lesenswert?

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.

von Horst (Gast)


Lesenswert?

Ist da vielleicht eine SD-Karte als Speichermedium im Spiel? Eventuell 
ist die mit der Zeit kaputt geworden!

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

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 ...

von Experte (Gast)


Lesenswert?

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!

von ● Des I. (Firma: FULL PALATINSK) (desinfector) Benutzerseite


Lesenswert?

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...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

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.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

● 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...

von ● Des I. (Firma: FULL PALATINSK) (desinfector) Benutzerseite


Lesenswert?

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.

: Bearbeitet durch User
von Εrnst B. (ernst)


Lesenswert?

> 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...

von Schlauberger (Gast)


Lesenswert?

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.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Ε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) ...

von Philipp K. (philipp_k59)


Lesenswert?

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.

: Bearbeitet durch User
von ● Des I. (Firma: FULL PALATINSK) (desinfector) Benutzerseite


Lesenswert?

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.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

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.

von Philipp K. (philipp_k59)


Lesenswert?

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.

: Bearbeitet durch User
von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

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.

von Philipp K. (philipp_k59)


Lesenswert?

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.

: Bearbeitet durch User
von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

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.

von ● Des I. (Firma: FULL PALATINSK) (desinfector) Benutzerseite


Lesenswert?

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.

: Bearbeitet durch User
von rbx (Gast)


Lesenswert?

● 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

von ● Des I. (Firma: FULL PALATINSK) (desinfector) Benutzerseite


Lesenswert?

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"

von Cyblord -. (cyblord)


Lesenswert?

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.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

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.

: Bearbeitet durch Moderator
von ● Des I. (Firma: FULL PALATINSK) (desinfector) Benutzerseite


Lesenswert?

@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.

von Chris (Gast)


Lesenswert?

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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.