MediaInfo.dll und XProfan

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • MediaInfo.dll und XProfan

      So, nach einer Ewigkeit habe ich mich mal wieder an die Tasten gewagt. Ich will ein Programm schreiben, das von Videodateien Eigenschaften ausliest und in eine Tabelle einträgt. Dazu möchte ich die MediaInfo.dll nutzen. Diese ist kostenlos, aber es liegt kein Code für XProfan bei. Den wollte ich natürlich selbst machen, aber ich komme schon recht schnell nicht weiter... :cursing:

      Folgender Code soll die DLL laden (funktioniert) und dann, per DLL, die Testdatei öffnen und schließen. Leider bekomme ich beim Öffnen immer Rückgabewert 0, also Fehler (laut Dokumentation). Die Datei existiert natürlich, aber es wird trotzdem nichts.

      Quellcode

      1. declare dll&,s$,h&clsdll&=Importdll("D:\\XProfan\\Projekte\\MediaInfo\\MediaInfo.dll","MI_")clsh&=1Print "DLL-Handle: "+Str$(dll&)s$="D:\\Test.mkv"'s$="D:\\XProfan\\Projekte\\MediaInfo\\Test.mkv"Print "FileExists: "+s$+" -> "+Str$(FileExists(s$))Print "Erfolg: "+Str$(MI_MediaInfoA_Open(h&,Addr(s$)))Print "Handle: "+Str$(h&)MI_MediaInfo_Close(h&)print "Warte..."waitinputFreeDLL dll&


      Hat jemand schon Erfahrung mit der DLL? Ich werde nicht mal aus der Hilfe schlau, ob die Variabel "h&", also das Dateihandle, von mir vorgegeben werden soll oder von der DLL vergeben wird.

      Edit: Natürlich bin ich gleich im falschen Forum gelandet, bitte den Beitrag in die DLLs verschieben. :oops:
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net
    • Vielleicht solltest Du als Erstes mal versuchen, den Quellcode auf mehrere Zeilen aufzuteilen. ;-)
      So kann ihn niemand testen.

      Gruß
      Roland
      (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
      AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


      http://www.xprofan.de
    • Huch, so ist der natürlich nicht. :8O:

      Quellcode

      1. declare dll&,s$,h&
      2. cls
      3. dll&=Importdll("D:\\XProfan\\Projekte\\MediaInfo\\MediaInfo.dll","MI_")
      4. cls
      5. h&=1
      6. Print "DLL-Handle: "+Str$(dll&)
      7. s$="D:\\Test.mkv"
      8. Print "FileExists: "+s$+" -> "+Str$(FileExists(s$))
      9. Print "Erfolg: "+Str$(MI_MediaInfoA_Open(h&,Addr(s$)))
      10. Print "Handle: "+Str$(h&)
      11. MI_MediaInfo_Close(h&)
      12. print "Warte..."
      13. waitinput
      14. FreeDLL dll&
      Alles anzeigen
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net
    • @P. Specht: Jo. Die DLL kann man einzeln laden, mit Beispielen und Quellcode.

      Es ist mir schon fast peinlich, da ich eigentlich dachte, dass ich ganz ok programmieren kann. <X
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net
    • Hab ANSI und Unicode probiert. Die Funktion zum Dateiöffnen ist auch implementiert. :-( Da werde ich mich wohl mal in das Delphi-Beispiel reinfitzen müssen.
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net
    • ...das ist natürlich auch eine Möglichkeit. Werde ich morgen mal probieren, danke für den Hinweis.

      ...und dann kommen sicher die nächsten Fragen. :lol:
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net
    • Bereich geht auch nicht. Wenn ich nicht mal die Datei öffnen kann, wie soll ich sie dann verarbeiten. ich krieg hier noch 'ne Krise... :thumbdown:
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net
    • Wenn ich mir das so ansehe, müßte es aber Addr(h&) heißen für das Handle. Ist als Typ IntPtr, also Zeiger auf einen Int angegeben. Anders könnte die Funktion ja auch das Handle gar nicht über die Variable zurück geben. Macht aber auch keinen Unterschied, der Testcode tut das Gleiche, der Wert in Handle wird durch Open nicht verändert :??:

      Gruß Volkmar
    • Hallo Volkmar,
      könnte stimmen, aber ich weiß leider immer noch nicht ob ich der DLL das Handle vorgebe oder ob sie eins vergibt. Da werde ich auch aus der Hilfe nicht schlau.
      Ich werde mal über Ostern weiterschnüffeln.
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net
    • Ich hab heut und morgen Nachtschicht. Aber über Ostern fitze ich mich mal richtig rein.

      Wenns nichts wird muss ich eben bei den einfachen Dingen bleiben.[Blockierte Grafik: https://i.imagebanana.com/img/xaefgobd/hello_world_oc.png]
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net
    • Die Erzeugung des Handles mit MediaInfo_New fehlt in Deinem Code. So geht es:

      Quellcode

      1. declare dll&,s$,h&
      2. window 800,600
      3. dll&=Importdll("f:\\ENTW\\Profan Projekte\\MediaInfo\\MediaInfo.dll","MI_")
      4. h&=MI_MediaInfoA_New()
      5. Print "DLL-Handle: "+Str$(dll&)
      6. s$="Z:\\Filme\\Nightwish - Live in Concert - Live from Wacken - Full Show -.mp4"
      7. Print "FileExists: "+s$+" -> "+Str$(FileExists(s$))
      8. Print "Erfolg: "+Str$(MI_MediaInfoA_Open(h&,Addr(s$)))
      9. Print "Handle: "+Str$(h&)
      10. MI_MediaInfo_Close(h&)
      11. print "Warte..."
      12. waitinput
      13. FreeDLL dll&
      Alles anzeigen
      Gruß
      Roland
      (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
      AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


      http://www.xprofan.de

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von RGH ()

    • Und so bekommst Du die ganze Information über die Datei:

      Quellcode

      1. declare dll&,s$,h&
      2. window 1200,1000
      3. dll&=Importdll("f:\\ENTW\\Profan Projekte\\MediaInfo\\MediaInfo.dll","MI_")
      4. h&=MI_MediaInfoA_New()
      5. s$="Z:\\Filme\\Nightwish - Live in Concert - Live from Wacken - Full Show -.mp4"
      6. MI_MediaInfoA_Open(h&,Addr(s$))
      7. Print String$(MI_MediaInfoA_Inform(h&,0),0)
      8. MI_MediaInfo_Close(h&)
      9. print "Warte..."
      10. waitinput
      11. FreeDLL dll&
      Alles anzeigen
      (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
      AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


      http://www.xprofan.de
    • Wow, danke Roland. Auf die Idee mit New wäre ich nicht so schnell gekommen. Das ist doch recht kompliziert gemacht, aber sicher Standard.

      Da bastel ich mal eine Include zusammen. :thumbsup:

      @Roland: Da du mehr Einblick in Delphi hast: Kannst du eventuell noch auf die Schnelle rausfinden, wie ich MediaInfo_Get einzelne Elementa abfragen kann?
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jac de Lad ()

    • Es reicht ein New zu Beginn, um die DLL zu initialisieren und ein Delete am Ende des Prorammes. Dazwischen kann man seine Dateien untersuchen: Open - Inform - Close.
      Das Close dient dazu, die untersuchte Datei wieder freizugeben. Wenn es weggelassen wird, gibt es keine Fehler, aber die Datei kann möglicherweise vor Beenden des Programmes nicht von anderen Programmen geöffnet werden.

      Quellcode

      1. declare dll&,s$,h&
      2. window 1200,1000
      3. dll&=Importdll("f:\\ENTW\\Profan Projekte\\MediaInfo\\MediaInfo.dll","MI_")
      4. h&=MI_MediaInfoA_New()
      5. s$="Z:\\Filme\\Nightwish - Live in Concert - Live from Wacken - Full Show -.mp4"
      6. MI_MediaInfoA_Open(h&,s$)
      7. Print String$(MI_MediaInfoA_Inform(h&,0),0)
      8. MI_MediaInfoA_Close(h&)
      9. Print "Taste drücken ..."
      10. WaitInput
      11. s$="Z:\\Filme\\winterclassic.mp4"
      12. MI_MediaInfoA_Open(h&,s$)
      13. Print String$(MI_MediaInfoA_Inform(h&,0),0)
      14. MI_MediaInfoA_Close(h&)
      15. print "Taste drücken zum Beenden."
      16. MI_MediaInfoA_Delete(h&)
      17. waitinput
      18. FreeDLL dll&
      Alles anzeigen
      Gruß
      Roland
      (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
      AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


      http://www.xprofan.de

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von RGH () aus folgendem Grund: CLOSE und DELETE verwechselt.