WinFuture-Forum.de: C# Erweiterte Dateiinfos Auslesem - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

C# Erweiterte Dateiinfos Auslesem Dauer eines Films usw.


#1 Mitglied ist offline   Wasschreibtmanhierrein? 

  • Gruppe: Mitglieder
  • Beiträge: 17
  • Beigetreten: 10. November 08
  • Reputation: 0

geschrieben 01. August 2009 - 21:07

Hi,

Ich versuche seit einiger Zeit, ein Programm zu schreiben, das mir kompfortabel meine Filme verwaltet. Es soll u.a. Dauer, Qualität (Auflösung) und Größe des Films auslesen. Die Größe funktioniert bei jeder Datei mit FileInfo.Length, soweit kein Problem. Den Rest versuche ich mit dem DirectX SDK auszulesen:

CODE
Video vid = new Video(pfad, false);
dauer = vid.Duration / 60;
if (dauer > 60)
{
dauersuff = " h";
dauer /= 60;
}
else
{
dauersuff = " min";
}
qualitaet = vid.DefaultSize;

Allerdings gibt es beim Format .mkv eine DirectX Exception (VFW_E_UNSUPPORTED_STREAM), Bei manchen Filmen (.avi) ebenfalls (E_NOINTERFACE). Schätze das liegt am Codec oder ähnlichem. Außerdem ist das Programm nicht sonderlich schnell, da für jeden Film ein Video zum Abspielen vorbereitet wird.
Wie kann ich solche Infos sonst aus einer Datei auslesen (Der Win-Explorer kann es schließlich auch).
Unterstüzt werden sollen avi, mpg, mkv und evtl. mp4.
Könnte man es mit verschiedenen Player-SDKs probieren (KM-Player,VLC,...) oder stehen die Infos am Ende der Datei (wie z.B. bei ID3 Tags)?

Thx schonmal,
Wsmhr?.
Wer braucht heutzutage schon eine Signatur?
0

Anzeige



#2 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 03. August 2009 - 08:46

Für Avi sollte die AVI RIFF File Reference ganz nützlich sein. Eine C# Implementierung findest du unter http://www.codeproje...riffparser.aspx

Ansonsten kannst du dich ja evtl. etwas vom VLC Quelltext inspirieren lassen.
0

#3 Mitglied ist offline   schumi0815 

  • Gruppe: aktive Mitglieder
  • Beiträge: 482
  • Beigetreten: 20. Juli 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:München

geschrieben 03. August 2009 - 08:58

gibts thread im msdn-forum. der könnte evtl ganz nützlich sein.

offtopic: finds ganz lustig zu sehn dass ich nicht der einzige bin der Variablen hernimmt die "von der Norm abweichen"^^
0

#4 Mitglied ist offline   Wasschreibtmanhierrein? 

  • Gruppe: Mitglieder
  • Beiträge: 17
  • Beigetreten: 10. November 08
  • Reputation: 0

geschrieben 03. August 2009 - 16:48

Hi,

Danke für die Antworten, werde bei Gelegenheit das ganze ausprobieren.

P.S.: Was meinst du mit von der Norm abweichen?

MfG,
Wsmhr?.
Wer braucht heutzutage schon eine Signatur?
0

#5 Mitglied ist offline   bluefisch200 

  • Gruppe: aktive Mitglieder
  • Beiträge: 718
  • Beigetreten: 28. Januar 07
  • Reputation: 0

geschrieben 03. August 2009 - 17:16

Na ja es gibt verschiedene "Experten" welche meinen ihr eigenes Konzept in der Art wie man Variablen benennen soll als die ultimative Lösung anpreisen...es gibt keine Norm und du kannst auch nicht davon abweichen...
Laptop: Apple Macbook / Intel Core 2 Duo 2.26 Ghz / 2 GB DDR3 / 250 GB HDD / nVidia 9400GT
Desktop: AMD "Dragon" / Phenom X4 955BE 3.2 Ghz / 8 GB DDR3 / 1 TB HDD + Intel X25 SSD / ATI 4870
Smartphone: SGS / Samsung Hummingbird 1 Ghz / 512 MB RAM / 2 GB Internal + 10 GB SD / SGX540
0

#6 Mitglied ist offline   mibtng 

  • Gruppe: aktive Mitglieder
  • Beiträge: 298
  • Beigetreten: 03. Juni 05
  • Reputation: 0

geschrieben 03. August 2009 - 17:23

Vor allem wäre es keine Norm sondern ein Standard.
Und naja, es gibt schon gewisse "Standards" zum Benennen von Variablen und Methoden. Aber man muss sich nicht dran halten, aber z.B. sollte man in Java nun mal Methoden immer mit Kleinbuchstabe, in C# aber mit Großbuchstabe beginnen lassen... und die kommen nicht von Experten sondern von den Machern.

Allerdings kenne ich keine Konvention (das ist im Übrigen der bessere Begriff) für die Benennung lokaer Variablen...

Und es ist so oder so Ansichtssache. Allerdings finde ich dauersuff auch nicht gerade schön... wieso muss man sich denn bei heutigen IDEs noch das "ix" sparen in suffix? Aber was soll's...

Dieser Beitrag wurde von mibtng bearbeitet: 03. August 2009 - 17:24

0

#7 Mitglied ist offline   Wasschreibtmanhierrein? 

  • Gruppe: Mitglieder
  • Beiträge: 17
  • Beigetreten: 10. November 08
  • Reputation: 0

geschrieben 18. August 2009 - 18:40

So, habe mich jetzt eine Weile mit der DirectShowLib auseinandergesezt und komme immer noch nicht an einem Fehler vorbei:

CODE
DirectShowLib.VideoInfoHeader2 videoinfoheader = new DirectShowLib.VideoInfoHeader2();
Rectangle groesse = videoinfoheader.SrcRect.ToRectangle();


Mir ist klar, dass irgendwo noch der Pfad angegeben werden sollte, aber nicht, wo :)

Der Fehler ist eine NullReferenceException (ist auch klar, von welchem video sollte er die eigenschaften haben?!)

Aus der Onlinehilfe im MSDN werde ich auch nicht schlauer ;D

Kann mir wer helfen?

MfG
Wsmhr?.

P.S.: Oh ja, daran probiere ich seit 2 Wochen rum!
Wer braucht heutzutage schon eine Signatur?
0

#8 Mitglied ist offline   Wasschreibtmanhierrein? 

  • Gruppe: Mitglieder
  • Beiträge: 17
  • Beigetreten: 10. November 08
  • Reputation: 0

geschrieben 19. August 2009 - 13:03

:blush:

Na also, damit gehts:

CODE
DirectShowLib.IBasicVideo basicvideo = null;
DirectShowLib.IGraphBuilder graphbuilder = null;
DirectShowLib.IMediaSeeking mediaseeking = null;
graphbuilder = (DirectShowLib.IGraphBuilder)new DirectShowLib.FilterGraph();
graphbuilder.RenderFile(path, null);
mediaseeking = (DirectShowLib.IMediaSeeking)graphbuilder;
basicvideo = graphbuilder as DirectShowLib.IBasicVideo;

basicvideo.GetVideoSize(out x,out y);
mediaseeking.GetDuration(out dauerdirectshowliblong);

Das lustige daran ist, dass mich eine chinesische Seite draufgebracht hat:
http://aaronmind.blo...09/01/dddd.html

MfG Wsmhr?.
Wer braucht heutzutage schon eine Signatur?
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0