Video on the Web - CS@Mines - Colorado School of Mines

34
Video on the Web System Design Document Kyle Schulz, Aaron Hart, John Langewisch, Andy Niccolai Colorado School of Mines ‐ Field Session 2011 ABSTRACT Video has become a prominent component of the Internet. As such, it is critical that the web management system Web Crescendo, a product of Silicon Mountain Technologies, be able to offer such services. These services must be closely integrated into the existing system in a manner both secure and simple for users. In order to meet this need, a video streaming service has been created and integrated into the Web Crescendo application. This service contains a streaming media server, a suite of client tools for video integration, a security protocol that allows or restricts video access on a per‐user basis and a video library mechanism for video management.

Transcript of Video on the Web - CS@Mines - Colorado School of Mines

VideoontheWebSystemDesignDocument

KyleSchulz,AaronHart,JohnLangewisch,AndyNiccolaiColoradoSchoolofMines‐FieldSession2011

ABSTRACT

Video has become a prominent component of the Internet. As such, it is critical that the webmanagementsystemWebCrescendo,aproductofSiliconMountainTechnologies,beabletooffersuchservices.Theseservicesmustbecloselyintegratedintotheexistingsysteminamannerbothsecureandsimpleforusers.Inordertomeetthisneed,avideostreamingservicehasbeencreatedandintegratedintotheWebCrescendoapplication.Thisservicecontainsastreamingmediaserver,asuiteofclienttoolsforvideointegration,asecurityprotocolthatallowsorrestrictsvideoaccessonaper‐userbasisandavideolibrarymechanismforvideomanagement.

2

TableofContents

TableofContents.........................................................................................................2

Introduction.................................................................................................................3PreviousSystemArchitecture..............................................................................................................................3CreatingWebPages ..................................................................................................................................................4Requirements ..............................................................................................................4FunctionalRequirements.......................................................................................................................................4Non‐FunctionalRequirements.............................................................................................................................4

Design..........................................................................................................................4Component:Security ................................................................................................................................................5Security‐TheSequenceofEvents......................................................................................................................5Security‐RetrievingUserInformation ............................................................................................................6Security‐TheWebService....................................................................................................................................7Security‐EstablishingtheConnection.............................................................................................................7Security‐DeterminingWhethertoStream....................................................................................................7Component:VideoLibrary.....................................................................................................................................8VideoLibrary‐WebCrescendoIntegration ..................................................................................................8VideoLibrary–API ................................................................................................................................................ 10VideoLibrary–DatabaseSchema ................................................................................................................... 11Component:ClientInterface .............................................................................................................................. 11ClientInterface‐AdministratorControls .................................................................................................... 12Component:VideoEncoding.............................................................................................................................. 13VideoEncoding‐Background ........................................................................................................................... 14VideoEncoding‐Conversion............................................................................................................................. 14VideoEncoding‐PotentialWorkFlows ....................................................................................................... 15VideoEncoding‐Handbrake ............................................................................................................................. 16Implementation.........................................................................................................17Wowza ......................................................................................................................................................................... 17WebServiceSecurity............................................................................................................................................. 17TheVideoLibrary ................................................................................................................................................... 17TheClientInterface................................................................................................................................................ 18AdministratorControls ........................................................................................................................................ 18Scalability ................................................................................................................................................................... 18ConsoleCommandsinJava................................................................................................................................. 19Results ......................................................................................................................................................................... 20SystemTesting ......................................................................................................................................................... 20SystemTesting‐AcceptanceTests ................................................................................................................. 20

Conclusion .................................................................................................................22ClientReview............................................................................................................................................................ 22LessonsLearned...................................................................................................................................................... 22FutureDirections.................................................................................................................................................... 24

Glossary.....................................................................................................................25

References.................................................................................................................25

3

Introduction SiliconMountainTechnologies(SMT)isane‐BusinessPartnerthatprovidesavarietyofwebservicesincludingaproductcalledWebCrescendo(WC). WCisawebmanagementplatformthatenablesthelaymantoquicklybuildandmodifyveryrobustandcomplexwebsites. WC previously did not support the uploading and displaying of videos onthese websites short of manual implementation, defeating the purpose of an"approachablebyanyone"modelwithpowerful results. Thisalsomeans thatWChad no way of securing videos (i.e., allowing only certain users to access certainvideos). Inlightofthegrowingdemandforvideoservices,SMThadaskedourteamtodevelop a system for incorporating videos into the currentWC system aswell ascreateaservicetoauthenticateuserswhentheyattempttoviewsuchvideos. Thesystemwe developed allows clients to include videos in theirwebsites usingWCandprovidesecuritywithwhichclientscanspecifywhocanandcannotviewthosevideos.

PreviousSystemArchitecture ThecurrentsystemallowsuserstologintotheWCservicefromtheuser’sbrowser.WhenawebpagehostedbyWCisrequested,WCgoesthroughachecklisttodeterminewhethertheuserisallowedtovisitthatparticularwebpage.Priortothevideoserver,WChandledallHTMLtraffic. Therewerenootherserversthatabrowsercommunicatedwithwhenviewinganywebpage.

Figure1­OldArchitecture

4

FirstWCdecideswhetherthewebsiteforthatpageissecure.Ifso,WCthendeterminesiftheuserrequestingthepageisloggedinandifthatuserhasaccesstothatparticularwebsite. ThenWCdoes the sameauthentication for theparticularwebpage,determiningwhetherthewebpageissecure,whethertheuserisloggedin,andiftheuserhasaccesstothatparticularwebpage.

CreatingWebPages Users can log in to theWC service and create web pages from “portlets.”Theseportletsareessentiallypiecesof awebpage (a title, a form,an image, text,etc.).Tocreateawebpagetheusersimplychooseswhichportletstoincludeintheweb page inwhat order. WC is essentially a contentmanagement system (CMS)with some added features. The user can also view and edit the source HTML.However,usingthecurrentWCservicetheonlywaytoaddavideotoawebpageistoreferenceanexternalvideonothostedbySMT.

Requirements ThegoaloftheprojectwastointegrateavideostreamingserviceintotheWCsystem. The first four functional requirements are necessary to provide basicstreamingcapabilitiesandwereatoppriority,whereasthelastthreerequirementswere secondary goals thatwould have provided extra functionality on top of thebasicstreamingservices.

FunctionalRequirements

