I'm using mt4j for a demo on a windows touchtable. Our development machines use
Ubuntu, so some complexities on DLL installations and so on only come up when
we test integration and platform issues.
In our build, we use the modestmaps and video extensions to play a bit of video
after a user clicks on an icon (it actually shows the simple player). On Linux,
it more or less worked right out of the box, but getting this to work on
windows proved a larger challenge. Our errors included DLL's not found, paths
incorrect and none of the videos played. I tried various versons of GSVideo,
found them to be API incompatible and kept switching between different
versions.
I worked with mt4j-0.95, so I decided to upgrade to dev. preview 0.98. Some
errors came up with some "lasso processor" interface, which I eventually simply
removed.
The GSVideo extension was part of mt-0.95, so worked out of the box. There's
some misleading information on the "mt4j-gstreamer-extension" page, which I
mostly followed in my mt-0.95 attempts to get this to work.
All in all, here's what I did to get at least the video to play and get rid of
all and any error messages that were flooding the console:
= Downloaded mt-0.98
= Downloaded GSVideo stable version 0.9:
http://sourceforge.net/projects/gsvideo/files/gsvideo/0.9/
= Downloaded "GStreamer-WinBuilds-LGPL-x86.msi" from OSS builds:
http://code.google.com/p/ossbuild/downloads/list
= Did an 'svn checkout' of mt4j-extensions:
http://code.google.com/p/mt4jextensions/source/checkout
= Took out the classes "MTMovieClip" and "MTVideoTexture" from the mt4j
extensions project and included these in my own project (to save the trouble of
gettting these jars to build). Included required GSVideo .jar libraries (from
within GSVideo 0.9 zip file).
= Downloaded GTK + MS VC++ redistributables as per mt4j-gstreamer-extension
google page (but did *not* use any of the software located there):
1. Install GTK: http://gtk-win.sourceforge.net/home/index.php/en/Downloads
2. Install Microsoft Visual C++ 2008 SP1 Redistributable Package (x86):
http://www.microsoft.com/downloads/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d
-3802b2af5fc2&DisplayLang=en
= Built my project, resolved compilation issues. More on that at the end.
= Moved everything on a USB stick to a windows platform.
There:
- Installed "GStreamer-WinBuilds-LGPL-x86.msi" (into C:\gstreamer)
- Installed GTK
- Installed VC redistributable
- Unpacked GSVideo 0.9 "gstreamer/win" into C:\gstreamer, following the same
path hierarchy. (gstreamer merges with C:\gstreamer). These are the binaries
that are needed.
- Installed my app in some directory.
- Started, played a video. This worked.
The other instructions and the forum posts on when this was introduced now seem
to cause more harm then get things to work. I also noticed that GSVideo 0.9 has
been modified in API and in the performance. You can't grab the pixels from the
MovieCLip object any longer and you're now supposed to hand it a "GLTexture" or
"PImage" object where this movie can now copy the pixels to. This requires a
modification of the MTMovieTexture class. I'm still evaluating ways to improve
performance here, but I managed to get this to work as follows:
in "onFirstFrame" somewhere:
if (MT4jSettings.getInstance().isOpenGlMode()){
m.setPixelDest( (GLTexture)this.getTexture() );
}
And in "updateComponent", instead of:
((GLTexture)this.getTexture()).updateGLTexture(m.getMoviePixelsBuffer());
I now do this:
m.read();
((GLTexture)this.getTexture()).loadPImageTexture(m);
((GLTexture)this.getTexture()).updateGLTextureFromPImage();
Performance is disappointing this way, but I'm getting an acceptable moving
image for this purpose (5-10fps).
So a couple of things:
- Can the other pages / forum posts be updated where it concerns video and
possibly the mt4j-gstreamer-extension project be closed, since it's all wrapped
into the mt4j-extensions project? This would reduce the amount of
misinformation people may be getting when searching on how to resolve these
issues. The biggest problems are related to version matching of GSVideo,
Processing, gstreamer builds and mt4j installations. This is mostly on windows,
since on linux they appear as api incompatibilities between gsvideo+mt4j.
- What should MTVideoTexture look like to get better performance due to the
newer api of GSVideo? (the mt4j equivalent of "tex.putPixelsIntoTexture();"
and "image( .... )" ?
Original issue reported on code.google.com by gtoons...@gmail.com on 8 Sep 2011 at 1:40
Original issue reported on code.google.com by
gtoons...@gmail.com
on 8 Sep 2011 at 1:40