I am looking at utilizing Wowza Media Server (on a Linux platform, Ubuntu distro) for recording video, live chat, transcoding videos to a playable format for both desktop browsers and mobile browsers Wowza supports (it says it supports iPhones, for example)
I have a more detailed requirements document and a basic mockup of the desired UI for the 1:1 chat.
All chats need to be recorded on the server.
All videos (uploaded, recorded or live chat recordings) need to be transcoded to the same format for optimized playback however Wowza requires it for different bandwidth capabilities and devices.
There is a very small amount of integration with a Drupal/PHP-based side of things (or, direct MySQL database access on the server side, if needed) to identify the users using the applet and couple other flags.
Wowza requires all server side components to be done in Java; there are a LOT of premade code examples, so there should be a lot of work already done for this.
For the client-side, ActionScript will fit the bill, and the player to play back videos should be the same one across the site, the chat applet will be a separate Flash applet (since it has webcam, microphone, two-way chat, etc.) - the player is just for playback. Then there is a lower priority "recorder" which allows the person to record directly to the server from their webcam/video source, and skip recording on their desktop and uploading it (and then the server transcoding it
I plan on using Wowza Media Server. FMS is too expensive, Red5 is not as feature-rich. If you have other options for what is listed below please feel free to mention them.
There are four main components:
Transcoding - Model uploads a video in a random format on their desktop, the site converts it to a "normalized" version that the player and Wowza can handle (highest priority)
Player - plays back both recorded Live Chats and Transcoded content (highest priority)
Live Chat - Model and Member one-on-one chat - video, audio, text chat (medium priority) - all chats are recorded (both parties) and there are a couple flags/options available for the participants (more specifics in the detailed requirements that will be exchanged privately)
Recorder - Models can record video directly to the server using webcam or other video source, skip the step of recording to an interim format and then having to be Transcoded on the server (lowest priority)
I do not want to disclose too much about the project other than that; I have as much details as I can capture in a more formal document that I can provide to serious bidders.
Could the media server (Wowza, etc.) do the transcoding for any of the uploaded content (i.e. Model uploads a video, can it handle it as part of the features?)
This will allow for everything to use the same player with the same settings and normalize all the video content on the site
Playback - everything should use the same player for playing saved and purchased videos (JWPlayer or whatever)
I am not sure if Wowza (or whatever framework is used) includes it's own applet to work with the server, or if it simply provides the streaming framework, and any Flash player can work with it. I assume it just provides the framework.
Required basics - seeking, total time, time remaining, etc.
Required - No third-party branding on the player
Required - expectation is the browser will send a cookie along with the request, so we can identify the user. If not, some other method needs to be done to identify the user (so they can only view content they are authorized to see)
Nice to have - possibly some custom branding/UI specific for the site (requires site/graphic design first - so TBD)
Nice to have - bandwidth detection/automatic adjustment (Wowza says it can do this)
Nice to have - support for other mediums other than desktop browsers (Wowza claims to have iPhone/etc. support)
Nice to have - the ability to show HD streams or higher vs. lower quality (like Youtube does)
Live / 1:1 chat
Needs to be some way for a Member and a Model to "connect" to each other privately in the Flash chat applet
Information from Drupal/PHP is "securely" communicated to the Flash chat applet
Username of the Model
Username of the Member
Membership status (free vs. paid) of the Member
Anything else? The Model can allow recording and can toggle it anytime during the session
Everything is logged on the server (audio, video, text) during live chats - audio/video could be inside of containers, logs can be separate (but somehow associated together)
ALL sessions both Model and Member are recorded; whether or not the Member can view the Model's session after is what is controlled by the toggle button (note: users are not informed it is always recorded. The record button is mainly so the Model gives consent to save, and the Member knows they will have access to it)
After a chat is over, or disconnected (some logical event), it will tell the backend "this chat happened, this was the Model, this was the Member, the Model authorized the member to keep a copy of it, this is the filename/reference to filename on the system" - the PHP application will show this to the member using it's own logic
In the UI, Members see the options:
"Hide" - hide Member's own camera
"Swap" - swap Member's camera with the Model's camera (yours becomes the bigger one)
"Toggle" - toggles Member's camera (and microphone) on/off
"Record" - records the session, if it has been allowed by the Model
"Audio" - toggle hearing the Model
"Mute" - toggle audio from being sent to the Model
In the UI, Models see the options:
"Blur" - blur the Member's video camera (if two-way enabled, could be optional)
"Hide" - hide the Member's camera (if two-way enabled)
"Toggle" - toggle visibility of their own camera to the Member
"Record" - toggle allowing the Member to record (video and audio) (default: disabled)
"Audio" - toggle hearing the Member
"Mute" - toggle audio from being sent to the Member