1. Streamvideotoallmajorbrowsersanddevices.2. Enforceroleaccessconstraints.3. ExposefunctionalitytoadministratorsasamoduleinsideWC.4. VideoplaybackcontrolsshouldlooksimilartoYouTube.5. Allowclientstostreamlivevideotoallclients.6. Videosaresearchablewithembeddedmetadata.7. VideosareviewableinalibraryviewinsideofWC.

Non‐FunctionalRequirements

1. Choosewhichvideoformat(s)tosupport.2. ChooseaStreamingServerwithappropriatecapabilitiesforthisproject.

Design The four main components of the streaming video system are the clientinterface,securitymechanism,videoencoderandvideolibrary.

5

Figure2­SystemScopeOverview

Theclientinterfacecomponenthandleswhatauserseesandinteractswithwhen adding video, aswell as theunderlyingmechanics of embedding that videoontoawebpage. Thesecuritycomponentdetermineswhocanandcannotviewarequested video and handles video dispatch. The video library componentorganizes videos, making them available to both the client and the othercomponentsofthesystem.Lastly,thevideoencodercomponent(labeledinfigure2as the "streaming media server") converts client submitted video into formatsdictatedbythesystemstandard.

Component:Security Security (or more appropriately "User Authorization") is an essentialcomponenttothisproject.UserAuthorizationallowsclientstocontrolwhocanandcannotviewvideos. ThisprovidesclientswithavideohostingservicethatisbothpowerfulandsecurethanothervideohostingservicessuchasYouTube.

Security‐TheSequenceofEvents All videos are streamed from a server running Wowza Media Server 2software. For the purposes of this document this server will be referred to as“Wowza”. Ifavideoisplacedonawebpage,thenwhenauservisitsthatwebpagetheuser’sbrowsersendsarequest forthevideotoWowzaasshownatthetopoffigure2.ThisvideorequestincludestheURLoftherequestedvideoandtheuser’sSessionID.TheSessionIDiscreatedwhentheuservisitsawebsitehostedbyWebCrescendoandisstoredintheuser’sbrowsercookies.

6

Figure3­FiniteStateMachinefortheAuthorizationProcess

BeforeWowzalocatestherequestedvideoitretrievestheinformationfromtherequest.WowzapassesthatinformationontoaWebServicehostedbytheWebCrescendoServer.Usingthisinformation,theWebServicedetermineswhethertheuserisauthorizedtoviewtherequestedvideo. To determine whether the user is authorized or not the Web Servicecompares a user role to a list of video roles. The user role and video roles aregrabbedfromarequestandcomparedtoensurethattheuserhasthecorrectrolesto view the video. Once the Web Service has determined whether the user isauthorizedtoviewthevideoitreturnsanappropriateresponsetoWowza. AfterWowzareceivesaresponsefromtheWebServiceitseparatesoutthedataintheresponseanddecideswhetherornottoplaythevideo.Thiseffectivelypreventsunauthorizedusersfromviewingnon‐publicvideos.

Security‐RetrievingUserInformation The first step in theprocess is tohalt thevideostreamingandretrieve thevideoURLandSessionIDfromthevideorequest.TodothisaservletisplacedonWowza to listen for video requests. This servlet is responsible for grabbinginformationfromthevideorequest.Sincethereareseveraldifferentprotocolsused

7

to request videos (RTMP, HTTP, RTSP) the servlet determines what protocol isbeing used to request the video and retrieves the information from the requestappropriately. After the information is obtained and formatted correctly anauthorizationrequestismadetotheWebService.

Security‐TheWebService ThenextcrucialstepintheprocessistheWebService. TheWebServiceisalso a servlet but is located on the Web Crescendo Server. This servlet isresponsible for using the provided information in the request from Wowza todeterminewhethertheuserisauthorizedtoviewtherequestedvideo. AuthorizationontheWebServiceisdoneusingauserroleandvideorolestodetermineauthorization.TogettheuserrolefortherequesttheWebServiceusestheJSESSIONIDfromtherequesttogetthesessioninformationfortheclient.Thissession information contains a variable for the user role. For the video roles theWebServiceuses the videoURL in the request to retrieve the video roles for thespecifiedvideosbyquerying theWebCrescendodatabase. Once theWebServicehastheuserroleandalistofvideorolesitsimplycheckstoseewhetherthevideorolescontaintheuserrole. Ifthevideorolesdonotcontaintheuserrolethentheuserisnotauthorizedtoviewtherequestedvideo. Once the Web Service determines authorization it forms a response andsendsthatresponsebacktoWowza.

Security‐EstablishingtheConnection An HTTP connection is used for communication between Wowza and theWeb Crescendo Server. Using an agreed upon port, the two servers are able tocommunicatereliablyandsecurely. SMTlibrariesareusedtocreateaConnectionManageronWowzathatisabletosendHTTPrequeststotheWebServiceonWebCrescendo. TheWebServicerequires informationfromtheserequests inordertodo authorization. The Web Service responds to Wowza with a custom XML filewhichcontainsanauthorizationcode,anerror, code, andanerrormessage. Thisensures that information ispassedcorrectlyand thatcommunicationbetween theserverscanbemodifiedorextendedasneeded.

Security‐DeterminingWhethertoStream After requesting authorization from theWeb Service, Wowza listens for aresponse. After receiving the responseWowza will decode the XML file into itscomponents. If the authorization code is true then Wowza starts streaming thevideototheclient.Ifnot,thenWowzacheckstheerrorcodeanderrormessagetodeterminewhytheuserwasnotauthorizedandifanerrormighthaveoccurred.

8

Component:VideoLibrary The video library is responsible storing and managing video data.Specifically, itmanagesvideometadataandvideopermissionroles,aswellasanyinformationthatmightfacilitatesearchingforvideos. Thevideolibraryaddsasetof tables to theWCdatabase. TwoJavaServerPages(JSPs)areusedformanagingandselectingvideos. AWCcomponent (Action)defines thebehaviorof thevideomanagementportlet(apieceofwebcontent)intheJSPs.

VideoLibrary‐WebCrescendoIntegration The WC application enables users to drop in various portlets and easilycreatetheirwebpagewithouthavinganyknowledgeofwebdesignorcoding.

Figure4­VideoLibraryIntegrationwithWebCrescendo

Aclient logs intotheWebSiteCommandCentertoaccesstheWCtoolandthe“PageBuilderServlet.”Thisiscontrolledbythe“ModuleController,”whichgoesthrough the list of portlets (defined byActions) that the client has put onto theirpage.IttheninsertstheappropriateHTMLtodefinethebehaviorforeachportlet.ThePageBuilderServletalsohasJSPdefined"Views"thatlayouttheportletsonthepage. EachportletpotentiallycontainsmultipleViews. TheseViewsdefinewherethecomponentwillbepositionedonthepage(e.g.acontentactioncanbeplacedinthefirstcolumn,secondcolumn,etc.).Figure4illustratestheseinteractions.

