外文翻译-Java媒体构架基础_第1页
外文翻译-Java媒体构架基础_第2页
外文翻译-Java媒体构架基础_第3页
外文翻译-Java媒体构架基础_第4页
外文翻译-Java媒体构架基础_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

0JavaMediaFrameworkBasics1.Aboutthisguide2.Asimpleaudioplayer3.JMFuserinterfacecomponents4.JMFconcept5.Propagationandreceptionofmedia6.summarizesandresourcesSectionI.AboutthisguideThisguidecontainsthecontents?Javamediaframework(JMF)isanexcitinggenericAPI,whichallowsJavadeveloperstodealwiththemanydifferentwaysthemedia.ThisguideprovidesanoverviewofsomeofthemainfeaturesofJMFsworkthroughanexampleusing.Afterreadingthisguide,youwillunderstandJMFarchitecturemajorplayback.YoucanalsousetherightJMF,usingexistingexamplesandextensionsformorespecificsourcecode.Thisguidecontainsthefollowingtopics:DownloadandinstallJMFThemainclassesandtheirapplicationinJMFJMFarchitecturePlaylocalmediafilesToaccessandmanipulatethemediatoproduceandgraphicaluserinterface(GUI)MediathroughthenetworkReceivemediathroughthenetworkWewillstudythecaseoftheprogramareasfollowsAsimpleaudioplayer(JMFsHelloWorldapplication):Thischaracterplayerinterfaceviathecommandline,simplyenterthenameofthemediafilecanplaymostaudiotypes.ThisaudioplayerdemogenerallydisplayauniqueclassofJMF.Agraphicalmediaplayer:Wewillusethebuilt-inJMFinterfacecomponentstocreateagraphicalinterface,sointhisexercisemusthaveprogrammingexperiencesomegraphicalinterface.TheMediaViewerdemousessomeJavaAWTandSwingclassestodisplaygraphicalcomponentsfortheuser.1Amediabroadcastapplications:Thisapplicationallowsalocalmediafilesoverthenetworktransmission.Thisprocedurecanmaketheflexiblemediaonlytoaspecifiednetworknode,ortransmittedtoasubsetofallnodesinthenetwork.ThisdemousessomeJavaAPIsfornetworktransmissionmediainthenetwork.Aspartofthethirdexercise,wewillmodifythegraphicalinterfaceoftheplayer,toallowittoreceiveandbroadcastmedia.Jump23WatchResources,articles,tutorials,andotherlistsbibliography,whichwillhelpyoutolearnmoreaboutthetopicsincludedinthisguide.AbouttheAuthorEricOlsonatRetekIncworkingsoftwareengineer.IthasfouryearsofworkexperienceintheJavaplatform,andexperiencedindifferentJava-basedtechnology,includingJMF,Jini,Jiro,JSP,servlets,andEJBs.EricgraduatedfromSt.Paul,St.ThomasUniversity,MN,andobtainedadegreeincomputerscience.HeworkedatIBMSanFranciscoprojectteamresponsibleforWebSphereBusinessComponents.HealsolongerImationCorp.,Responsibleforstorageapplications.Now,heisdevelopingweb-basedsoftwaresolutionsfortheretailindustry.Thensparetime,EricandPaulMondayonStereoBeaconcooperation-adistributedpeer-basedJMFmediaplayer.ContactE.SectionAsimpleaudioplayerBrowseInthissection,wewillcreateasimpleaudioplayerforthefirstexercise.ThisexampledescribestheclassesandPlayerManagerinterfaces,thetwomostimportantpartsarebuiltJMF-basedapplications.Inthiscasethefunctionofthelocalgoalistoplayaudiofilesinthecharacterinterface.Wewillstudythissourcecodeandunderstandeachlineofthetaskdone.Aftercompletingthissection,youwillhaveaJMF-baseddemoprogramthatcanbeplayedincludeMP3,WAV,AUandotheraudiofiles.2AfterthiskindofexercisecancheckthesourcecodefileclassificationSimpleAudioPlayer.java.IntroducingthenecessaryclassesSimpleAudioPlayerclassincludessomecallsinitsfirstfewlinesoftheneedtointroduceallthenecessaryclasses:importjavax.media*.;importjava.io.File;importjava.io.IOException;.URL;.MalformedURLException;Thejavax.mediapackageisoneofseveralpackagesdefinedbytheJMF.javax.mediaisacorepackage,includingthedefinitionoftheclassandPlayerManagerinterface.Inthissection,wemainlystudyclassesandPlayerManagerinterfacejavax.mediaclassbehindtherestofthechapters.Inadditiontotheintroductionofjavax.mediastatement,theabovecodesnippetintroducesadeclarationtocreateamediaplayerofsomeinput.PlayerInterfaceInthefollowingcodefragment,createapublicclassSimpleAudioPlayeranddefineaPlayerinstancevariables:publicclassSimpleAudioPlayerprivatePlayeraudioPlayer=null;Playersoundsfamiliartermfromthepoint,becauseitisbuiltonthefoundationofourcommonaudioorvideoplayeron.Infact,thisexampleisusedasaninterfaceastheirtruecopy.Playersrevealthemediaplayer(suchasstereospeakersystemorVCR)relatestoamethodonafunctionalentity.Forexample,aJMFmediaplayercanstartandendofamediastream.Inthissectionspecies,wewillusethePlayerofthebeginningandendofthefunction.CreateaPlayerinafilePlayerinstanceusingJMFtogetaparticularmediafileisverysimple.ManagerJMFinclass3asafactoryproducedmanyspecialinterfacetypes,includingPlayerinterface.Therefore,theresponsibilityoftheManagerclassistocreatePlayerinstance,thefollowingexample:publicSimpleAudioPlayer(URLurl)throwsIOException,NoPlayerException,CannotRealizeExceptionaudioPlayer=Manager.createRealizedPlayer(url);publicSimpleAudioPlayer(Filefile)throwsIOException,NoPlayerException,CannotRealizeExceptionthis(file.toURL();Ifyoureadthissectionofthecode,youcannoticetheManagerclassincludesotherwaystocreateaPlayerinstance.Wewillexaminesomeofthese,asinstantiatedinthelaterchaptersoftheDataSourceorMediaLocator.PlayersstatusJMFdefinesalargenumberofdifferentstatesofaPlayerinstancemayexist.Asfollows:PrefetchedPrefetchingRealizedRealizingStartedUnrealizedUsingthesestateBecauseoftheuseofmediaresourcesareoftenveryintensive,manymethodsaredisclosedbytheJMFisnotoccludedobjects,allowingaseriesofstatechangeeventlistenerforasynchronousnotification.Forexample,aPlayerbeforeitcanstart,youmustgothroughPrefetchedandRealizedstate.Duetochangesinthesestatesrequiresometimetocomplete,JMFmediaapplicationscanbeassignedtocreateathreadtoinitializePlayer4instance,andthencontinuewithotheroperations.WhenPlayerready,itwillnotifytheapplicationofitsstatehaschanged.Inonesuchasoursimpleprogram,thetypeofversatilityisnotveryimportant.Isforthisreason,ManagerclassalsoprovidessomeusefulmethodstocreateRealizedplayers.CallacreateRealizedPlayer()methodtoblockthecallingthreaduntiltheplayerreachesRealizedstate.Inordertocreateaplayercallsanon-blockingmethod,weuseacreatePlayer()methodintheManagerclass.ThefollowinglineofcodecreatesaprogramweneedtouseincasesofRealizedplayer:audioPlayer=Manager.createRealizedPlayer(url);StartingandstoppingPlayerSettostartorstopaPlayerinstancelikeasimpleauthenticationmethodinvocationPlayer,asfollows:publicvoidplay()audioPlayer.start();publicvoidstop()audioPlayer.stop();audioPlayer.close();CallSimpleAudioPlayerclassplay()methodtoimplementPlayerinstancecallsstart()method.Aftercallingthismethod,youcanhearthenativespeakersoundfiles.Thesame,stop()methodallowsplayertostopandcloseoffthePlayerobject.Forreadingandorlocalmediafilesforplayback,closethePlayerinstancereleasesallresourcesareausefulway.Becausethisisasimpleexample,theterminationofasessionisclosedPlayeracceptableway.However,inpracticalapplications,youneedtobecarefulbeforeyougetridofconfirmationPlayermustbeclosedoff.Onceyouveclosedoffplayer,amediaplayeragainbeforeyouhavetocreateanewPlayerinstance(waitforittochangestate).5EstablishaSimpleAudioPlayerFinally,themediaplaybackapplicationtoincludeaninputcommandfromthecommandpromptandcallinmain()method.Inthismain()method,wewillcallcreatesSimpleAudioPlayerapproach:FileaudioFile=newFile(args0);SimpleAudioPlayerplayer=newSimpleAudioPlayer(audioFile);Inonlyafewthingstoplayaudiofilesbeforethecallisaudioplayerhascreatedamethodplay(),asfollows:player.play();Tostopandclearouttheaudioplayer,inthemain()methodshouldhavethefollowingcalls:player.stop();CompileandrunSimpleAudioPlayerEnteratthecommandprompttocompilecasejavacSimpleAudioPlayer.javaprogram.FileSimpleAudioPlayer.classcreatedinthecurrentworkingdirectory.Thentypethefollowingcommandatthecommandprompttoruntheexamplesintheprogram:javaSimpleAudioPlayeraudioFileWillreplaceaudioFileintoaudiofilesonyourlocalmachine.Allrelativefilenamesarerelativetotestthecurrentworkingdirectory.Youwillseesomeofthecurrentlyplayingflaginformationfile.Toterminatetheplayback,presstheEnterkey.Ifthecompilationfails,confirmJMFjarfileshavebeencorrectlyincludedintheCLASSPATHenvironmentvariable.SectionIII.JMFuserinterfacecomponentsPlayVideoIntheprevioussection,welearnedtocreateacharactertoplayaudiofilesthroughtheinterfaceoftheapplication.JMFoneofthemostimportantfeaturesisthatyoudonotneedtoconfigurethemediaplayerawaytounderstandtheformatofthemediafile;everythingisbuilt.Asanexample,thenourpreviousexample,theneedtousetheMP3format,wedo6notneedtomakeanapplicationtoanMP3filetocreateaspecialPlayer.Asyouwillseeinthissectionagain,fortheoperationofthevideofiletobeeffective.JMFdetailedinformationonalltypesofmediafilesinterface.Handlevideoandaudiomedia,thebiggestdifferenceisthatwemustbuildadisplayscreenthatcanplayvideo.Fortunately,JMFcanhandlemanyofthesedata.Thenthesameasthepreviousexample,wewillcreateaPlayerobject,andusealotofvisualcomponentstocreateourvisualmediabrowserdirectlyfromJMFobject.Inthissection,wewillstudytwocasesprocedures.Inthissection,we&aposllwalkthroughthesecondexampleapplication.Pleasere-distributionofthesourcecodeviewMediaPlayerFrame.javainlaterexercises.AbouttheexampleInthissection,wewillbeabletocreateadisplayandrunthelocalaudioandvideomediaapplications.Aspartoftheexercise,wewillexaminesomeofthebuilt-JMFGUIcomponents.FamiliarwithAWTandSwingwillhelpyouunderstandthisexample,itisnotnecessary.UnlessyouneedtorelatedirectlytotheJMFGUIcomponents,orwewillnotdetailthesourcecode.Youcanfinddetailedinstructionsherearenotinvolvedintheannotatedsourcecode.Manyoftheconceptsofthepresentembodiment,weusetheclassesandmethodsaresimilartothefirstexample.MostofthebasicoperationofthesameestablishmentPlayer.ThebiggestdifferenceisthatweneedalittledeeperspecializesPlayerobject,especiallywhenyouneedtogetinformationfromthePlayersmediatime.HowtogetstartedExamplesofthevideoplayerisdesignedasanaudioplayerasanexampletorunfromthecommandline,butinthiscasebasedontheneedtobuildtheGUI.Asintheprevioussection,wefirstcalltheapplicationthroughthemediafilename.Then,theapplicationdisplaysaformwithactionablemediacomponent.InthebeginningofthelineMediaPlayerFramewedefinetheclassandextendfrom,javax.swing.Jframeclass.Thisiswhatmakesthemediaplayeronyourdesktopasaseparateformapproach.Anyclientprogramcreatedafterthemediaplayerobjectcanbedefined7Jframeclassbycallingtheshow()methodtodisplay.HereisanMPEGmoviebeingplayedMediaPlayerFramescreenshot:GetGUIcomponentsPlayerinterfacearesomewaystogetinvolvedinthevisualcomponenthasbeenselected.InMediaPlayerFrame,weusethefollowingcomponents:Player.getVisualComponent()isavisualcomponenttoplayallvideomedia.Player.getControlPanelComponent()isanoperatingtimelinevisualcomponents(includingstart,stop,rewind),butalsocontainssomeusefulinformationmediastream.Player.getGainControl().GetControlComponent()istheoperatingvolume(increase)thevisualcomponent.getGainControl()methodreturnsaGainControlinstance,canbeusedtochangetheprogramtoincreaselevels.ObtainspecialcontrolmediaAPlayerinstancecanalsobecontrolledbyexposingitsgetControl()andgetControls()method,getControls()returnsacontrolsetofobjects,andgetControl()returnsacontrol.Playerscanchoosedifferenttypesofspecialoperationstoexposurecontrolsettospecifythemediatype,ortransportmechanismusedtoobtainthemedia.Ifyouarewritingaonlysupportscertainmediatypesplayer,youneedtorelyonsomeoftheexamplesusedinthePlayerControlobject.Becauseourplayersareveryabstract,isdesignedforplayingavarietyofdifferentmediatypes,wesimplyexposeallControlfortheuserobject.Ifyoufindanyextendedcontrolset,wecanusegetControlComponent()methodtoincreasethecorrespondingvisualcontrolpanelonthelabel.Throughthisapproach,theusercanobserveallofthecomponentsontheplayer.Thefollowingcodefragmentwillcontrolallobjectsexposedtotheuser:Controlcontrols=player.getControls();for(inti=0;iTomakearealapplicationexamplescanControldosomethinguseful(inadditiontothedisplayoutsidethevisualcomponent),theapplicationneedstoknowthespecifictypeoftheControlandassignit.Thereafter,theapplicationcanusethesecontroltocontrolmediaprograms.Forexample,ifyouknowwhatmediayouusefrequentlyexposed8javax.media.control.QualityControltypesofControl,youcanuseQualityControlinterface,aftertheQualityControlinterfacebycallingvariousmethodstochangethenatureofthesetting.UseaMediaLocatorBasedonournewbiggestdifferenceisthatweusethemediaplayerbetweenGUIandourfirstsimpleplayerMediaLocatorobjectinsteadofaURLtocreateaPlayerinstance,asfollows:publicvoidsetMediaLocator(MediaLocatorlocator)throwsIOException,NoPlayerException,CannotRealizeExceptionsetPlayer(Manager.createRealizedPlayer(locator);Wewilldiscussthereasonsforthischangeinlaterchapters.Currently,thesiteonthenetworkresources,anddescriptiononMediaLocatorURLobjectisconsideredtobeverysimilar.Infact,youcancreateaMediaLocatorfromaURL,youcanalsogetfromMediaLocatortotheURL.OurnewURLinamediaplayercreatesaMediaLocator,andusesthefilecreatedbyaMediaLocatorPlayer.CompileandrunMediaPlayerFrameEnteratthecommandprompttocompilecasejavacMediaPlayerFrame.javaprogram.IntheworkingdirectorywillcreateafilenamedMediaPlayerFrame.classs.Typethefollowingtoruntheexampleprograminthecommandprompt:javaMediaPlayerFramemediaFileYouneedtouseamediafileonyourlocalmachinetoreplaceinmediaFile(audioorvideofilescanbe).Allrelativefilenamesarerelativetothecurrentworkingdirectory.YouwillseeacontrolsetofmediafilesGUIcontrolwindowdisplays.ForalistofJMFsupportaudioandvideofiles,theresource23.Iftheinitialcompilationfails,makesureJMFjarfilesarealreadyincludedinthecurrentCLASSPATHenvironmentvariable.MediaPlayerFrameinactionInthispre-holidayyoucanseeavideoplayerisplayingascreenshotMPEGvideofiles.The9screenshotbelowshowsanaudioplayerisplayinganMP3file:Tolearnmoreexamplesofthisexercise,MediaPlayerFramesourcecodetoseecompleted.SectionIV.JMFconceptJMFarchitectureYouhaveseenhoweasyitistouseJMFplaylocalmediafiles,andnowwewilltakeastepback,takealookathowthepieceiscreatedbyJMF-basedmediasuchsophisticatedapplicationsthebigpicture,ishowJMFcreatingsuchasophisticatedmediabasedapplications.ComprehensiveunderstandingoftheJMFarchitectureismeaningless,thissectionwillgiveyouageneralconceptonhowadvancedtheJMFcomponentsarecombinedtocreateadesiredthing.JMFcomponentstructureisveryflexibleanditscomponentscangenerallybedividedintothreeparts:Inputisusedtodescribeaprocess,cesssomeinputonimplementationactivities.Aprocessthathasaclearinputandoutput.Alargenumberofprocessesavailable,canbeusedforaninputoragroupofinputs.Theseprocessescanbelinkedtotheoutputofaprocessisusedtoenteranotherprocess.Inthisstyle,thenumberofprocessmaybeappliedtooneinput.(Thisperiodisoptional-thebeginningofourtwoexamplesdonotcontaintheactualdataprocess,onlyoneinputandoneoutputfilefromthePlayerthrough.)Outputdescribescertaindestinationmedium.Fromthesedescriptions,youcanimagineafterJMFcomponentarchitecturesoundslikeatypicalstereosystemorVCRto.Itiseasytoimaginethat,justasturnontheTVusingJMForadjustthesoundinstereospeakersystemstyle.Forexample,thesimpleactofrecordingyourfavoriteTVprogramsonthebasisofthesecomponentscanbein:Inputisatelevisionbroadcaststream,inthesametransportchannelaudioandvideo.Processarecordingapparatus(thatis,aVCRoranumberofdigitaldevices)convertingtheanalogordigitalaudioandvideobroadcaststreamsandadaptedtotapeorothermediaformats.Outputisformattedtrackrecord(audioandvideo)tocertaintypesofmedia.10JMFdataprocessingmodeThefollowingpictureshowstheJMFdataprocessingmoduleandgivesexamplesofeachtype:Usingthismodel,itiseasytounderstandthatourprevioustwoexamples,audioandvideoinputfromandoutputtoafileonthelocalcomputer.Inlaterchapters,wewilltalkaboutsomeofthetransmissionandreceptionofaudiomediathroughtheJMFnetworkingcapabilities.ProcessingmodelexampleTheJMFinput,processingandoutputmodeslinked,wecanbegintoimaginemanymedia-basedoperationcouldbecompletedbyJMF.Oneexample,convertonetypetoanothertypeofmediaandstoretheoutputtoanewfile.Asanexample,wewantwithoutdamagingtheoriginalfileconvertedaWAVformataudiofilestoMP3format.Thefollowingillustrationoftheprocessmodelisthatwewillbeginthestepstoconvert:InputinthiscaseisaWAVfile.Itisamediaformatconversiontoolforprocessing,andoutputtoanewfile.Now,letuslookateachstepoftheJMFAPIinthismode.Weusetheinput,processingandoutputofthemodelasaconceptualsignpost.JMFinputJMFagain,generallyconsistsofaMediaLocatorobjecttodescribeaninput.Aspreviouslystipulated,MediaLocatorappearanceandbehaviorareverymuchlikeaURL,sothatitcanuniquelyidentifyaresourceonthenetwork.Infact,usingaURLtocreateaMediaLocatorisentirelypossible;wehavetwoexamplesinfrontisdoing.Forourmediaconversionexample,weneedtocreateaMediaLocatortodescribetheoriginalWAVfile.Aswewillseeinlaterchapters,aMediaLocatorcanalsobeusedtodescribeamediastreamacrossthenetwork.Inthiscase,MediaLocatorURLwilldescribethespread-muchlikeanURLspecifiedresourceontheWebforalocalfilesysteminsteadofspecifyingthefiletocreateMediaLocator.MediaLocatordifferentbetweenoneandaURLTosuccessfullyestablishaURLobject,.URLStreamHandler11installedinthesystem.ThisprocessistheabilitytousetheprocessingflowofthestreamtypeisdescribedintheURL.AMediaLocatorobjectandisnotnecessary.Forexample,ournextapplicationwillusetheReal-timeTransportProtocol(RTP)totransmitaudiooverthenetwork.SincemostsystemsdonotinstallaURLStreamHandlerasRTPprotocol,socreateaURLobjectwillfail.Inthisapplication,theobjectwillsucceedonlyMediaLocator.TounderstandmoreURLobjectsandcreateandregisteraURLStreamHandlerinformation,checkthedocumentationontheJDK(see23resources).JMFprocessorWhenweusetheJMFwhentheapplicationprocessorcomponentsaredescribedProcessorInterfaceinstance.YouneedtohavesomefamiliarityProcessor,whichextendstothePlayerinterface.DueProcessorInterfaceinheritancestraightPlayer,italsoinheritsalltheattributesavailablefromPlayer.Inaddition,Processoraddstwoattributes:ConfiguringandConfigured.Theseextendedattributes(andassociatedmethods)Processorcommunicationforcollectinginformationfromtheinputstream.Inourlastexampleprogram,wewillcreateaProcessorforMP3audioencodingformatintoaformatsuitableforthenetworkcommunication.Inlatersections,wewilldiscusscreatingasimpleProcessorsteps.JMFoutputThereareafewmethodsusedtodescribetheoutputstateJMFinprocessingmode.Theeasiest(andwewilluseinthelastexample)isjavax.media.DataSinkinterface.ReadsthemediacontentandaDataSinktransmitsittothedestinationnumber.Audioformatconversionprocessinthissectioninthebegin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论