-
Notifications
You must be signed in to change notification settings - Fork 4
/
README
150 lines (99 loc) · 6.13 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
========================================
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/>
========================================