9

Figure5­VideoLibraryBrowser

ThefirstJSPliststhevideosthatareavailabletobeputinapieceofcontent.Itiscalledwhentheclientiscreatingapieceofcontentandselectsthe“addvideo”optionfromtheeditor.Alistofvideoswillpopup,allowingtheclienttochoseandplace them into theirwebpage,provided theyhaveappropriateuseraccess rolesand the video is available to be played. The list is generated by querying thedatabaseforallthevideosthatarebothunderaclient’scontrolandavailabletobeplayedfromtheWowzamediaserver. TheclientcanclickonanyofthevideosinthelistandaURLforthatvideowillbereturnedtotheclientinterface. Aviewofthevideolistisshowninfigure5above.

Figure6­VideoManagement

ThesecondJSPcontainsthelayoutforthevideomanagementtool(seefigure6).Thetoolallowstheclienttoadd,update,anddeletevideos.Toaddanewvideo,a client selects the “add” icon,whichbringsup thedialog shown in figure7. Thedialogboxincludesfieldsforvariousvideoattributes.Italsoallowstheclienttosetthevideopermissions.Finally,thedialogboxallowstheclienttouploadthevideofiletoWC.

10

Figure7­VideoUpload/Update

TheJSPsdonotdefinetheirownbehavior,whichis insteadcontrolledbyaWCAction.ThisActionincludesmethodsforconnectingtothedatabase,retrievingthelistofstoredvideos,listingthevideosforplacementonapieceofcontent,andallowingtheclienttocreate,update,anddeletethosevideos.ItalsocontainsanAPIthatcanbeusedbyotherWCcomponents.

VideoLibrary–API Inorder for thevideo library component to integrate easilywith theothercomponents,aneasy‐to‐useAPIwascreatedthatallowsaccesstoimportantvideodata. The API includes functions to access and set video attributes includingpermissionroles,anyphysicalattributesof thevideosuchasdimensions, filesize,or length of the video, and any other pertinent information that the othercomponentsofthevideoportletmightrequire. Specifically,afunctioncalled"getVideoRoleIds(StringvideoUrl)"wascreatedtoreturnalistofthevideorolesthatavideocurrentlyhas.Thesecurityportionofthissystemusesthisforvideoauthenticationinordertocomparetheuser’sroletothatofthevideotoensuretheyareabletowatchthevideo.

11

VideoLibrary–DatabaseSchema ThevideolibrarymanagementsystemaddsfunctionalitytothecurrentWCdatabase. Metadata for each of the videos uploadedmust be stored allowing foreasyaccesstoprovideinformationtoothercomponentsinthesystem.VIDEO:

• VideoId• VideoName• Author• CreateDate• UpdateDate• VideoURL(locationofthe

videofileonthemediaserver)• RunningTime• FileType• FileSize• DefaultAspectRatioHeight• DefaultAspectRatioWidth• ThumbnailURL• PosterImageURL• ShortDescription• LongDescription

VIDEO_ROLE_XR:(Crossreferencetableforvideosandvideoroles)

• VideoroleId• VideoId• RoleId• CreateDate

Itshouldbenotedthatthisonlyincludesthepartoftheplannedschemathatwasactuallyusedinthefinalimplementation.Therearealsotablesinthedatabaseforthesupportofavideotaggingandfilteringsystemaswell. A request to the database returns all of the pertinent information for acertain video or videos. The reason for returning all of thedata insteadof just acertain field is that it ismuch faster foradatabase transaction toreturnallof thedata inonerowandhave theapplicationparse thatdata later, rather thanhavingmultipledatabaserequestsbemadejusttoretrievecertainfields. Inadditiontotheschemarequirements,theimplementationoftheadditionaldatabase tables isalsoconstructedsuch that the tableswill “self‐clean”when filesarecreated,deleted,orupdated.Thiswillensurethatthereisnoinconsistentdatainthedatabase.

Component:ClientInterface Thevideoplayer interfacehasseveralcontrols toallowviewers to interactwith the video. These controls are used bymost video players and expected byusers.

12

Figure8­VideoPlayerControls

Thesecontrolsareillustratedinfigure8andperformthefollowingfunctions:

Play­Startsthevideoorcontinuesplayingiftheplayerisinthepausedstate.

Pause‐Stopsthevideoifplayingwhilemaintainingthepositionontheseekbar.

SeekBar‐Providesvisualfeedbackonhowmuchofthevideotheuserhaswatchedandallowstheusertogotoanypartofthevideobyclickingonthebar.

Volume‐Changestheplayervolumewithoutaffectingtheuser'ssystemvolumeandbringsupaslideruponclicking.

FullScreen‐Allowsthevideotofilltheentirescreenduringplayback. Ifautoplayhasbeenenabled, thevideobeginsplayingwhentheuservisitsthepage.Otherwise,thevideoplayerinitiallydisplaysastaticimageifanimagehasbeenprovided. Sincethefirstframeofavideoisusuallyblack,thisfeatureallowsuserstovisuallyrecognizethevideo.Theuserwillseeanerrormessageiftheyarenotauthorizedtoviewthevideo.

ClientInterface‐AdministratorControls WebCrescendoallowsadministratorstoaddcontentsuchasimagesandtexttowebpagesthroughtheWYSIWYGHTMLeditor.

13

Figure9­VideoSettingsfromwithinWebCrescendo

Administratorscanaddvideotoapagethroughthevideodialog.Thevideodialoginfigure9willhavethefollowingcontrolstoallowadministratorstoembedvideos:

BrowseVideos‐Theusermustchooseavideofromthelibrarytobeplayed. Title‐Thenameofthevideo Width/Height‐Thedimensionsofthevideo. BeginPlayingImmediately‐If“Yes”isselectedthevideowillbeginplaying

assoonasauserloadsthepage.Otherwise,usersmustclickonthevideotobeingplayback.

Component:VideoEncoding Inordertobothmaintainaconsistentserviceandsupportclientneeds,somestandardofmediamustbeenforcedintheformofthevideo'scodec,containerandformat.Amodelmustbeestablishedfortheconversionofclientsubmittedvideotothisstandardinbothformandfunction.

14

