[.NET] Frame uit video opslaan

Pagina: 1
Acties:

  • phYzar
  • Registratie: November 2001
  • Laatst online: 21:21
Voor een programma waar ik mee bezig ben in C# wil ik de mogelijkheid hebben een frame uit een video op te slaan als afbeelding. Wat ik dus zoek is een optie die dit mogelijk maakt.

Om de video af te spelen gebruik ik AudioVideoPlayback. Afspelen van video's gaat goed hiermee. Ik ben gaan zoeken naar een mogelijkheid om hiermee ook frames te capturen, maar ik heb geen mogelijkheid gevonden dit te doen.

Meer succes had ik met een andere optie: Dexterlib, een interop wrapper rond qedit.dll. Via deze code gaat het framecapturen perfect:
C#:
1
2
3
4
5
6
7
MediaDetClass md = new MediaDetClass();
md.Filename = "c:\\pad\\naar\\video.avi";

//de afmetingen haal ik uit het video object van AudioVideoPlayback
Size videoSize = this.video.DefaultSize;
//CurrentPosition is de positie in seconden waar de video die met AudioVideoPlayback afspeelt zich bevindt
md.WriteBitmapBits(this.video.CurrentPosition, videoSize.Width, videoSize.Height, "c:\\pad\\naar\\output\\file.bmp");


Wat is nu het probleem dan? Nou, bovenstaande werkt perfect voor verschillende soorten videobestanden, behalve voor mpeg2 bestanden. AudioVideoPlayback speelt deze gewoon goed af, maar wanneer ik probeer te capturen geeft WriteBitmapBits de volgende error:
code:
1
2
System.Runtime.InteropServices.COMException(0x80040200): Uitzondering van HRESULT: 0x80040200.
....at....WriteBitmapBits....


Googlen levert op dat er wat mis moet zijn met het bestand wat ik probeer af te spelen, maar geen enkel ander programma (MediaPlayer, MediaPlayer Classic, zelfs m'n eigen code met AudioVideoPlayback) geeft problemen, en elk mpeg2 bestand wat ik tot m'n beschikking heb geeft die fout.

Hoe zou ik dit probleem kunnen oplossen, of zijn er nog andere opties? (Googlen levert vooral mogelijkheden op voor het capturen van webcam/tv-kaart beelden)

//nog wat linkjes:
http://www.codeproject.com/cs/media/picturesfrommovie.asp
http://www.gotdotnet.com/...?Id=190686&Page=1&Size=25

  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 14:01

ThunderNet

Flits!

Je zou eens kunnen onderzoeken, hoe je zelf de overlay buffer kunt uitlezen.. (dit is wat Dexterlib waarsch. ook doet :) )

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • phYzar
  • Registratie: November 2001
  • Laatst online: 21:21
Zucht...ik kom er niet uit. Als het alleen voor in mijn applicatie zou zijn zou ik nog kunnen denken over het opslaan van de juiste tijd in de video en wanneer de gebruiker dat beeld wil bekijken gewoon de video op de juiste plaats voorschotelen...helaas moet ik ook de optie hebben het te kunnen printen, dus die optie zit er niet in :'(