We're looking for a talented and experienced Java developer who can write organized and highly maintainable code to build a Java program that performs basic server interaction, screen video capture, and microphone audio capture. The program must be launched from a browser, and can be either a Java Applet or a full Java program using Web Start or similar that allows it to be launched from the user’s browser. The program must be fully cross-browser and OS compatible.
The developer must be familiar with the following:
- Encoding audio and video using FFmpeg or similar off-the-shelf library
- Capturing microphone audio and video from the user's screen
- The Java Media Framework
- JSON format for interaction with the server
#1. Takes input from the server which includes a series of HTML snippets
#2. Asks the user to select the audio input of their computer to use as the microphone source if necessary (should always ask first time, the later only when user presses a Config button)
#3. Tests the user's microphone by showing one of the HTML snippets (instructions to talk into the microphone) with a start recording / stop recording button. Applet plays back recorded audio afterwards, allowing them to try again or continue.
#4. Shows one of the HTML snippets to the user with instructions, with a continue button
#5. Shows the user a given URL after it is already fully loaded in the background for 10 seconds, then blanks out the display again.
#6. Takes input from the user with a simple form
#7. Sends resulting data from the user back to the server
#8. Presents the user with another screen of instructions (from the HTML snippets) and a continue button
#9. Shows the user an HTML snippet on a sidebar with a continue button, while showing a given URL on the rest of the browser window
#10. Records the main section of the browser window as video while the user interacts with the website
#11. Records until user presses continue button.
#12. Sends update to server of time taken until user pressed the continue button
#13. Begins uploading the recorded video file in the background
#14. Steps #9 - #13 repeated a certain number of times, each time queueing the recorded video for upload in the background. (uploading only one at a time)
#15. User is presented with a form (given to the applet in step 1 in the form of HTML)
#16. Form data with the user's answers to the form is sent to the server.
#17. User is asked to wait (another HTML snippet from step 1) until all videos are finished uploading in the background, and is shown a progress bar (which should already be partially complete).
#18. User is simply forwarded to a given URL after all uploads are complete, leaving the Java Applet.
Additionally, each time the applet attempts to send data or files to the server, it must look at the response to make sure that there is no error code. If there is, the applet must show a given message to the user, with options to try again or quit (which takes them to another URL, outside of the applet)