VideoEncoding‐Background A codec is simply an encryption of a data stream. In themedia setting, acodecalsohandlesdatacompression,allowingnaturallylargefilesofvisualand/oraudibledatatobesignificantlyreducedwithoutadramaticimpactonquality. Acontainer isa filewrapper thatcontainsmeta‐informationdescribing thewrappeddata,includingthelocationandusageofspecificpiecesofinformation.Fora video file this includes items such as frame rate, chapters, key frames and theutilizedcompressioncodec. The format of a video file refers to the actual presentational elements,namelythebitdepth,framerate,bitrateandaspectratio. Bitdepthdescribesthecolor information and may not need any enforced limitations at all. Frame ratedetermines how many frames are displayed per second, and while the Internetcarriesastandardof12‐24fps(framespersecond),videosseldomexceed30fps.Inextreme situations, the absolutemaximumwould be 60 fps as anything higher isunperceivableby thehumaneye. Bit rate isdiscussed in the followingparagraphandaspectratioensuresthatoddlysizedvideosconformtoastandardthatclientscaneasilyimplementintotheirwebsites. Bitrateisthesinglemostimportantformattocontrolasitdirectlytranslatestobothuserexperienceandserverperformance.Describedastherateoftransferofinformation,ahighbitratemeans largeramountsofvideo informationper frame.Whilethismeansabetterqualityvideo,italsoplacesahigherdemandontheserverandnetworkconnection.Testswillhavetoberuntodeterminetheidealbitrateforour client's needs, but initial estimates place it at around 300 kb/s. A futuresolutioncouldincludeadynamicbitrateencoderthatlooksataverageserverloadandservesanappropriatemediafile.

VideoEncoding‐Conversion Conversionofvideocomesintwomajorforms:re‐encodingandmultiplexing(morecommonlyreferredtoasmuxing).Re‐encodingisalongandintenseprocessof evaluating the frames and re‐compressing them using a different codec.Multiplexing is the chaining of streaming information together and is used in thevideo realm to "embed" one video into the container and codec of another blankvideo, allowing a wide range of formats to be interpreted as one. Due to itspopularity,simplicityandspeed,oursolutionmadeuseofmuxing. TheH264codec(typicallycontainedinanmp4file)wasselectedtosupportabroadrangeoftargetplayers(browsers,devices,etc).However,itisunlikelythatmost (letaloneall)of themediauploadedbyaclientwill initiallyconformto thisformat.Assuch,itisnecessarythatthemediabeconvertedtotheH264standard.

15

Thereareinnumerablevideoconversiontoolsavailable,rangingfromsimpleopen source command line muxers to expensive (yet powerful) cloud‐driven re‐encodingsuites.Whilemanywereinitiallyconsidered,thespecsoffourprominentsystemswerecompared.

Tool Decoding h264? Interface Speed Quality CostZencoder All Yes Cloud High High $.05/minFFmpeg Most Yes Command High Med NoneJave Most Yes Java High Med NoneAdobe Some Yes Application High High None

Figure10­EncoderComparison

When selecting a conversion service it is important to consider howmanyformats are supported as a valid input. All but a few supports the mainstreamformats (avi,ogg,mov,mpg,etc.)butonly theexpensive, commercialapplicationsboast a 99.8% support rate. However, due to the integrationmethods describedlater, an application or service‐based converter does not fit with the establishedservermodel.Anadditionalconsiderationisthatofclientconfidentiality,rulingoutanycloud‐deployedapplications. AllconsideredconverterssupportedtheneedH264codecaswellasahighencoding speed (due to either powerfully backed servers or muxing). Given itsflexibility and integration capabilities (as well as the strong recommendations ofWowzadevelopers), theseriesof librariesbythenameFFmpeg,developedbythemediacommunitytohandlenearlyeveryformatinexistence,wasselected. FFmpegiscommandlinedriveninterfaceandcanbecompiledonanysystemneeded, allowing flexibility inboth integration andhardware selection. However,dependingon themethodof integration, itmaybe greatly beneficial to support aJava‐based interaction. For this purpose, the Jave package is listed as a potentialcandidate,whichsimplywrapstheFFmpegsuiteinaJavaenvironment.

VideoEncoding‐PotentialWorkFlows

Twopotentialintegrationswereconsideredfortheactualintegrationofthevideo conversionprocess. One convertson the fly througha Java interactionandtheotherconvertsthroughascheduleusingthecommandline.

Figure11­EncodingWorkflowA

Figure11showsthefirstapproach.AclientuploadsavideothateventuallygetssenttotheJaveinterface.Javedoessomequickanalysisonthevideoandrunsan FFmpeg script on it. The FFmpeg script and Jave continue to communicate,

16

providingtheclientwithfeedbackontheconversionprocess.Oncecompleted,thevideoiseitherrejected(witherrors)orapprovedandsavedtothefinallocation. Video conversion is a very expensive process, even when simply muxing.DuetothisfactandthatofFFmpeg'slocationONthemediaserveritself,itisunwisetohavebothstreamingandconvertingoccurringsimultaneously.

Figure12­EncodingWorkflowB

Figure 12 illustrates one option (also the chosen method) to address thisconcern.ByrunningFFmpegasascheduledprocess,thetaxingconversionprocesscouldbeperformed in the latehoursof thenightwhile little tono video is beingserved. A clientwoulduploada file intoadesignated "pending" folderandawaitconversion. Upon the appointed time, FFmpeg will fire up and automaticallyconvertallvideosinthispendingstate. In a client model, such delays are both expected and unfortunate. Toolscouldbeputintoplacethatskipthisprocessandgoliveimmediatelyifthecurrentformatisalreadyacceptable,oraseparateservercouldbetaskedwithhandlingtheconversions.

VideoEncoding‐Handbrake TheneedtomanuallybuildFFmpegwithlittletonoguidanceorsupportandtrackdownallrelevantlibraries(asisthenatureofmostopensourceprojects)ledto the decision of replacing FFmpegwith the Handbrake command line interface(CLI).HandbrakeisanapplicationbuiltaroundthefunctionalityofFFmpegandassuchinheritseveryaspectofitscompatibilityandefficiency.Yetintheeventwhere

17

newformatsareneededorupdatesarereleased,asimpleupdateoftheHandbrakeapplicationreplacescountlesshoursoftryingtore‐buildFFmpeg.

Implementation

Wowza

