Strict Standards: Declaration of action_plugin_siteexport_ajax::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /homepages/24/d93998614/htdocs/www.hammurapi.com/dokuwiki/lib/plugins/siteexport/action/ajax.php on line 17

Strict Standards: Declaration of action_plugin_siteexport_startup::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /homepages/24/d93998614/htdocs/www.hammurapi.com/dokuwiki/lib/plugins/siteexport/action/startup.php on line 39

Strict Standards: Declaration of action_plugin_tag::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /homepages/24/d93998614/htdocs/www.hammurapi.com/dokuwiki/lib/plugins/tag/action.php on line 117

Strict Standards: Declaration of action_plugin_jcapture::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /homepages/24/d93998614/htdocs/www.hammurapi.com/dokuwiki/lib/plugins/jcapture/action.php on line 47

Strict Standards: Declaration of action_plugin_statistics::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /homepages/24/d93998614/htdocs/www.hammurapi.com/dokuwiki/lib/plugins/statistics/action.php on line 51

Strict Standards: Declaration of action_plugin_keywords::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /homepages/24/d93998614/htdocs/www.hammurapi.com/dokuwiki/lib/plugins/keywords/action.php on line 65

Warning: ob_start(): function 'compress_handler' not found or invalid function name in /homepages/24/d93998614/htdocs/www.hammurapi.com/mantis/core.php on line 39

SYSTEM WARNING: Cannot modify header information - headers already sent by (output started at /homepages/24/d93998614/htdocs/www.hammurapi.com/dokuwiki/lib/plugins/siteexport/action/ajax.php:17)

jCapture is a plug-in for DokuWiki. It allows to capture screen shots or record screen activity and audio and upload them directly to DokuWiki media manager without having to save into a file. With jCapture you can quickly create documentation pages for UI-rich software products.

The applet attempts to download some resources dynamically. Therefore, the applet codebase is set /somenonexistingcodebase because the web server must return proper error code for the applet to work correctly. If this attribute is not set, codebase defaults to page location. In this case DokuWiki returns “Page does not exist” with status code 200 and the applet fails.

If your server doesn't return proper error codes for non-existing resources but rather some customized pages, you should configure some URL on the server to return proper error codes and point applet's codebase to that location.

Once you install the plug-in, there will be a new tool bar item as shown below

When you click on the toolbar button, a translucent window shows up2). Select “No” if browser asks whether to block unsigned content.

Move and resize the window as required. Drag the center of the window to move, and the borders to resize.

Click Options button to configure capturing/recording parameters. Then click Capture to create a snapshot, or Record to record a flash video of screen activity. A file name dialog will pop-up with auto-generated file name. Change the name if required and click OK. The image or video will be uploaded to the web and a link to the image will be inserted into the cursor position in the edit area. For large images/slow connections a progress dialog appears after several seconds and disappears once upload is complete. If upload is successful, the capture window disappears. In the case of a problem an error dialog pops-up and the window remains visible for another capture attempt.

Options on this tab apply to the video part of recordings. Some options also apply to screenshot capturing.

Frames Per Second - frames per second during recording. If this option is set to a too high value, jCapture will record as fast as it is possible and then will use actual FPS, i.e. number of frames divided by recording time, during movie rendering.

Border - if true then recordings and captures will have a 1 pixel grey border.

Toolbar - if true then recordings will have a toolbar with a start/stop button, progress bar and volume control.

Image Format - applies to captures and recordings. Any Java-supported image format for captures, JPEG, PNG, or BMP for recording.

Mouse - if true, then mouse movements will be recorded and shown in the movie. jCapture records only mouse movements, but it doesn't record clicks/double-clicks and it doesn't record mouse pointer shape and uses a pre-defined mouse pointer shape.

Loop - if true, the movie does not stop at the end but cycles to the beginning.

Play - if true, the movie does not stop in the first frame, but starts playing after loading.

Speed - Scale factor for the movie speed, i.e. how much faster the movie shall be comparing to recording time. E.g. if recording FPS is 10 and scaling is 150%, then movie FPS will b 15. Speed scaling is enabled only audio recording is disabled.

Inactivity processing - this panel is enabled only when audio recording is disabled.

Remove inactivity - if true, then inactivity (frames where there are no visual changes and no mouse movements withing recording rectangle) are discarded.

Inactivity interval - time interval since last activity after which inactive frames shall be discarded.

WAV2MP3 command - jCapture records sound in WAV format. To convert sound to MP3 provide a command line which takes two arguments {0} as input file (wav) and {1} as output file (mp3). If you don't have a command-line mp3 encoder, take a look at Lame, binary builds are available at RareWares.

