Skip to content

A cross-platform, web-based, screen recording Java applet for posting screencasts to a server.

License

Notifications You must be signed in to change notification settings

onedanshow/Screen-Courter

Repository files navigation

========================================

 Screen-Courter v0.8 - A screen recording app who loves your screen and likes to show her off.
 	
 	by Daniel Dixon (http://www.danieldixon.com)
 	Copyright (C) 2010  ReelFX Creative Studios (http://www.reelfx.com)	

========================================

DESCRIPTION:

An instant, cross-platform, web-based, screen recording Java applet for posting user-created screencasts
to a server. The applet acts as a standard interface for recording, cropping, and posting while an 
OS-specific command-line tool is fired up under the covers as a process to create a high-fps screen recording 
of the user's screen and handle any post-processing needs.  For Linux, this tool is a standard build of FFMPEG.
For Windows, a custom build of FFMPEG based on discussion on the FFMPEG developer mailing list. For Mac, a
custom built screen recording Objective-C app based on the QTKit of Snow Leopard.

This tool was inspired by websites like www.screencast-o-matic.com and www.screentoaster.com whose
approaches include all sorts of technologies, including FFMPEG, VNC, and JNI.

========================================

REQUIREMENTS:

Developer:
	JRE 1.6
	Eclipse (recommended)
	Ant (recommended)
	Access to Mac, Windows, and Linux environments for testing and compilation
	Ability to sign a JAR file

Client-side:
	JRE 1.6
	
Server-side:
	Ability to serve a signed Java applet
	Ability to receive a POST with a multi-part file	

========================================

SETUP USING ECLIPSE:

1) Checkout the code:
	git clone http://github.com/onedanshow/Screen-Courter.git
	
2) Import the project folder into an Eclipse workspace. 
	-Make sure the 'src' folder is selected as the source folder.
	-Make sure all of the JARs in the 'lib' folder are added to Project > Properties > Java Build Path > Libraries
	-Make sure to add 'plugin.jar' for the Javascript interface. See the note at the top of Applet.java

3) In Eclipse, open the Run > Run Configurations window and follow these sub-steps:
	-For the Main tab, select "Screen-Courter" as the project and "com.reelfx.Applet" as the Applet
	-For the Parameters tab, set or add the following:
		width: 770
		height: 70
		post_url: (url to post the screen recording video file to)
		screen_capture_name: (name for the screen to show in the interface; ex: "Test Screen Capture")
		dev_mode: true (used only when running from Eclipse for debugging purposes and to work with the cropping interface when developing on Mac)
	-For the JRE tab, make sure you're using Java 1.6
	-Press "Apply" and then close the Run Configurations window

4) Copy and rename config-example.properties to config.properties and configure it accordingly.  This file will not go in source control.

5) Run the Applet.

========================================

TEST DEPLOYMENT:

1) If not done so already, copy and rename config-example.properties to config.properties and configure it accordingly.
Some properties are the same as those in the Parameters tab above. 
It is assumed that you already have generated a certificate in your local keystore. 

2) Using Ant, run the create_test_page action.

3) Open the test page in a browser.

========================================

PRODUCTION DEPLOYMENT:

1) Copy and rename build-example.properties to build.properties and configure it accordingly. This file will not go in source control. 
It is assumed that you already have generated a certificate in your local keystore. 

2) Using Ant, run the create_production_jar# action.

3) Embed the applet.jar in the appropriate page of your website, using the template.html and/or test page as a guide.

========================================

BUILDING OS-SPECIFIC BINARIES FOR SCREEN RECORDING:

The binaries needed for each OS are included with the source code. However the need may arise for you to compile them yourself.

LINUX:
A standard copy of FFMPEG with X264 and FFPLAY are used. No modification to the source code was made.

MAC:
A custom but limited application was developed for the Mac. It currently doesn't support cropping nor full-resolution recording. It's
source code is available here: http://github.com/onedanshow/Mac-Screen-Recorder

WINDOWS:
A custom copy of FFMPEG with X264 and FFPLAY are used, based on discussion from the FFMPEG developer forum 
(http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2010-March/thread.html#85332).

========================================

WISH LIST:

-Create a new Mac binary that can support cropping, full-resolution recording, and encoding.  Preferring it would be an addition to FFMPEG
using OpenGL (discussion here: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2010-May/thread.html#88180)

-Support system audio recording

-Support within-Java-applet preview of the encoded file instead of opening in FFPLAY (Windows, Linux) or Quicktime (Mac).

-General code and interface clean-ups.

========================================

F.A.Q.

Q) Why did you not use VLC under the covers?
A) I was never able to get good results with it (e.g. high fps, good quality capture, decent file size)

Q) Why are there a bunch of Apache Commons files in the src folder and class files in the lib folder from the shared JARs?
A) I was trying to limit the size of the JAR and freeze the common code I used by just including those files needed instead of the whole
	Apache Commons JAR, plus not have to deal with finding/loading other JARs or including JARs within JARs.  This needs to be cleaned up.

======================================== 

LICENSE:

Copyright (C) 2010  ReelFX Creative Studios (http://www.reelfx.com)

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
 	
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
 	
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>

======================================== 

About

A cross-platform, web-based, screen recording Java applet for posting screencasts to a server.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages