Video Sharing Solution (VSS) on Java for a Canadian Client
The Client
The client is a network company with headquarters in N.S., Canada.
|
|
"Thanks
to the team's high work efficiency, we were able to use the system in a
timely fashion, The product was proven easy- to- use while with
powerful functionality, which exemplified the capability of Shinetech
in developing such software! ." |
|
David,
Project lead in the client's side |
|
|
What the client wanted
The
client wanted to build a website where would be the main destination
for people to watch and share original videos on sports worldwide. The
three outstanding features of the website included:
Watching & Editing:
It allows people to watch all kinds of sporting events uploaded by
others, from soccer, basketball, golf, skiing, to tennis, etc. and to
find videos which they are most interested in. They can also easily
upload their own videos and then, edit them.
Sharing & Learning:
The website is really a wonderful communication platform for sports
fans, for they can improve their skill by comparing and sharing their
art with peers.
Receiving Instructions:
Except for learning how to play various types of sports, people can
also receive, with the aid of this website, professional instructions
from those professionals.
Solution
Due
to the urgent project schedule, Shinetech swiftly formed a seven-member
ODC team with rich development experiences on website application after
receiving the client's requirements.
In the process of the development, the team faced two technical
difficulties, that is, how to edit Flash video and to transform videos
uploaded by users into FLV(Flash Video) format on server side and then,
to use this FLV in Flash. Through lots of research, our project team
solved the two problems with the following solutions:
Edition of Flash Video
- We
solved this problem by using SVG Path Data in Flash. SVG (Scalable
Vector Graphics) is a universally readable way to store vector graphic
description data. SVG files can be output from Illustrator 10 which
makes it a useful mechanism for getting path and color descriptions of
Illustrator vector drawings into Flash.
- The point
was how to convert the content of SVG Path tags into drawing commands.
We solved this by two parts: The first parsed the path tag into a fill
object, stroke object, and an array in which each element is either a
drawing command or a number value from the original d string. The
second part of the conversion created an array with
ASVDrawing-formatted elements. Relative points are converted to
absolute ones, and cubic bezier curves are converted to a series of
quadratic beziers, using Robert Penner's cubic-quadratic conversion,
which recursively calculates a set of quadratic beziers that produce
the same curve as the original cubic curve, to within a specified
tolerance.
The Transformation of Videos Uploaded by Users into FLV Format on Server Side and the Use of This FLV in Flash.
- As
the video files users uploaded are usually quite big, it is obviously
unsuitable to use simple form file control to upload them. We attached
great importance to give users better operation experience. We used
files uploading function supported by Flash8, the vantage of which is
to gain more use interactive experience through Flash programming.
- We
adopted FFMEPG as video coding/decoding tool and used the way of
invoking system order under Java environment to execute coding. Video
transformation is a process of consuming the system performance to a
great extent, so, we must limit the quantity of system process.
Executing only one process by OS can be guaranteed by means of
synchronizing Java methods
- We needed to play
FLV files transformed through server in Flash and chose webservice as
data exchange mode which has the characteristics of distributivity and
object transfer support, and is not restricted by domain. What’s more,
its object transfer mode is quite condusive to complicated data
structure programming, that is, Java object can be used directly in
Flash.
Shinetech always regards deep
understanding of the client's requirements from the beginning and
mutual communication with the client in a timely manner is the key to
the success of the development. During the whole developing process,
the team communicated with the client constantly via E-mail or Demo
Server to make the process transparent. Once unexpected things
happened, the PM would report to the client, and did the best to solve
the problems as soon as possible. The PM also provided weekly report
during the development. Actually the system analyst would settle all of
the possible technical difficulties down during the phase of system
design, and a technical support team of Shinetech would be allocated if
needed. By this way, the risk of the whole project was almost reduced
to the lowest.
The results
The software
development was completed on time by the active cooperation between the
two sides. The application was implemented very well as the client
said. After the termination of the contract, the client expressed the
intention to cooperate with Shinetech on another project.
Testimonials
"I just wanted to report on the excellent work and leadership of the
Java team on their work for the project. The core application work is very
good and we are most pleased and amazed with their progress. "
-- Michael Payne ,
CEO, CTI