[vtkusers] Problems using more than one vtkMPEG2Writer simultaneously, only one creates a working MPEG

Jefferson Thomas foramuyou at gmail.com
Wed May 28 05:13:09 EDT 2008


Hi,
I want to use more then one vtkMPEG2Writer in the same time and output
many MPEG.
The problem is that every time I try to do it only one of the MPEG
files is working after that.
Here is a mininal code :

#include "vtkMPEG2Writer.h"
#include "vtkWindowToImageFilter.h"
#include "vtkCylinderSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkProperty.h"
#include "vtkCamera.h"

int main(void) {

	vtkCylinderSource *cylinder = vtkCylinderSource::New();
	cylinder->SetResolution(8);

	vtkPolyDataMapper *cylinderMapper = vtkPolyDataMapper::New();
	cylinderMapper->SetInputConnection(cylinder->GetOutputPort());

	vtkActor *cylinderActor = vtkActor::New();
	cylinderActor->SetMapper(cylinderMapper);
	cylinderActor->GetProperty()->SetColor(1.0000, 0.3882, 0.2784);
	cylinderActor->RotateX(30.0);
	cylinderActor->RotateY(-45.0);

	vtkRenderer *renderer = vtkRenderer::New();
	renderer->AddActor(cylinderActor);

	vtkRenderWindow *window = vtkRenderWindow::New();
	window->AddRenderer(renderer);

	vtkWindowToImageFilter* w2if =vtkWindowToImageFilter::New();
	w2if->SetInput(window);

	vtkMPEG2Writer *moviewriter1 = vtkMPEG2Writer::New();
	moviewriter1->SetFileName("test1.mpg");
	moviewriter1->SetInputConnection(w2if->GetOutputPort());
	moviewriter1->Start();

	vtkMPEG2Writer *moviewriter2 = vtkMPEG2Writer::New();
	moviewriter2->SetFileName("test2.mpg");
	moviewriter2->SetInputConnection(w2if->GetOutputPort());
	moviewriter2->Start();

	window->Render();

	w2if->Modified();
	moviewriter1->Write();
	moviewriter2->Write();

	moviewriter1->End();
	moviewriter2->End();
}

Linking with : -lvtkRendering -lvtkjpeg -lvtkexpat -lvtkftgl
-lvtkfreetype -lGL -lGLw -lOSMesa -lpthread -ldl -lm -lvtkDICOMParser
-lvtkpng -lvtktiff -lvtkzlib -lvtkGraphics -lvtkImaging -lvtkIO
-lvtkFiltering -lvtkCommon -lvtksys -lvtkMPEG2Encode

The output will be two mpeg files "test1.mpg" and "test2.mpg". But
only "test1.mpg" can be displayed ! What is strange is that they have
the same size and almost the same content. Only few bytes differ...
How can it be done properly, so that all the mpgs work after creation ?
Thomas



More information about the vtkusers mailing list