Autor Beitrag
BFK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 19.01.09 02:06 
Naja, das "video.avi" kommt weil ich vorher:
ausblenden C#-Quelltext
1:
path = Path.Combine(path,"video.avi");					

geschrieben habe, sorry, habe vergessen das zu sagen.

Wenn ich diese Zeile auslasse, dann kommt als Pfad ja nur das:
ausblenden Quelltext
1:
C:\Dokumente und Einstellungen\BFK\Lokale Einstellungen\Temp\temp1B0.tmp					

(Ok, diesmal war es zwar temp1C8.tmp, spielt ja aber keine Rolle.)
Und derselbe Fehler..!

Wenn ich diese tmp-Datei öffne, mit Windows Media (wie du sagtest) oder mit vlc player, dann wird das Video zwar abgespielt, aber ohne Bild, also nur Sound..!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 19.01.09 02:09 
user profile iconBFK hat folgendes geschrieben Zum zitierten Posting springen:
Naja, das "video.avi" kommt weil ich vorher:
ausblenden C#-Quelltext
1:
path = Path.Combine(path,"video.avi");					

geschrieben habe, sorry, habe vergessen das zu sagen.
Das musst du aber vor der Erzeugung des Streams machen, das ist dir hoffentlich klar?
Weil sonst erzeugst du die Datei mit dem ursprünglichen Namen und gibst den neuen Namen (einer nicht existierenden Datei) zurück...

Zudem würde es reichen .avi an den Dateinamen anzuhängen, dann sähe der so aus:
xy.tmp.avi

// EDIT:
Ich vermute auch, dass das Verzeichnis nicht automatisch erzeugt wird (denn der Dateiname .tmp wird ja mit deinem Path.Combine als Ordnername benutzt), deshalb ist das anhängen von .avi die sinnvollere Alternative.
Du kannst natürlich auch wie im VB Quelltext verfahren.
BFK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 19.01.09 02:20 
Habe das ja hier gemacht:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
public string GetTempFileFromBytes(byte[] data)
        {
            string path = Path.GetTempFileName();
            using (Stream stream = File.OpenWrite(path))
            stream.Write(data, 0, data.Length);
            path = Path.Combine(path,"video.avi");  // hier
            return path;
        }

und dann mit
ausblenden C#-Quelltext
1:
Video myvid = new Video(GetTempFileFromBytes(video1.Properties.Resources.video));					



user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:


Zudem würde es reichen .avi an den Dateinamen anzuhängen, dann sähe der so aus:
xy.tmp.avi

Hatte ich ja auch am Anfang so gemacht, nur kam da auch derselbe Fehler raus.

//Edit
Wenn ich .avi anhänge zeigt er mir dann folgenden Pfad:
ausblenden C#-Quelltext
1:
C:\Dokumente und Einstellungen\BFK\Lokale Einstellungen\Temp\tmp1B0.tmp\.avi					

Wie kann ich denn das "\" auslassen und wieso macht er überhaupt ein "\" ..?


Zuletzt bearbeitet von BFK am Mo 19.01.09 02:24, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 19.01.09 02:21 
Du hast ja auch genau das falsch gemacht, was ich eben geschrieben habe... :roll:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Das musst du aber vor der Erzeugung des Streams machen, das ist dir hoffentlich klar?
Weil sonst erzeugst du die Datei mit dem ursprünglichen Namen und gibst den neuen Namen (einer nicht existierenden Datei) zurück...
BFK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 19.01.09 02:28 
Sorry, könntest du mir das Bitte erklären, wie du das meinst..?

Weil nach meiner Logik nach setzte ich das ".avi" an meinem Pfad an und übergebe es doch danach an Video... .
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 19.01.09 02:46 
user profile iconBFK hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
public string GetTempFileFromBytes(byte[] data)
        {
            string path = Path.GetTempFileName();
            using (Stream stream = File.OpenWrite(path))
            stream.Write(data, 0, data.Length);
            path = Path.Combine(path,"video.avi");  // hier
            return path;
        }
