AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Gelöschtes Video wird abgespielt
Thema durchsuchen
Ansicht
Themen-Optionen

Gelöschtes Video wird abgespielt

Ein Thema von xaromz · begonnen am 9. Jul 2005 · letzter Beitrag vom 9. Jul 2005
Antwort Antwort
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#1

Gelöschtes Video wird abgespielt

  Alt 9. Jul 2005, 16:09
Hallo,
ich habe mal eine Frage:

Ich habe mir vor langer Zeit mal einen Videoplayer geschreiben, aber ich vermute, damit hat das gar nichts zu tun.
Der Player nutzt das DSPack fürs Playback.

Ich habe jetzt beim Sortieren meiner Videos folgende Entdeckung gemacht:
Ich habe mir ein Video angesehen und festgestellt, dass ich es nicht mehr brauche. Also habe ich den Player pausiert und die Datei gelöscht.
Jetzt kommts: Danach konnte ich das Video weiterspielen!
Nach einem Klick auf Stop war's dann vorbei, es ging kein Play mehr.
Wie zum Teufel kann DirectShow ein Video abspielen, das schon gelöscht ist, und wieso kann ich ein Video löschen, das noch abgespielt wird?

Vielleicht weiß jemand hier erhellendes...

Gruß
xaromz
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Gelöschtes Video wird abgespielt

  Alt 9. Jul 2005, 16:10
Eventuell lag es noch im Speicher?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Gelöschtes Video wird abgespielt

  Alt 9. Jul 2005, 16:12
Hallo,
ein 600MB-Video, das sofost nach Doppelklick abgespielt wird, und das davor 3 Monate rumlag, liegt kaum im Speicher.

Gruß
xaromz
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#4

Re: Gelöschtes Video wird abgespielt

  Alt 9. Jul 2005, 16:16
Zitat von xaromz:
ein 600MB-Video, das sofost nach Doppelklick abgespielt wird, und das davor 3 Monate rumlag, liegt kaum im Speicher.
DirectShow buffert ein Video. d.h Teile des Videos werden in den RAM geschrieben und von dort zum Rendern ausgelesen. Wie lange das vorher rumlag, spielt also keine Rolle
Nachdem du das Video gelöscht hast, lag davon noch ziemlich sicher ein großer Teil des Videos im RAM, was DirectShow dann abspielten konnte.
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Gelöschtes Video wird abgespielt

  Alt 9. Jul 2005, 16:19
Variante1:
Du konntest es nicht vollständig abspielen sondern hast nur noch an stück das video angeschaut.
Das ist eigentlich ohne Probleme möglich da so gut wie jeder Player vorpuffert um aussetzer zu vermeiden.

Variante2:
Diese ist eigentlich die wahrscheinlichere Variante da die Datei eigentlich nöcht gelöscht werden kann während sie verwendet wird. Und zwar hast du die Datei vermutlich über den Arbeitsplatz oder den Explorer gelöscht. Wenn dabei eine Datei noch in Verwendung ist meckert der Explorer in aller Regel nicht sofort rum sondern versucht die Datei trotzdem zu löschen, und erst wenn das löschen nach einer bestimmten zeit nicht geklappt hat kommt eine Fehlermeldung. Es kann also durchaus sein das du die Datei gelöscht hast (also dem Explorer den Befehl gegeben hast) und dann das Video noch angeschaut hast (drin rum gezappt). Danach klickst du auf stopp und in diesem moment wird die Datei (Handle) freigegeben und der Explorer löscht diese. Somit wars das und die Datei kann nicht wieder geladen werden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Beckman

Registriert seit: 12. Jul 2004
205 Beiträge
 
#6

Re: Gelöschtes Video wird abgespielt

  Alt 9. Jul 2005, 17:28
ein 'loeschen' im explorer ist noch lange kein physikalisches loeschen von daten.
es gibt ja nicht um sonst unzaehlige 'wiederherstellungs-tools'.
es lag in diesem fall net am buffer, dass er das video weiter schauen konnte, sondern daran, das der player die adresse der abzuspielenden daten (markierung: anfang/ende der datei) kannte.
der explorer hat lediglich geschaut, ob er exklusive-rechte auf die datei bekommen hat und hat den ganzen speicherbereich, der fuer die datei reserviert war, als 'leer' markiert.

die daten waren dennoch noch immer an derselben stelle und der player, der ihre position wusste, konnte sie problemlos weiterhin abspielen. (solang eben nix anderes drueber geschrieben wird)


aber ich haette mich trotzdem nicht aufgeregt und waere lieber stolz gewesen, einen hellseherischen video player programmiert zu haben


lg, beck.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#7

Re: Gelöschtes Video wird abgespielt

  Alt 9. Jul 2005, 17:42