Therearetwomethodsforpassinginformationthroughawebrequest.Thefirstisthroughcookies,whichareonlypassedthroughHTTPrequests.Thesecondisquerystring,whichappendsinformationtotheURIandcanbeusedforallwebrequests. Since Wowza receives requests using HTTP, RTMP, and RTSP, querystringswerechosentopassinformation. Wowzaneeds twopieces of critical information to performauthentication:the stream name and JSESSIONID. The stream name is the unique URL of therequestedvideoand isusedby theweb service to get thevideo’s roles (denotingpermissions). The JSESSIONID is used to identify which client is requesting thevideo and thereby obtain the client’s user role. This allows the web service tocomparethevideo’sroleswiththeuserroleforauthorization.

WebServiceSecurity Though authorization by theWeb Service is a relatively simple procedure,some important details must be considered. As there are several reasons whyauthorization might fail, it is important to also include them in the response toWowza (in the formofanerrorcodeandmessage). Forexample: if thedatabaseconnectionfailed,Wowzamayreceiveanerrorcode“1”andmessage“thenetworkiscurrentlyown.”Wowzathenlogsthisinformation. As WC is not hosted on one machine, but many, a configuration file forWowza is necessary to obtain correct paths and ports. Furthermore, theJSESSIONID of a user is specific to a particular WC server and configuration isneededtokeeptrackofwhichserverscontaintherelevantsession.

TheVideoLibrary JavaDatabaseConnectivity(JDBC)wasusedforalldatabaseconnectionsandqueries,duetoitseaseofuseandtheformatalreadyinbeingimplementedbytheclient’scurrentsystem. Inordertofacilitatetheinteractionbetweenthedatabaseand thesystem,valueobject classeswereconstructed toparseallof thedatabasequery results. This presented an easy‐to‐use solution to the object‐relationalmismatchthatoftenisencounteredindealingwithdatabase‐backedapplications. Avalueobjectclasswasalsocreatedforthevideoroles.Avideovalueobjectcontains a map of video role value objects (corresponding to all of the available

18

rolestobesetforthatvideo).Thisvideorolestructureisusedintheupload/updateJSPstodynamicallycreatetheappropriaterolecheckboxes.When a new file is uploaded, the video stored under a new name consisting of aunique idensuringtherearenoconflicts. Thevideo is thenstoredontheWowzaserverunderthesamenameinafilestructureconsistingoftheWowzabasevideodirectoryandtheorganizationid. ThisURLisstoredinthedatabasesothatwhenthe encoder has finished processing a video, it can easily move the file to theappropriatelocation.

TheClientInterface ThoughtheinterfaceaclientseesiswritteninHTML,JavaScript,andAdobeFlash, the interface a video viewer sees is dependent upon the context they’reviewingthevideoin.Afterthebrowserhasloadedapagecontainingvideo,oneofthreeplayerswillbeinsertedintothepagebyclient‐sideJavaScript.

1. Wireframe Placeholder ‐ Static element that shows the size and posterimageofthevideo.

2. HTML5Video‐HTMLelementembeddedwithasimpletag.3. Flash Video Player ‐ Flexible, but requires the browser to have Flash

installed.NotsupportedbyiOS. TheWYSIWYG editor initially displays placeholder, as the browser cannotautomatically execute the JavaScript. Next, while loading the video, the browserreplacestheplaceholderwiththeHTML5videoelement. IfFlashissupportedonthedevice theFlashplayer replaces theHTML5videoelement. Thisorderallowsthecorrectplayertobeloadedonadevice. Strobe Media Player is Adobe’s default flash media player. The videoattributesarepassedtoFlashthroughaJavaScriptvariable.AJavaScriptlibrarywillonly embed the video if Flash is supported, allowing mobile devices to use theHTML5playerinstead. In order for Wowza to authorize users, the JSESSIONID is read from thebrowser’s cookies and appended to the end of the video URL via query string.JQueryiscalledtoperformmostofthisfunctionality,whichmasksmostbrowser’sincompatibilities and includes functions to perform common tasks. The cookielibrary for JQuery isused in theclient interfaceandallows theclient‐sidecode tograbtheJSESSIONID.

AdministratorControls CKEditorisafreeJavaScriptlibraryforbuildingtoolbarsthatallowsuserstoedit documents inMicrosoftWorld like environment. Web Crescendo uses thesetoolbars to allow site administrators to add content such as text and images, and

19

nowvideo,topages.ThevideobuttoninsertstheentireHTMLneededbyapagetodisplayavideo.

Scalability

As a specific requirement (as well as a general good practice), eachcomponentmustbedecoupledfromthemachineitoperateson.Thismainlyallowsfor ease of scalability, asmoving to a newmachine (ormanymachines)will notbreakyourcode. The main method of achieving this was through configuration files. Forexample: instead of hard coding the location and functionality of loadinginformationfromadatabase,simplyplacethe logincredentialsandaddressofthedatabase inaconfig file. Upon initialization, thecodewill loadthisconfig fileandplaceitintoanargumentsmaptobeaccessedbytherestoftheapplication.Iftheapplicationisdeployedonanewmachine,orseveralmachines,theconfigfiledrivestheconnectivityinsteadofthecode. When combined with certain network environments this also allows fordynamicprocessingwheretheconfiginformationispassedinonthefly(ratherthanloadedfromafile),allowingforon‐demandallocationofresources.Yourcodecouldbedeployedonarandomserverandreceive jobsorrequests fromanyandeverysourcetobesenttoanyandeverydestination,allwithouthavingtochangethecodeorre‐deployyourapplication.

ConsoleCommandsinJava

TheprocessofwrappingaconsoleapplicationinJavaintroducesasignificantandconsiderablyunder‐documentedproblem,involvingdeadlock.Whenaconsolecommand or application is run, the output and error streams of the currentlyrunningoperatingsystemhandlevarious feedbacks. Thismaybe in the formofastatusupdate(output)oranunexpectedformat(error). When Java runs a console application, these streamsmust be processed insomemanner. Typicallyawhile loop isrunonacollectorthatpulls info fromthestream,linebyline,finishingoncethestreamisempty.Thisworkswellinconceptandespeciallywell in simple environments, as simplyhavingawhile loop for theoutputstreamandthenanotherwhile loopfortheerrorstreamshoulddisplayallmessagesandexitcorrectly. Theproblemarisesduetothefactthatwhileonestreamisfulltheotherisblocked.Ifamessageiswaitingintheerrorstream,itwillnotallowprocessingontheoutputstream.Iftheapplicationmakesuseoftheerrorstreamandtheoutputstream intermittently, two consecutive while loops will cause deadlock as youroutput loop sees an output streamwith info in it, yet the presence of info in theerrorstreampreventsit'saccess.