Dann schauen wir doch mal was du machst, Zeile für Zeile:
  • Zuerst holst du mit Path.GetTempFileName() einen Pfad einer neuen temporären Datei, z.B.:
    ausblenden Quelltext
    1:
    C:\Dokumente und Einstellungen\BFK\Lokale Einstellungen\Temp\tmp1B0.tmp					

  • Dann erzeugst du einen Stream und öffnest diese Datei zum Schreiben.
  • Nun schreibst mit dessen Hilfe das Bytearray in diese Datei. Durch using wird diese danach auch ordnungsgemäß geschlossen.
  • Und jetzt änderst du path, in diesem Fall auf:
    ausblenden Quelltext
    1:
    C:\Dokumente und Einstellungen\BFK\Lokale Einstellungen\Temp\tmp1B0.tmp\video.avi					

  • Diesen neuen Wert von path gibst du zurück.
Ich fasse zusammen:
Du legst den Inhalt deiner Ressource in
ausblenden Quelltext
1:
C:\Dokumente und Einstellungen\BFK\Lokale Einstellungen\Temp\tmp1B0.tmp					

und gibst als Dateiname für die Datei zurück:
ausblenden Quelltext
1:
C:\Dokumente und Einstellungen\BFK\Lokale Einstellungen\Temp\tmp1B0.tmp\video.avi					

Klar? ;-)

Schreib doch stattdessen gleich am Anfang:
ausblenden C#-Quelltext
1:
string path = Path.GetTempFileName() + ".avi";					
(Und verändere danach path natürlich nicht mehr nach dem Schreiben der Datei.)

user profile iconBFK hat folgendes geschrieben Zum zitierten Posting springen:
//Edit
Wenn ich .avi anhänge zeigt er mir dann folgenden Pfad:
ausblenden C#-Quelltext
1:
C:\Dokumente und Einstellungen\BFK\Lokale Einstellungen\Temp\tmp1B0.tmp\.avi					

Wie kann ich denn das "\" auslassen und wieso macht er überhaupt ein "\" ..?
Das liegt am Path.Combine, genau das soll es ja machen. Wie wäre es, wenn du dir die Doku anschaust? ;-)
BFK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 19.01.09 03:14 
Das erklären hast du aber wirklich drauf muss ich schon sagen.

Nun zu meinem Problem:
:? Leider kommt immernoch dieselbe Fehlermeldung..!
Nur diesmal erstellt er eine Datei im Temp die ne avi-Datei ist namens "tmpblabla.tmp.avi"..!
Beim abspielen wird auch wieder nur Sound abgespielt..!

Weiss nicht, was ich diesmal wieder falsch mache...???

Ahh und noch was nebenbei, wo hättest du eigentlich das Video denn definiert..?
Meine wo wäre denn für dich am logischten die folgende Zeile zu schreiben..?
ausblenden C#-Quelltext
1:
Video myvid = new Video...					
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 19.01.09 03:25 
user profile iconBFK hat folgendes geschrieben Zum zitierten Posting springen:
:? Leider kommt immernoch dieselbe Fehlermeldung..!
Die Zeile mit
ausblenden C#-Quelltext
1:
path = Path.Combine...					
hast du gelöscht?

user profile iconBFK hat folgendes geschrieben Zum zitierten Posting springen:
Beim abspielen wird auch wieder nur Sound abgespielt..!
Hmm, da beide Dateien die gleiche Dateierweiterung haben, kann ich mir das gerade nicht erklären.

user profile iconBFK hat folgendes geschrieben Zum zitierten Posting springen:
Ahh und noch was nebenbei, wo hättest du eigentlich das Video denn definiert..?
Meine wo wäre denn für dich am logischten die folgende Zeile zu schreiben..?
ausblenden C#-Quelltext
1:
Video myvid = new Video...					
Ich habe selbst noch nicht allzuviel mit C# gemacht, eigentlich programmiere ich hauptsächlich in Delphi. Deshalb werde ich das ganze erst einmal ausprobieren. Dann kann ich dazu und zu dem Fehler vermutlich auch mehr sagen.

