AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Video Downloadmanager -> Abspielen bevor DL beendet

Video Downloadmanager -> Abspielen bevor DL beendet

Ein Thema von basdee · begonnen am 18. Jun 2007 · letzter Beitrag vom 21. Jun 2007
Antwort Antwort
Benutzerbild von basdee
basdee

Registriert seit: 17. Apr 2006
Ort: Berlin
4 Beiträge
 
#1

Video Downloadmanager -> Abspielen bevor DL beendet

  Alt 18. Jun 2007, 09:27
Hi liebe Delphigemeinde,

ich bin gerade dabei ein ActiveX Downloadmanager zu Prgrammieren.
Das funktioniert auch schon ganz gut (Fortschrittanzeige, Gelesene Bytes etc.).

Es werden ca. 1GB große Videos gespeichert. Jetzt soll man aber
das Video bereits öffnen können bevor der DL Manager fertig ist mit downloaden.
Wenn ich versuche mit VLC oder Mplayer die Datei abzuspielen kommt immer canot open the file xyz.wmv
NAch dem Download funktioniert es einwandfrei (nachdem TFilestre.free)


Erstmal etwas Code:


Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
 lStream: TStream;
begin
 
// fmShareDenyNone -> laut meinem Verständnis von Deny none das richtige..
lStream:=TFileStream.Create('C:\download.wmv', fmShareDenyNone or fmCreate);

 try
   http.Get('http://www.server.de/video.wmv', lStream);

 finally
   lStream.Free;
 end;
end;
Ich habe es auch schon mit einem TCPClient versucht aber es scheitert immer an der Art
wie ich die Loakale Datei zum schreiben öffne.
Gibt es da eine alternative damit die datei für andere Programm lesbar wird.

Danke schonmal im Voraus

Gruss
BasDee
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#2

Re: Video Downloadmanager -> Abspielen bevor DL beendet

  Alt 18. Jun 2007, 09:34
Viele Videos stecken in Containern, die teilweises Abspielen schwer bis unmöglich machen, etwa weil wichtige Kontrollstrukturen am Ende der Datei sind, oder weil die Parser dafür im Player nur vollständige Kontrollstrukturen erwarten (und bei AVI etwa geht der äußerste Container halt bis zum Ende).

Downloadmanager gibt es ja wie Sand am Meer, wie komfortabel ist Deiner denn? Wenn Du schon mehrere Teilabschnitte gleichzeitig herunterzuladen kannst, würde ich einfach mal hingehen und dafür sorgen, daß das Ende der Datei (einige MB, wahrscheinlich reicht wesentlich weniger) gleich recht früh mit heruntergeladen werden (die Datei also von Anfang an die volle Größe bekommt).
  Mit Zitat antworten Zitat
Benutzerbild von basdee
basdee

Registriert seit: 17. Apr 2006
Ort: Berlin
4 Beiträge
 
#3

Re: Video Downloadmanager -> Abspielen bevor DL beendet

  Alt 18. Jun 2007, 11:46
HI,

Das Video an sich ist bereits ab ein paar MB abspielbar ... wenn ich es z.B. mit Firefox runterlade
und in den Player schmeiße.

Mein Problem ist das Delphi die Datei so lange sperrt bis der Download abgeschlossen ist...
Also ich bekomme keinen Zugriff mit einem anderen Programm (Fehlermeldung : Zugriff verweigert)

Ziel ist es :

1. Download wird gestartet -> funktioniert
2. Geschwindigkeit berechnen -> funktioniert
3.1 Ab einem bestimmten Prozentsatz ->berechnung funktioniert
3.2 wird der Mediaplayer dazu veranlasst die Datei abzuspielen.-> Zugriff auf Datei nicht möglich (Download läuft im Hintergrund weiter)

Danke für euer Feedback


Danke
Gruss
BasDee
  Mit Zitat antworten Zitat
Benutzerbild von basdee
basdee

Registriert seit: 17. Apr 2006
Ort: Berlin
4 Beiträge
 
#4

Re: Video Downloadmanager -> Abspielen bevor DL beendet

  Alt 21. Jun 2007, 14:43
Also ich habe das Problem jetzt alleine lösen können.

Es war allerdings einfacher als gedacht :

Erst erstelle ich eine Datei mit :
TFileStream.Create(savedir, fmShareDenyNone or fmCreate); Dann gebe ich diese wieder frei und öffne sie mit
CreateFile(PChar(savedir),GENERIC_WRITE,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); wieder und kann die Datei beschreiben und gleichzeitig mit einem Player darauf zugreifen.


Jetzt stehe ich vor dem Problem das ich, falls die Datei schon zum Teil vorhanden ist den Download fortsetzen möchte.

Das Problem was nun auftaucht ist das er wieder am Anfang der Datei beginnt zu schreiben.

Gibt es eine methode den Aufruf von
CreateFile(PChar(savedir),GENERIC_WRITE,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); so zu modifizieren das er den Pointer an das Ende der Datei setzt.


schomal danke für euere Hilfe
  Mit Zitat antworten Zitat
Benutzerbild von basdee
basdee

Registriert seit: 17. Apr 2006
Ort: Berlin
4 Beiträge
 
#5

Re: Video Downloadmanager -> Abspielen bevor DL beendet

  Alt 21. Jun 2007, 16:22
So ich habe mich mal durch die WindowsAPI Gekämpft
und bin fündig geworden - das Zauberwort heißt

SetFilePointer. -> WindowsAPI SetFilePointer

Mit SetFilePointer kann man via
SetFilePointer(filevar,0,nil,FILE_END); Den Dateizeiger so setzten das am Ende der Datei weitergeschrieben wird !
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19: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