20

One must concurrently process the streams to bypass this problem. Bysettingupeachstreamreaderinit'sownthread,nodeadlockwillpreventonefromreadingastheotherwilleventuallyclear.

Results Ingeneral,thisprojectwasacompletesuccess.Nofunctionalrequirementswereunabletobeaddressedandeveryproblemthataroseendedwithanelegantsolution. Each component was designed to scale to multiple machines withouthavingtobere‐writtenandintegratedseamlesslywiththeexistingWCsystem.

SystemTesting Testswereestablishedforeachofthefourcomponentsaswellasintegrationtests for theentire system. In addition to acceptance tests, simulated server loadtestswillbeperformedtotestcapabilitiesunderstress.

SystemTesting‐AcceptanceTestsSecurity

Cananyoneviewpublicvideos?

Publicvideosareviewablebyanyone,regardlessofaJSESSIONIDexistingornot.

Canpermittedusers(andonlypermittedusers)viewsecuredvideos?

Ifauserrequestsavideobutdoesnothavepermissiontoviewit,therequestisrejected.Likewise,ifavideoisrequestedanonymously(i.e.auserisnotloggedin)andisnotpublic,therequestisrejected.

Willachangeinuserrolescorrectlyblockapreviouslyviewablevideo?

Totestthisrequirement,auserwithsufficientprivilegesopenedapagewithan embedded video. While viewing the video, the roles of the user werechangedtoremovepermissions.Uponrefreshingthepage,theusercouldnolonger receive the video. Likewise, changing the video role frompublic toprivatealsodeniedfurthervideorequests.

VideoLibrary

Canadministratorsuploadvideostothevideoserver?

21

Administrators are able to utilize the uploading utility to correctly uploadandupdatevideos.

Canadministratorssetrole­basedpermissionsonindividualvideos?

Administrators can associate roles with individual videos using the videomanagementtool.

Canadministratorssetthetitle,size,andposterimageforuploadedvideos?

Unfortunately poster image is not currently supported due to timeconstraints. Titleisabletobecustomizedandsizeitinheritedfromthefileitself.

ClientInterface

Canadministratorsselectvideosfromthevideolibrary?

Administrators can choose a video from the Browse Videos dialog whileinserting a video. The video parameters are automatically passed to theeditorandcanthenbeinsertedintothedocument.

Canadministratorssetthevideotostartplayingwhenthepageisloaded?

Autoplay works on desktop browsers, but is disabled by Apple on iOSdevices. Administrators can enable autoplay for desktop browsers bycheckingtheboxlabeled‘Beginplayingimmediately’whileinsertingavideo.

Doesthevideoplayerselectthecorrectvideostreamfordesktopbrowsers?

TheFlashplayerisnotsupportedoniOSdevicessotheJavaScriptdoesnotembedaFlashelementafteritembedstheHTML5videoelement.

VideoEncryption

AreencodedvideosplayablewithAdobeFlash?

As Flash is the default player for video served by theWowza platform, allencodedvideosmustbe(andhavebeentestedtobe)compatiblewithFlash.

AreencodedvideosplayableontheiOSemulator/iPhone/iPad/Android?

TestsfortheiPadandiPhonehaveallowedvideotobeplayed.AnemulatorfortheAndroidhasyettobetested.

22

Cantheencryptionscriptrunmultiplefiles?Theencoderisbuilttorunanynumberofjobsasneededandcorrectlyrunsthemsequentially. Duetothenatureofthebatchedprocess,noconcurrentexecutionisneeded.

Cantheencryptionscripthandleverylarge/longfiles?

Tests were run on larger, high definition files without error. An instanceoccurredwhereavideowithcustomsurround‐soundtracksdidnothaveit'saudio correctly converted, yet thiswas considered inconsequential as suchaudiotracksarerareandonlypresentinveryspecificDVDandBluRayrips.

Areoddaspectratiossupported?Non‐standardaspect ratiosarecorrectly convertedwithouterrorand theirrespectivedatabaseentriesupdatedtoreflecttheseproperties.

Integration Integration testing of the components was necessary to ensure that aworking result was delivered to the client. The code was deployed to apreproductionwebserver,runningtheWCsoftwarewithouradditionsandtestedfor functionality. Other machines housed the Wowza server and the encodingapplicationtoallowthetestingofcross‐resourcecommunication.

Conclusion

ClientReview Afulldemonstrationofthefinishedprojectwasgiventotheclient. Usingacomputer independent to the project, the clientwas able to successfully upload avideofromhiscomputer,havethevideoencodedcorrectlyandhavethevideoputonWowza. Theclientwas thenable tocreateanewwebpageonWebCrescendoandincludethevideoaspartofthepage.Theclientwasabletoviewthevideofromthewebpagewhenthevideowasgivenpublicpermissions,butcorrectlyhadtologintothewebcrescendoserviceinordertoseethevideowhenthepermissionsforthevideowerechangedtonon‐public.

LessonsLearned SMT has numerous base libraries for common tasks like parsing querystrings, creating database connections and making HTTP requests to servers.Beforewritinganygeneric functionality it is important tocheck thebase librariesfor existing resources. These resources are already incorporated into the Web

23

Crescendoplatformandalreadytakecareofvariousconfigurationsanderrorsthatcanoccur. The JavaServer Pages Standard Tag Library (JSTL) is especially useful todynamicallycreatelistsorparametersforvideos. Inaddition,simplelogicmaybeplaced into the JSPs that allow formore dynamic content control. However, JSPsshould not contain any “business logic” and simply display content in the properformat. Despite initial impressions, "open source" does not translate to "viablecommercial solution". In a business environment where software stability andsupport is crucial, the conglomerate of code representing most open sourceapplicationscreatedmoreproblemsthanitsolved.InthecaseofFFmpeg,buildingaversion that included the H264 support required an involved process of trackingdownlibrariesandtroubleshootingbuilds,relyingoninformationpostedinvariousforumsdatingasoldas five to tenyears. In theeventencodingneedschanged,anew build must be made with new libraries and generally required much moretechnical expertise than shouldbeneeded for sucha simple implementation. Forthesereasonswerecommendusingalive,updatingcommercialapplicationthatisbackedbycustomersupport...youreallydogetwhatyoupayfor! When creating methods & classes it is important to not only includedocumentation surrounding the method (like Javadocs) but also to includecomments inside eachmethod identifyingwhat themethod is doing. This allowssomeone else to view your code as an overview rather than needing to deciphereachlineofcodetofigureoutwhatishappening. Itisalsoimportanttomakesurethatmethodsdoonetaskandonetaskonly.Bycreatingmethodsthatonlydoonetaskyoucreatefunctionsthatotherscanusewithoutneedingthecontextofyourapplication.Forexample,oneofthefunctionsintheWebServiceisgetVideoRoles().Thisfunctiondoesonetask,whichisgettingthevideoroles.ItdoesnotgetvideorolesANDcomparethemtoaroleID,etc.ThisallowssomeoneelsewhoneedsvideorolestousethisfunctionwithoutneedingtheWeb Service application. Furthermore, you will find that when you separateindividual tasks out into their ownmethods the biggermore importantmethodsbecomerathersmallandveryeasytoread. Rememberthatexceptionsareyourfriendsandthatyoushouldusethemasneeded.Thisisespeciallytrueifyouarecorrectlycreatinghelperfunctions,whichare context free. For example, if getVideoRoles() had a NullPointerExceptionbecause the video couldn’t be found getVideoRoles() should throw that exceptioninstead of consuming it. This is because getVideoRoles() doesn’t (and shouldn’t)know what needs to be done in the event of a NullPointerException. However,rememberthatexceptionsshouldonlybeusedfornon‐standardprogramflow.Ifamethodreturnsnullbutyouprocess thatnull immediately then it isbetter to just