(Denn weder habe ich bisher mit Ressourcen noch mit Videos in C# gearbeitet. ;-))
BFK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 19.01.09 03:28 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconBFK hat folgendes geschrieben Zum zitierten Posting springen:
:? Leider kommt immernoch dieselbe Fehlermeldung..!
Die Zeile mit
ausblenden C#-Quelltext
1:
path = Path.Combine...					
hast du gelöscht?



Ja die habe ich natürlich gelöscht..!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 19.01.09 03:40 
Davon war ich auch ausgegangen, aber ich hätte eine andere Fehlermeldung erwartet aufgrund der Änderung, deshalb habe ich noch einmal nachgefragt. ;-)

Leider ist die Dokumentation von Microsoft an der Stelle ziemlich dürftig. Ich bin dabei es selbst auszuprobieren, muss aber erst noch herausfinden wie ich das in Visual Studio genau umsetzen muss (z.B. was Ressourcen angeht). Aber das ist sicher nicht schwer. :D

Ich denke ich werde in ein paar Minuten so weit sein. ;-)
BFK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 19.01.09 17:31 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:

Leider ist die Dokumentation von Microsoft an der Stelle ziemlich dürftig. Ich bin dabei es selbst auszuprobieren, muss aber erst noch herausfinden wie ich das in Visual Studio genau umsetzen muss (z.B. was Ressourcen angeht). Aber das ist sicher nicht schwer. :D


Ja MSDN ist in manchen Bereiche leider nicht so umfangsreich wie es sein sollte.

Hoffe du findest den Fehler und DANKE dir schon jetzt für deine Mühe und vor allem deiner kostbaren Zeit..!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 19.01.09 17:55 
Nachdem ich gestern beim Download des DirectX SDKs eingeschlafen bin (und es heute morgen vergessen hatte) :hair: habe ich es jetzt gerade eben getestet. Ich hatte keine Probleme, gleich der erste Versuch funktionierte. Und das auch ohne die Dateierweiterung auf .avi zu setzen.

Was noch nach der Erzeugung des Videos fehlte war das:
ausblenden C#-Quelltext
1:
2:
            myvid.Owner = MyPanel;
            myvid.Play();
Aber ansonsten funktionierte die Videoeinbindung problemlos. :nixweiss:

Mein kompletter Quelltext (also praktisch nur Copy&Paste):
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
        public string GetTempFileFromBytes(byte[] data)
        {
            string path = Path.GetTempFileName();
            using (Stream stream = File.OpenWrite(path))
                stream.Write(data, 0, data.Length);
            return path;
        }
        
        private void button1_Click(object sender, EventArgs e)
        {
            Video myvid = new Video(GetTempFileFromBytes(Properties.Resources._N24_20090119_041008));
            myvid.Owner = MyPanel;
            myvid.Play();
        }

