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:
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:
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
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