24

check the return value for null rather than attempting to do something with thereturnvalueandcatchingaNullPointerException. You should always commentwhich development kit version you are usingwhenimportinglibraries.Forexample,includea“JDK6.0”aboveyourimportsfromthe JDK 6.0. Remember that just like every piece of code libraries are living andcontinuallychange.Utilityfunctionswillactdifferentlyindifferentversions.Whenattempting toupdateordebugyour code it is important toknowwhatversionoflibrariesare/werebeingused. Buildscriptswillsaveyoualotofhassle.Whendevelopingcodeforserversitisaregulartasktocreatearchivefilesandredeploythosefilestoatestserver.Inour environment this included creating .jars of our classes and exporting them tospecific destinations on our test machines. Doing this by hand would takeconsiderabletime.However,usingbuildscriptsEclipsecanbeconfiguredtore‐jarand export selected files every timeyouperformcertain actions, like saving fromyour project! What this meant was that for developing on the Wowza Serverupdatingtheserverwiththecorrectjarswasasimpletaskofsavingtheproject.

FutureDirections Supportforvideoposterimagefilesandthumbnailfileshadtobeleftoutduetotimeconstraints. Thesewouldneedtobeimplementedinthefuturetoprovideeasyvideolibrarynavigationandcustomvideodenialmessages. Live streaming videowas a potential feature that did not become realizeddue to time constraints. Notmuch researchwas devoted to its functionality as aresult,butWowzadoessupportitbydefaultandintheoryshouldnotbetoodifficulttoimplement. Thedatabaseschemacurrentlyshowssupportforataggingandfiltersystem.Dueto timeconstraintsandananalysisof thescopeof theproject, thisportionofthedesignwasunabletobecompleted.However,thiselementofthevideolibraryshould be able to be added easily. It would have a very similar structure to thevideoroles.ModificationwillneedtobemadetothevideolibraryActioninordertosupportthisaswellandtheJSPpageforuploadingandupdatingavideowillneedtoalsobeupdatedtosupporttheaddingoftagstoavideo.

25

Glossary API ApplicationProgrammingInterfaceCLI CommandLineInterfaceCMS ContentManagementSystemHandbrake Anopensource,GPL‐LicensedvideotranscoderH264 Amodernstandardofvideoencodingclassicallycontainedinan

MP4filestructure.HTML HyperTextMarkupLanguage(referstothestandardformatusedto

createwebpages)JDBC JavaDatabaseConnectivity,aJavaAPIthatenablesJavaprogramsto

executeSQLstatementsJSP JavaServerPagesJSTL JavaServerPagesStandardTagLibrary,encapsulatesassimpletags

thecorefunctionalitycommontomanyWebapplicationsMP4 Avideocontainerformatthatdescribesmetainformation.Portlet AmodularsectionofwebcontentSMT SiliconMountainTechnologies,Inc.(ourclient)VM VirtualMachineWC WebCrescendo(thecurrentwebapplicationofSMT)

References ProjectRequirements‐seeattached. Originalprojectrequirementsdocumentassuppliedbytheclient.Handbrake‐http://handbrake.fr/ HomepagefortheHandbrakeencodingutilityHandbrakeCLI‐https://trac.handbrake.fr/wiki/CLIGuide InfoontheusageofHandbrake'sCLIWowza‐Seelistedbelow GeneralreferenceandinformationontheWowzamediaserverhttp://www.wowzamedia.com/video‐streaming‐server.htmlhttp://www.wowzamedia.com/forums/http://www.wowzamedia.com/resources/WowzaMediaServer_UsersGuide.pdfhttp://www.wowzamedia.com/resources/WowzaMediaServer_ServerSideAPI.pdf

26

YoureBusinessSolutionsPartner

Silicon Mountain Technologies _________________________________

___ Web Crescendo Application Streaming Media Services

27

TableofContentsTableofContents.................................................................................................................. 27

RevisionHistory.................................................................................................................... 28

1 Overview........................................................................................................................ 29

2 Scope.............................................................................................................................. 302.1 ServerSelection ..................................................................................................................................................... 302.2 ClientSelection/Development ...................................................................................................................... 312.3 WebCrescendoSecurityIntegration............................................................................................................ 312.4 VideoLibraryandEncoding............................................................................................................................. 322.5 Real‐timeVideoStreaming ............................................................................................................................... 332.6 MiscellaneousCapabilities ................................................................................................................................ 33

3 Conclusion...................................................................................................................... 34

28

RevisionHistoryDate Name Description5/16/2011 JamesCamire CreationofDocument

29

Overview

The SMT Web Crescendo platform is a state of the art, Web Management System that allows our customers to quickly and easily manage large, complex web sites. Over the course of the past few years, video services have become a more important component of the standard website offering. With the launch of the Web Crescendo Learning Management Platform (Q4 2011), video streaming services will become an important component of the Web Crescendo application. Because video is such an important component of the LMS, users will need the ability to easily integrate video from their video library into a page on the LMS course. While there are many excellent 3rd party video-streaming services, these offerings all lack a crucial component. Namely, the ability to have a tight integration between the video and the security model implemented on their website. This integration is the most critical component of the service offering.

30

Scope

