Aktuelle Zeit: 29.09.2020 18:08

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Forumsregeln


Die Forumsregeln lesen



Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: Video Library
BeitragVerfasst: 24.04.2017 22:10 
Offline
Benutzeravatar

Registriert: 04.02.2017 15:48
PB-Version: Purebasic 5.60
OS: Win Vista SP 2 / 32-Bit

Compilereinstellungen:
[ ] Thread-sicheres Executable erstellen
[ ] OnError-Unterstützung einschalten
[x] Moderne Themen-Unterstützung aktivieren (für Windows XP und höher)
[ ] Administrator-Modus für Windows Vista und höher anfordern
[ ] User-Modus für Windows Vista und höher anfordern (keine Virtualisierung)

Ich weiss, dass keiner mehr 'VISTA-Mist_da' hat, aber dennoch ein interessantes Phänomen:

Dass die VideoLib einen 'gehörigen Knall' hat, ist ja schon allgemein bekannt. Die Anzahl der abgespielten Frames stimmt nie. Bei mir jedenfalls ist der Rückgabewert exorbitant gross und erst nach einer Division durch 10.000.000 und einem Korrekturalghoritmus zu gebrauchen. Jetzt habe ich an einer Datei des MP4-Formates jedoch nur die Dateiendung umbenannt, aus MP4 habe ich VIDEO gemacht, und schon stimmt der Rückgabewert der abgespielten Frames.

Jetzt kan man auf den Gedanken kommen, erst alle Dateien vor dem Abspielen einmal unter anderem Namen mit anderer Endung in den temporären Ordner zu kopiern und danach dann aufzurufen. :allright: :freak:

Einfach mit 'CopyFile()' geht das seltsamer Weise aber nicht.
Code:
temporaryvideo$ = GetTemporaryDirectory() + "temp.video"
CopyFile("MyVideo.mp4", temporaryvideo$)

Nach einem CopyFile() muss die Datei wieder die Endung 'mp4' haben, ansonsten mag er sie nicht (Öffnen mittels LoadMovie() scheitert).

Nur über einen Umweg klappt es ...
Code:
temporaryvideo$ = GetTemporaryDirectory() + "temp.video"
;// lade sie per 'IncludeBinary'
 DataSection
    Video1:
    IncludeBinary "MyVideo.mp4"
    VideoEnd:
  EndDataSection

;// schreibe den Speicherpuffer als 'temporaryvideo$' zurück auf die Festplatte (WriteData())
         CreateFile(70, temporaryvideo$)
          WriteData(70, ?Video1, ?VideoEND - ?Video1)
          CloseFile(70)

If LoadMovie(0, temporaryvideo$)
 PlayMovie(0, WindowID(0))
Endif


Nur das direkte Umbenennen (wie oben schon beschrieben) von 'MyVideo.mp4' in 'MyVideo.video' geht problemlos.
Übrigens tritt dieses Phänomen, dass die Anzahl der abgespielten Frames, die von MovieStatus() zurückgegeben werden, nach dem Umbenennen wieder stimmen, nicht mehr bei Win 7 SP 1 / 32-Bit auf. Für mich ist dies ein Hinweis auf ein Konvertierungsfehler der ausgelesenen Angaben, der wohl irgendwie Dateiendungsabhängig ist, bzw. dann die defekte Umrechnungsroutine benutzt wird. Auch dass davon VISTA/x32 betroffen ist und Win7/x32 nicht mehr, sollte ein Hinweis auf die Fehlerquelle sein.

Kann man die VideoLib nicht mal nach all den Jahren überarbeiten? Die Erweiterung um Fähigkeiten wie 'Streams' zu öffnen wäre auch recht interessant.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye