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.