Screen row has proportions of the screen and shows mouse position on the screen. If mouse position has changed comparing to the previous frame, it is shown as a black dot. If it didn't change, then it is shown as a gray dot.

If “Normalize volume” check box is selected, then recorded audio volume is normalized to make the highest amplitude in the recording to be 0.95 of maximum possible amplitude for the given audio format. Number in parentheses after “Normalize volumen” shows volume increase in decibels if normalization is applied.

One of frames in the movie (including frames marked for deletion) can be selected to be the “spash frame”. The splash frame is the first frame in the movie which is shown as a still picture on a web page, before movie starts playing. Splash frame allows to communicate the main point of the movie as a picture.

To select the splash frame, click on a frame column in the timeline, right-click and check “Splash” checkbox menu item. To un-select uncheck the Splash menu item or select another frame as the splash frame.

The splash frame is decorated with a little green rectangle in the timeline.

Movie editor can play a movie from the current position or play current selection. To play from the current position, select a single frame, right click and choose “Play” from the context menu. To play a range of frames, select several frames, right click and select “Play”.

To stop playing click on the screen or on the timeline. When playing finishes, the movie returns to the focus frame.

Replace http://localhost/dokuwiki with the URL of your DokuWiki installation.
The last permission is needed to connect through proxy. If you know address(es) and port(s) of your proxy server(s), then you can replace “*.*” with server(s) IP adress(es) and port(s).

Default image format is PNG. You can change image format either through the Options dialog or by changing file extension of the capture. The plug-in capitalizes the extension and passes it as image format parameter to javax.imageio.ImageIO.write() method. Therefore, all formats supported by this class are supported by the plug-in. On Java 6 update 21 supported formats are: BMP, JPG, JPEG, PNG, WBMP, GIF. We tested gif, jpeg, and png extensions - it works fine!

If the plug-in doesn't work, check Java console and Error console (if you are using FireFox). You can also use a web debugger like Fiddler to trace interaction between the browser/applet and the server.

Java 7 tries to download jcapture.jar.pack.gz before downloading jcapture.jar. It also applies to other jars. Some hosting providers (e.g. 1and1) return code 300 - Multiple choice in this case, instead of code 404 Not found. In this case JCapture doesn't work (it's Java's “feature”, not JCapture's). One solution to the problem is to add CheckSpelling Off to .htaccess file - it works with 1and1. Another possible solution is to rename/convert .jar files to .jar.pack.gz files.

If you use {{ }} tag to embed down-scaled videos into the page, adding &direct parameter will create a direct link to the file. This approach works well with Image Box plug-in. Example: [{{myvideo.swf?200x100&direct|My video}}].

Below is an Ant build file to compile sources, create a jar file and sign jars. Keystore password is passed to the signjar task through storepass property. This article describes how to create a keystore and a key.

During recording jCapture caches audio on disk, screenshots are stored in memory using soft references and in a temporary file from which screenshot images are loaded if garbage collector clears image reference. Composition of SWF file happens in-memory. Therefore, it is possible to run into OutOfMemoryError that for long recordings. If it happens, go to the Control Panel, open Java configuration and add -Xmx<max heap size> runtime JVM parameter. For example -Xmx800m sets the maximum heap size to 800 Megabytes.

You can check amount of free/max memory available to the applet JVM in jCapture Options/About tab:

It seems that an AVI encoder shall be relatively easy to implement with Monte Media Library. Take a look at the Main class in AVIDemo.jar The encoder shall reconstruct screenshots from delta images by writing deltas on the BufferedImage and then write the image to AVI output as shown in the demo.

Modify the php code so the applet classpath can be managed from the DokuWiki control panel. This would allow to add video encoders by adding jar's to the classpath instead of modifying applet.php.

Classpath entries shall be resolvable relative to the jCapture lib folder (relative to the main jar). In this case encoders can be distributed as dokuwiki plugins, e.g. for AVI it'd be jcapture.avi plugin. Such plugins will have just jar files and will be referenced by jCapture classpath, e.g. ../../jcapture.avi/lib/jcapture-avi-encoder.jar. The main jar in the encoder plugin shall have Class-Path entry in its manifest file referencing other dependency jars.

In this case integration is achieved by creating a subclass of AbstractCapturingApplet and implementing HttpUriRequest createRequest(String fileName, InputStreamBody bin) and String bodyName(String fileName) methods.

Below is DokuWiki implementation of createRequest() method for your reference.