// EDIT:
Ach ja: Die Anzeige und auch der Sound waren normal.
// EDIT2:
Ich weiß nicht, ob das wichtig ist, aber ich habe einfach alle DLLs mit Microsoft.DirectX.* als Referenz hinzugefügt, nicht nur einzelne.
BFK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 19.01.09 18:31 
Komisch bei mir funkt es nicht..! :( :( :(

Mit "alle DLLs mit Microsoft.DirectX.* " meinst du doch die Verweise, die man im Ordner Verweise unter den Projektmappenexplorer hinzufügt, oder nicht..?

Weil da habe ich nur (von den DirectX) "Microsoft.DirectX" und "Microsoft.DirectX.AudioVideoPlayback", aber auch wenn ich andere Verweise da hinzufüge (wie z.B. DirectX.DirectPlay), funkt es nicht, also kommt immernoch der Fehler der Exception.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:

Was noch nach der Erzeugung des Videos fehlte war das:
ausblenden C#-Quelltext
1:
2:
            myvid.Owner = MyPanel;
            myvid.Play();
Aber ansonsten funktionierte die Videoeinbindung problemlos. :nixweiss:

Die beiden Zeilen habe ich auch, ich habe eigentlich den genau gleichen Code wie du, nur dass sich dieser Abschnit:
ausblenden C#-Quelltext
1:
2:
3:
Video myvid = new Video(GetTempFileFromBytes(Properties.Resources._N24_20090119_041008));
            myvid.Owner = MyPanel;
            myvid.Play();

in der Funktion Form1_Load befindet und nicht in button1_click, ist ja eigentlich in diesem Fall doch egal..!

Könnte es sein, dass ich mein Video nicht richtig als resource gespeichert habe..???
Aber dann hätte doch eigentlich schon bei dieser Zeile:
ausblenden C#-Quelltext
1:
Mynamespace.Properties.Resources.video					

einen Fehler geben müssen, oder nicht..???
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 19.01.09 20:46 
Ich werde einfach mal ein komplettes Projekt hochladen, inkl. Testvideo. Das muss ich aber erst vorbereiten, es soll ja auch nicht unnötig groß sein, aber sehen und hören muss man ja trotzdem was.

user profile iconBFK hat folgendes geschrieben Zum zitierten Posting springen:
Könnte es sein, dass ich mein Video nicht richtig als resource gespeichert habe..???
Aber dann hätte doch eigentlich schon bei dieser Zeile:
ausblenden C#-Quelltext
1:
Mynamespace.Properties.Resources.video					

einen Fehler geben müssen, oder nicht..???
Würde ich auch denken, ja.
BFK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Di 20.01.09 14:01 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ich werde einfach mal ein komplettes Projekt hochladen, inkl. Testvideo. Das muss ich aber erst vorbereiten, es soll ja auch nicht unnötig groß sein, aber sehen und hören muss man ja trotzdem was.



Ahh ok, dann warte ich mal einfach ab.
Bin wirklich gespannt, woran es liegt..!
BFK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mi 21.01.09 17:34 
Hätte nur noch eine Frage.
Da es bei mir aus irgendeinen Grund nicht klappt, (habe es mittlerweile auch aufm zweiten Rechner getestet) wollte ich mal Fragen, gibt es noch einen anderen Player, ausser den DirectX, womit ich video Dateien abspilen kann...?
Und wenn ja, welcher..?

MFG BFK..!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 21.01.09 18:00 
Also ich habe jetzt schnell eine Demo mit einer .avi Datei angehängt. Ich hatte es vergessen. :oops:
Alles dabei was im Projektordner war, inkl. kompilierter Exe.
Einloggen, um Attachments anzusehen!
BFK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mi 21.01.09 18:39 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Also ich habe jetzt schnell eine Demo mit einer .avi Datei angehängt. Ich hatte es vergessen. :oops:
Alles dabei was im Projektordner war, inkl. kompilierter Exe.



Also habe jetzt dein Projekt mal getestet und leider kommt bei mir wieder der gleiche Fehler, nur diesmal wo anders und zwar bei "program.cs" in der Zeile:
ausblenden C#-Quelltext
1:
Application.Run(new Form1());					


Habe zwei bilder miteingehängt, damit du es selbst sehen kannst und vielleicht daraus deine Entschlüsse ziehen kannst.

Der Fehler im Bild 1(der ist grad unwichtig, ist doch wegen der projektverschiebung..!) taucht auf sobald ich auf "button1" drücke. Dann kommt die unbehandelte DirectXException (Bild 2)..!
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 21.01.09 18:48 
Was passiert denn, wenn du ohne zu kompilieren oder irgendetwas nur die exe im Bin\Debug Verzeichnis von mir ausführst. Achte darauf, dass es wirklich die aus der Zip-Datei ist.
Das ist ja vor allem interessant, weil das ja bereits fertig kompiliert ist. D.h. wenn da der Fehler auftritt, verrät das schon einiges. Dann liegt es an etwas auf deinem PC. Allerdings hätte ich, wenn es so ist, im Moment nicht viele Ideen mehr, könnte aber versuchen das auf anderen PCs selbst zu testen um einen zu finden, wo das auch auftritt.
BFK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mi 21.01.09 18:59 
Ok habe es direkt von der exe-gestartet und der Fehler taucht wieder auf, diesmal anders. (Siehe Bild im Anhang).
Hab es dann auch auf meinem zweiten Rechner getestet, wo auch der gleiche Fehler kommt.
Hab es dann per Skype an nem Kumpel geschickt, also nur die exe, und bei ihm läuft es normal. Er meint es bewegt sich ein Pfeil und so, es kommte also keine Fehlermeldung...!

Das Problem ist wirklich nur bei mir und komischerweise bei beiden Pcs..!
Einloggen, um Attachments anzusehen!