This project will be tasked with creating a Video Streaming Service and integrating the service into the Web Crescendo application environment. This project is broken into a number of components. These components are listed below in their order of importance. Sections 2.1 through 2.3 are REQUIRED components for Phase 1 of this project. Figure 1 shows the major components to this project.

Figure 1 ServerSelectionTheselectionofthestreamingmediaserverisperhapsthemostimportantcomponentofthisproject.Theserver,ataminimum,mustsupportthefollowingcapabilities:

• Must have a robust API that will allow a developer to implement various features through external code

31

• Must be able to interrupt the request pipeline before the stream is started and reroute the request to an error handler in case of unauthorized access

• Must be able to easily add new videos to the repository through file managed implementation or the API

• Part of the server evaluation process is the determination of the video formats necessary for delivery to the targeted platforms. These platforms include:

o HTML 5 compliant mobile devices, with special emphasis on iPhone, Android and Blackberry devices

o HTML 5 compliant browsers, including Internet Explorer, Firefox, Chrome, Safari and Opera

o Flash video support for browsers that are non-compliant with HTML 5

• While it is probably not possible to support one video format for all of the supported devices, the goal is to standardize on 2 video formats.

• Since we are a small company, we need to ensure that the chosen server platform has attractive licensing options.

ClientSelection/DevelopmentTheselectionoftheclienttoolsnecessarytoseamlesslydisplaythevideoisextremelyimportant.ItshouldbeeasytoincludeavideoclientonanHTMLpageandhavetheappropriatevideo/videoclientdisplayed.Theclientshouldsupportthefollowingfeatures:

• Standardcontrols(volume,play,pause,skip,etc..)shouldbeavailableandeasytoturnon/off

• Clientshouldallowforeasystyling/formattingthroughtheuseofCSS

• BothHTML5andFlashclientsmustbesupported

• Musthavetheabilitytoautomaticallydetecttheuserdeviceandusethatfordisplayonthatdevice

• BuildapluginfortheCKEditorWYSISYGtoolthatwillallowuserstoselectavideofromthelibrary,chooseasetoffeaturesfortheplayer(size,controls,etc..)andwillinserttheappropriateHTMLontothearticle.

WebCrescendoSecurityIntegration

32

Oncetheserverselectionhastakenplace,integrationbetweentheWCplatformandthestreamingServermustbeimplemented.Thefollowingsequenceofeventsshouldoccur:

1. Browserrequestsaccesstoavideo.

2. StreamingserverwillcallaWCwebserviceandpassthefollowinginformation:

a. RequestedVideo

b. URLoftherequest

c. UserJSESSIONIDfortherequest3. WCwebservicewillidentifythevideointhelibraryandretrievetheaccess

informationforthatvideo.4. WCwebservicewillidentifytheuserrolebasedupontheprovided

JSESSIONID

5. WCwebservicewillcomparetheuserroletothevideoroles.6. WCWebServicewillreturnastatuscodetothestreamingserver

7. Ifuserisauthorizedtoviewthevideo,videowillbeginstreamingtotheuser

8. Iftheuserisnotauthorized,anotauthorizedimagewillbereturnedfordisplay

Itisimportanttonotethatthedomainnameforthewebsiteandthestreamingservermustbethesame.Otherwise,theJSESSIONIDwillnotbepassed.WCusesacookiepathof“/”,whichmeansthesessionidwillbepassedtoanypathontheserver.SMTwillbeimplementingalayer7loadbalancerforthisproject.Allvideoswillberequestedby:http://domain/media

VideoLibraryandEncodingUsersmusthaveamechanismtouploadvideos,managetheiraccessrolesandbeabletodeletevideosinthelibrary.Sinceasinglevideoformatwillnotallowustosupportalldesireddevices,wewillneedtoencodevideosintomultiple(hopefullyonly2)formatsuponupload.Thefollowingusecasewillbeimplementedforthisproject:

• AdminscreenintheWCadmintoolthatwilldisplayalistofvideos.• Usersshouldbeabletoeditvideometa‐dataandaccesscontrols

• Usersshouldbeabletodeletevideosinthelibrary• Thefollowingsequenceshouldoccurwhenaddinganewvideo:

33

a. Filloutmeta‐data

b. Selectvideofromtheirfilesystemc. Pre‐checktoensuretheformatissupportedbyourencoders.We

needtodefinethislistofformatsd. VideowillbestreamedtotheserverusingSMT’sFileUploadfilter.

e. Videowillbeconvertedintomultipleformatsandmovedtotheappropriateplaceonthefilesystem

f. Databasewillbeupdatedtoincludethepointertothevideoaswellasthemeta‐data

• Usersshouldbeabletopreviewtheirvideofromtheadmintool

Real‐timeVideoStreamingTheWCstreamingservicesmustsupportthecapabilitytoperformreal‐timevideostreamingthroughaWCwebsite.Whilethisservicewillrequiresignificantcapabilityfromtheventcoordinator,theremustbeaWCprocess/capabilityinplacetofacilitatethisoffering.Thiscomponentmusthavethefollowingcapabilities:

• Predefinedmechanismstreamdatafromtheremotelocationtoourstreamingservers

• Real‐timedeliverythroughtheuserswebsite• AbilitytoaddthestreamtoawebpagebeforetheeventviatheWCadmin

tool

• Savingofthestreamintotheproperformatsandaddingtothevideolibraryforfutureviewing

MiscellaneousCapabilitiesInadditiontothecorecapabilities,weneedtoalsohavetheabilitytodosomeofthefollowing:

• Addmeta‐datainformationtotheWCcontentindexer• Abilitytoviewpage/videoaftersearching

• OptimizetheviewersandpagesforSEO• AbilitytouseaCDN(contentdeliverynetwork)inthefuturewhilealso

maintainingoursecurityintegrationpoints

34

ConclusionThisserviceofferingmustbeinlinewiththeothercapabilities(LMS,EmailCampaigns,WMS)currentlyofferedintheWCplatform.Itshouldbeeasytomanage,deployandusebynon‐technicalpeople.Phaseoneofthisprojectwilllast6weeks.Thescopeidentifiedabovewillbeparsedoutandassignedtoeachindividualaspartofthisproject.Oncethescopehasbeenassignedandphaseonefeatureshavebeenidentified,theexpectationisthateachdeveloperwillberesponsibleforensuringtheirareaofresponsibilityiscompletedandintegratedintothelargerproject.Aprojectmanagermustbeassignedforthisinitiative.Weeklystatusupdatesandcommunicationsarerequired.