How can I capture frames from X11 into a file? - linux

I think there should be some sort of internal support on screen capture utilities with X11. So how can I capture frames from X11 frame-buffer into a file, e.g. AVI, JPEG, etc.?

Have a look at these apps:
http://xvidcap.sourceforge.net/
http://www.unixuser.org/~euske/vnc2swf/pyvnc2swf.html
If the apps don't work you can look at their source code to see how to do your own app.

Related

How to play wave files in X11

Please help, I need to play wave files in X11. Is there any API in X11 like PlaySound in windows? Thanks in advance
You can use aplay, mplayer, vlc, mpg123, mpg321, etc.
For raw (non-mp3, non-compressed) wav files, simple cat should work:
cat file.wav > /dev/dsp
If you need API way to do it, this is simple example how to play wav file using ALSA API.
However, this has nothing to do with X11.

Auralise Audacity annotations / Generate audio click track from list of click times

I'm trying to annotate musical audio file in Audacity and then "listen" to annotations along with the file to check they are placed right. I haven't found an Audacity plugin that does it, but when I export Audacity labels I get a file like:
3.558390
4.248639
4.910771
5.632766
6.349320
...
This time of file (in seconds) where point labels were placed. Maybe there's a tool (or maybe you can do it programmatically (in C++ on Linux preferably)) to easily generate such a click track? I would be then able to mix it with original file and listen to inspect it.
I've found two ways to solve this issue:
Write your own plugin in Nyquist (what I'm trying to do), I received great help on the Audacity forum:
http://forum.audacityteam.org/viewtopic.php?f=39&t=68752
Use Sonic Visualiser:
http://www.sonicvisualiser.org/
This program combines two important features: insertion of annotations when audio is played and auralisation (different sounds available).

Is there an ActionScript library for MP3 encoding than Shine-MP3-Encoder?

Is there an ActionScript library for MP3 encoding than Shine-MP3-Encoder? (https://github.com/kikko/Shine-MP3-Encoder-on-AS3-Alchemy)
This library works fine, but I wanted to find a similar solution (on ActionScript, not C) to optimize it for specific needs.
Thanks.
Dont wait for it. A pure AS3 library is impossible as the speed of AS3 is too slow to do MP3 encoding. You will need C++ via AIR Native Extensions (ANE) or Alchemy for this. ANEs work with Adobe AIR so you can publish your content as an app for desktop and mobile. I dont see any issue with it.
See these for ANE-based Mic recording:
ANE-RecordAudio
AirMicrophone
AirMicrophone-ANE
I recorded the mic into a WAV and then use ffmpeg -i d:/path/input.wav d:/path/output.mp3 to convert it instantly into an MP3. I delete the WAV when FFMPEG completes. FFMPEG is a cool little EXE you can just add to your project in any dir. I used Thibault's class to record into WAV.

Render swf to png or other image format

How can I, on linux, render a swf to a image file?
I need to be able to load other swfs into that swf and run actionscript code.
Is it even possible on linux? I need to do it from PHP, it's fine if I have to use command-line tools.
swfrender from swftools works for basic SWF files.
swfdec-thumbnailer from swfdec-gnome works though it only gets the first frame of the swf.
To get any frame from swf using swfdec see the C code snippet in the following mailing list post.
gnash from gnash also works gnash -s<scale-image-factor> --screenshot last --screenshot-file output.png -1 -r1 input.swf, last image of the swf.
ffmpeg from ffmpeg also works for some swf formats ffmpeg -i movie.swf -f image2 -vcodec png movie%d.png
Also see the following guide for a commandline pipeline.
In order to call external programs from php you use the exec command documented here.
Note that for security reasons it is important to escape arguments passed to exec with another command like escapeshellcmd or escapeshellarg for security reasons.
Once you have converted to an image format whether for single frame or all frame, you can't run action script. Other non GNU / Linux tools support the export of the action script from from SWF.
If the SWF that you are exporting to PNG is too complicated for the other tools than you can use the Flash Plugin or Gnash and Xvfb along with screen capture software to capture either image frames of the SWF or a video format like avi. Then you can extract the images from the video format.
This virtual framebuffer method will support complicated SWF files, though it requires a lot of work as you need to use either Gnash and Xvfb and Screen Capture, or a browser , Xvfb and Selenium, if you want to capture a certain set of mouse / keyboard interactions with the SWF.
Gnash with and without the Virtual FrameBuffer should load the ActionScript before exporting, but may have issues with complicated ActionScript. Flash Plugin with Virtual Framebuffer will load the ActionScript before exporting.
Also see the following StackOverFlow questions, which you question is a duplicate of
Convert SWF to PNG
Render Flash (SWF) frame as image (PDF,PNG,JPG)
SWF to image (jpg, png, …) with PHP
This is the solution I ended up using.
You can use a tool like Xvfb (X11 server) and run the standalone flash player projector inside it (you may need to install a bunch of 32-bit libraries), then use a screen capture utility like import to capture the screen and crop it to size.
I found this page on rendering swf screenshots in linux helpful. It also says that you can use gnash to do this, however gnash won't work for flash player 9+.
Try this air application http://swfrenderer.kurst.co.uk
It render swf frame by frame

Record screen and audio then generate to one video file in java.

I am writting a program as http://www.screencast-o-matic.com/. I used applet and import jmf.jar to my project. When I use it, it couldn't get anything capture devices so it couldn't capture audio and video.
I captured screen to video but it hadn't sound. I captured sound but it hadn't video. I use jmf to merger 2 stream to video file. But it error.
Everybody can help me to resol problem. Thanks your help.
You can use Xuggle-Xuggler http://www.javacodegeeks.com/2011/02/introduction-xuggler-video-manipulation.html API which is wrapper of FFmpeg command line tool. Both are open source.

Resources