hilpers


  hilpers > microsoft.* > microsoft.vc

 #1  
12.03.2007, 14:30
Alex_B
Hallo,

In Managed DirectX kann ich eine gerenderte Szene als Bitmap-Datei
speichern. Das funtkioniert.
Wie kann ich aber eine Bildfolge als Film speichern. Ich habe in
codeproject.com ein Beispiel in C++ gefunden, nicht aber für C#. Ich weiß
auch nicht wie ich das Programm in codeproject.com von C++ nach C#
umschreiben kann.

Vielen Dank für Eure Tipps,
viele Grüße
Alexander Braeumer
 #2  
12.03.2007, 15:44
Karsten Schulz
Hi Alex,

> Wie kann ich aber eine Bildfolge als Film speichern.


Willst du es als Konfirmen Videostream speichern,
kannst du einerseits VFW verwenden, oder du mußt
ein DirectShow Stream anlegen.

Willst du Linearen Specher endlos als Film -streamen
mach ich das so:

Hier mit DatenPack , optional via Zip oder als Streifenpacker.


#pragma once

#include "zlib.h"
#pragma comment(lib, "zdll.lib")
#define ENCPUT(count,last){if(!(count == 1 && 0xc0 != (0xc0&last)))*pDest++
= 0xc0|count;*pDest++ = last;}

class CPressure
{
public:
CPressure(void);
~CPressure(void);

DWORD Pressure(BYTE *pDest,BYTE *pScr,DWORD Size);
DWORD UnPressure(BYTE *pDest,BYTE *pScr,DWORD Size);

DWORD ZipPressure(BYTE *pDest,BYTE *pScr,DWORD Size);
DWORD ZipUnPressure(BYTE *pDest,BYTE *pScr,DWORD Size);

void Close(void);
bool Open(TCHAR *pFname,TCHAR *pMd, DWORD MaxSz);
bool Load(BYTE *pMem,DWORD Size);
bool Save(BYTE *pMem,DWORD Size);
private:
BYTE *m_pPackMem;
FILE *m_fp;
};

#include "StdAfx.h"
#include "Pressure.h"

CPressure::CPressure(void)
{
m_pPackMem = 0;
m_fp = 0;
}

CPressure::~CPressure(void)
{
Close();
}


DWORD CPressure::UnPressure(BYTE *pDest,BYTE *pScr,DWORD Size)
{
register BYTE c,press;

while(Size > 0)
{
c = *pScr++;

if( (c&0xc0) > 0x80)
{
press = (c & 0x3f);
c = *pScr++;
}else press = 1;

while(press--)
{
Size--;
*pDest++ = c;
}
}

return (DWORD)pScr;
}

DWORD CPressure::Pressure(BYTE *pDest,BYTE *pScr,DWORD Size)
{
register BYTE c = 0,last = *pScr, count = 1;

while(--Size)
{
if( (c = *(++pScr)) == last)
{
if(++count == 0x3f)
{
ENCPUT(count,last);
count = 0;
}
}
else
{
if(count)ENCPUT(count,last);
last = c,count = 1;
}
}

if(count)ENCPUT(count,last);

return (DWORD)pDest;
}


DWORD CPressure::ZipUnPressure(BYTE *pDest,BYTE *pScr,DWORD Size)
{
z_stream packet;memset(&packet,0,sizeof(z_stream));
inflateInit(&packet);
packet.next_in = (Bytef* )pScr;
packet.avail_in = Size;
packet.next_out = (Bytef* )pDest;
packet.avail_out = Size;
inflate(&packet,Z_FINISH);
inflateEnd(&packet);
return (DWORD)pScr + packet.total_out; //newsz
}

DWORD CPressure::ZipPressure(BYTE *pDest,BYTE *pScr,DWORD Size)
{
z_stream packet;memset(&packet,0,sizeof(z_stream));
deflateInit(&packet,Z_DEFAULT_COMPRESSION);//Z_DEFAULT_COMPRESSION//Z_BEST_COMPRESSION//Z_BEST_SPEED packet.next_in = (Bytef* )pScr; packet.avail_in = Size; packet.next_out = (Bytef* )pDest; packet.avail_out = Size; deflate(&packet,Z_FINISH); return (DWORD)pDest + packet.total_out; //newsz}bool CPressure::Save(BYTE *pMem,DWORD Size){ if(!m_pPackMem) return false; //Size = Pressure(m_pPackMem,pMem,Size)-(DWORD)m_pPackMem; Size = ZipPressure(m_pPackMem,pMem,Size)-(DWORD)m_pPackMem; if(!fwrite(&Size,sizeof(Size),1,m_fp)) return false; if(!fwrite(m_pPackMem,Size,1,m_fp)) return false; return true;//fwrite(pMem,Size,1,m_fp);//origsz}bool CPressure::Load(BYTE *pMem,DWORD Size){ if(!m_pPackMem) return false; DWORD sz; if(!fread(&sz,sizeof(sz),1,m_fp)) return false; if(!fread(m_pPackMem,sz,1,m_fp)) return false; Size = ZipUnPressure(pMem,m_pPackMem,Size)-(DWORD)pMem; //Size = UnPressure(pMem,m_pPackMem,Size)-(DWORD)pMem; return true;//fread(m_pPackMem,Size,1,m_fp);//origsz}bool CPressure::Open(TCHAR *pFname,TCHAR *pMd, DWORD MaxSz){ Close(); if(!(m_pPackMem = new BYTE[MaxSz])) return false; return (m_fp = _tfopen(pFname,pMd));}void CPressure::Close(void){ if(m_pPackMem) delete m_pPackMem,m_pPackMem = 0; if(m_fp) fclose(m_fp),m_fp = 0;}
Ähnliche Themen
Film aus ZDF Mediathek speichern?

Möchte gern aus der ZDF-Mediathek den Film "Die Rebellin Teil 1" auf Festplatte speichern. Habe Quicktime Pro installiert, aber leider sehe ich im Browserfenster nur das...

Digi mit kurzer Verschlußzeit und schneller Bildfolge?

Anknüpfend an den Beitrag unter "Erfahrungen mit Luftaufnahmen" habe ich gemerkt, daß analoge Kameras doch auch Vorteile haben. Nachdem ich dachte, meine zig Kilo analogen...

Film auf DVD speichern?

Ich wollte meinen fertig bearbeiteten Videofilm mittels "Nero" auf DVD brennen. "Nero" konnte aber kein DVD taugliches Format finden. Wie kann ich meinen bearbeiteten Film...

Einzelbild aus einem Film speichern

Gibt es die Möglichkeit ein Einzelbild aus einem Film abzuspeichern? Ich hab versucht einfach einen Screenshot zu machen und den benötigten Teil des Bildes abzuspeichern,...


Alle Zeitangaben in WEZ. Es ist jetzt 03:34 Uhr. | Privacy Policy