Zitat von Beckman:
ein 'loeschen' im explorer ist noch lange kein physikalisches loeschen von daten.
es gibt ja nicht um sonst unzaehlige 'wiederherstellungs-tools'.
es lag in diesem fall net am buffer, dass er das video weiter schauen konnte, sondern daran, das der player die adresse der abzuspielenden daten (markierung: anfang/ende der datei) kannte.
der explorer hat lediglich geschaut, ob er exklusive-rechte auf die datei bekommen hat und hat den ganzen speicherbereich, der fuer die datei reserviert war, als 'leer' markiert.

die daten waren dennoch noch immer an derselben stelle und der player, der ihre position wusste, konnte sie problemlos weiterhin abspielen. (solang eben nix anderes drueber geschrieben wird)
Das wage ich zu bezweifeln. Nehmen wir an mein Player spielt eine Datei ab. Damit Windows die Datei loeschen kann, muss ich sie natuerlich schliessen. Um sie nachher ohne den Eintrag in der MFT wieder abspielen zu koennen, muesste ich mir saemtliche Sektoren, die die Datei auf der Festplatte belegt merken, und das in der richtigen Reihenfolge. Anschliessend muss ich die Daten direkt auslesen, und per Stream oder so an den Player selbst fuettern. Ich glaube kaum dass sich jemand diese Muehe macht

Ich kann mir das nur so erklaeren: um schneller auf die Daten zugreifen zu koennen, wird die Datei am Anfang komplett in den RAM eingelesen, und anschliessend von dort abgespielt. Das Handle auf die Datei ist damit unnoetig und kann weggeworfen werden. Die Daten liegen dann aber wahrscheinlich bis zum Stop-Befehl im RAM, und koennen deshalb weiterverwendet werden.
Du kannst ja mal probieren, mit demselben (!) Player eine Datei abzuspielen und die Datei waehrend dem Abspielen zu loeschen. Wenn sich meine Vermutung bestaetigt, dann lass mich sagen, dass die Art von Programmierung IMO ueberhaupt nicht gut ist. Solange ich die Datei brauche (selbst wenn ich sie im RAM zwischenlagere), sollte ich ein Handle darauf offenhalten, um eben das Loeschen zu verhindern. So machen es alle Player, ich kann z.B. keine AVI-Datei loeschen waehrend sie der MediaPlayer abspielt

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: Gelöschtes Video wird abgespielt

  Alt 9. Jul 2005, 18:23
Hallo,

Zitat von alcaeus:
Ich kann mir das nur so erklaeren: um schneller auf die Daten zugreifen zu koennen, wird die Datei am Anfang komplett in den RAM eingelesen, und anschliessend von dort abgespielt. Das Handle auf die Datei ist damit unnoetig und kann weggeworfen werden. Die Daten liegen dann aber wahrscheinlich bis zum Stop-Befehl im RAM, und koennen deshalb weiterverwendet werden.
Du kannst ja mal probieren, mit demselben (!) Player eine Datei abzuspielen und die Datei waehrend dem Abspielen zu loeschen. Wenn sich meine Vermutung bestaetigt, dann lass mich sagen, dass die Art von Programmierung IMO ueberhaupt nicht gut ist.
Greetz
alcaeus
Die Datei wird natürlich nicht komplett in den Speicher geladen, das dauert ja bei nem richtigen Video ewig und danach ist der Speicher voll. Manche User haben nur 256MB RAM.
Wenn Du irgendwo ein Video hast, dann kopier das mal und öffne die Kopie im Windows Media Player. Während dieses Video abgespielt wird lässt es sich ohne Probleme löschen. Natürlich ist die Datei physisch noch auf der Platte, aber DirectShow greift doch sicher auch über die API auf das Dateisystem zu?

Zitat von SirThornberry:
Variante2:
Diese ist eigentlich die wahrscheinlichere Variante da die Datei eigentlich nöcht gelöscht werden kann während sie verwendet wird. Und zwar hast du die Datei vermutlich über den Arbeitsplatz oder den Explorer gelöscht. Wenn dabei eine Datei noch in Verwendung ist meckert der Explorer in aller Regel nicht sofort rum sondern versucht die Datei trotzdem zu löschen, und erst wenn das löschen nach einer bestimmten zeit nicht geklappt hat kommt eine Fehlermeldung. Es kann also durchaus sein das du die Datei gelöscht hast (also dem Explorer den Befehl gegeben hast) und dann das Video noch angeschaut hast (drin rum gezappt). Danach klickst du auf stopp und in diesem moment wird die Datei (Handle) freigegeben und der Explorer löscht diese. Somit wars das und die Datei kann nicht wieder geladen werden.
Wenn ich aber z. B. ein mp3 abspiele meckert der Explorer sofort, dass die Datei noch in Benutzung ist. Und warum ist die Datei im Explorer schon weg, wenn andere Programme noch darauf zugreifen können? Normalerweise sollte Windows immer meckern, wenn eine Datei noch verwendet wird.

Gruß
xaromz
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz