POCETNA STRANA

Seminarski i Diplomski Rad
 

SEMINARSKI RAD IZ MULTIMEDIJE

 

Virtuelna multimedijalna biblioteka

Pregled osnovnih koncepata i ideja koji se nalaze u aplikaciji

Projektovali smo i implementirali aplikaciju u Director-u 2004 koja ima funkciju multimedijalne biblioteke. Podržava rad sa audio i video fajlovima, slikama, te rad sa DVD-ovima. Podržana je većina dostupnih formata fajlova, njihova katalogizacija (osim u radu sa DVD-ovima gdje ona i nema smisla), kao i njihovo reprodukovanje. Korišten je programski jezik Lingo, a osnovne skriptove ćemo predstaviti u daljnjem izlaganju.

Storyboards kojima su opisani osnovni dijelovi (ekrani) aplikacije uz naznaku dinamike i interakcija

 

Početni ekran naše aplikacije izgleda ovako:

 

Pocetni ekran

 

 

Iako je intuitivno sve jasno, slijedi kratko objašnjenje:

Nota – otvaranje opcije za audio fajlove

Kamera – otvaranje opcije za video fajlove

Aparat – otvaranje opcije za slike

DVD – otvaranje opcije za reprodukovanje DVD-ova

 

Klikom na jednu od ove četiri opcije dobijaju se sljedeći ekrani:

 

 

     

 

 

 

Opcijama “+“ i “-“ dodajemo i uklanjamo fajlove iz liste.

Za audio i video fajlove imamo opcije play, pause, stop, rewind i next. Strelice prema gore i dole omogućavaju pojačavanje, odnosno smanjivanje tona.

Za slike opcija X omogućava pregled slike, a ista opcija uklanja otvorenu sliku i vraća sliku na gore prikazani ekran.

Kod opcije za reprodukovanje DVD-ova bitno je samo pravilno unijeti slovo drive-a sa koga se učitava DVD. Ostalo radi naš program.

 

Detaljniji opis navigacije korisnika po dijelovima aplikacije

 

 

Za selekciju fajlova koristi se dugme “+” koje nam omogućava otvaranje prozora za kretanje po fajl sistemu. Korisnik samo treba da odabere fajl koji želi da upiše u bibioteku i njegova apsolutna putanja se automatski učitava u jedan od tri tekstualna fajla (audio.txt, video.txt, slike.txt) koji se nalaze u istom direktorijumu kao i aplikacija.

 

 

 

Međutim, u listu, radi bolje preglednosti, se upisuje samo ime fajla. To smo postigli sljedećom funkcijom:

on parsirajPutanju(punaPutanja)

repeat while punaPutanja contains "\"

pojava=offset("\",punaPutanja)

punaPutanja=chars(punaPutanja,pojava+1,punaPutanja.length+1)

end repeat

return punaPutanja

end

 

 

Za vrijeme reprodukcije videa on se raširi preko cijelog ekrana, a korisniku iznad videa ostaju omogućene sve opcije. Dugme play je onemogućeno za vrijeme prikazivanja videa da se korisniku ne ostavi mogućnost da ponovo pokrene isti filmić preko trenutno prikazivanog.

 

 

 

U meniju za slike klikom na X se otvara selektovana slika. Slika se prikazuje u svojoj veličini ako je manja od 600x400, a ako nije smanjuje se na prethodne dimenzije da bi stala na ekran aplikacije.

 

   à  

 

Podržani formati, po kategorijama:

  1. Video
  • avi (divx)
  • mpeg, mpg...
  • qt (QuickTime)
  • mov (QuickTime)
  • rm (Real Audio, kad se pokrene nudi se instaliranje plugina sa neta...)

Svi video formati su podržani kao #windowsMedia.

 

  1. Audio
  • mp2, mp3, ...
  • wav

U ovom slučaju svi podržani formati su tipa #sound.

 

  1. Slike
  • bmp
  • jpg (jpeg)
  • gif
  • tif
  • png

 

  1. DVD
  • podržava bilo koji DVD

Implementacija

Cast Window:

Cast Window

Osim već pomenutih ikona, uočavaju se i slova koja u animaciji „dolijeću“ na svoje mjesto kad se izabere jedna od četiri opcije. Sa njima se pojavljuju i relevantne kontrole za određenu akciju, npr. play i stop za audio i video ili krstić za slike. Primjetan je veliki broj skriptova, tako da ćemo obratiti pažnju samo na osnovne.

Za prikazivanje prelaza postoje četiri bitna momenta u kojima su svi Keyframeovi složeni jedan ispod drugog – to su frame-ovi sa brojevima 1, 48, 92, 125, 180. To su statični ekrani i u njima se poziva _movie.go(_movie.frame) dok god se iz “menija” ne izabere nešto drugo čime se aktivira određeni “flag”. U tim frame-ovima se događa glavna radnja. Pri prelazu se pozove samo jedna funkcija:

_movie.go(_movie.frame+1)

čime se nastavlja animacija.


 Nailazi se uvijek na isti script (broj 36) koji zapravo odlučuje kuda dalje:

 

on exitFrame me

  if(filmFlag=true) then

    member("List_film").labels=ListaVideo_lb

    member("List_film").data=ListaVideo

    _movie.go("FilmMarker")

  else if (muzikaFlag=true) then

    member("List_muzika").labels=ListaAudio_lb

    member("List_muzika").data=ListaAudio

    _movie.go("MuzikaMarker")

  else if(dvdFlag=true) then

    _movie.go("DVDMarker")

  else

    member("List_slike").labels=ListaSlike_lb

    member("List_slike").data=ListaSlike

    _movie.go("slikeMarker")

  end if

end

 

Na osnovu četiri “flaga” (muzika, film, slike, dvd) se prelazi na jedan od četiri markera, i tako ukrug. Dolazi se do animacije kojom elementi (play,stop...) ulaze na ekran, i onda se opet dodje do _movie.go(_movie.frame).

Pritiskom na bilo koji stop očiste se svi cast memberi.

Funkcijom prepareMovie() se postavlja veličina pozornice, boje pozadina za različite dijelove aplikacije i učitavaju podaci iz već pomenutih fajlova – audio.txt, slike.txt i video.txt. Navedeni fajlovi se otvaraju, čitaju i parsiraju putanje fajlova, te učitavaju u liste za katalogizaciju. Svi flag-ovi se postavljaju na false:

on prepareMovie()

  _movie.stage.rect=rect(0,0,600,400)

  ListaAudio=[]

  ListaAudio_lb=[]

  ListaVideo_lb=[]

  ListaVideo=[]

  ListaSlike=[]

  ListaSlike_lb=[]

  _movie.stage.resizable=false

  bojaCrvena=rgb("#FF6666")

  bojaPlava=rgb("#B3CBFF")

  bojaZuta=rgb("#FFE791")

  bojaTamnoCrvena=rgb("#D90000")

  bojaZelena=rgb("#CCFFFF")

  bojaSvijetloCrvena=rgb("#FFAAAC")

  member("Pozadina").fillColor=bojaZelena

  fajl=new xtra("fileio")

  fajl.openFile("C:\mms\video.txt",1)

  tekstFajla=fajl.readFile()

  if(tekstFajla<>"") then

    ListaVideo=value(tekstFajla)

  end if

  repeat with i=1 to ListaVideo.count

    ListaVideo_lb.add(parsirajPutanju(ListaVideo[i]))

  end repeat

  fajl.closeFile()

  fajl.openFile("C:\mms\audio.txt",1)

  tekstFajla=fajl.readFile()

  ListaAudio=value(tekstFajla)

  repeat with i=1 to ListaAudio.count

    ListaAudio_lb.add(parsirajPutanju(ListaAudio[i]))

  end repeat

  fajl.closeFile()

  fajl.openFile("C:\mms\slike.txt",1)

  tekstFajla=fajl.readFile()

  ListaSlike=value(tekstFajla)

  repeat with i=1 to ListaSlike.count

    ListaSlike_lb.add(parsirajPutanju(ListaSlike[i]))

  end repeat

  fajl.closeFile()

  slikeFlag=false

  filmFlag=false

  muzikaFlag=false

  dvdFlag=false

  dvdPaused=false

  slikeAktivne=false

  audioPlaying=false

  videoPlaying=false

  videoPaused=false

  audioPaused=false

  dvdPlaying=false

  chapter=1

end

Sljedeće dvije male, ali korisne funkcije su nam omogućile da se ikona na kojoj je pointer miša malo poveća, a sa njegovim odlaskom vrati na normalnu veličinu. Dosta često su korištene u mnogim skriptovima:

 

on mouseEnter()

  _movie.sprite(4).width=_movie.sprite(4).width+10

  _movie.sprite(4).height=_movie.sprite(4).height+10

end mouseEnter

 

on mouseLeave()

  _movie.sprite(4).width=_movie.sprite(4).width-10

  _movie.sprite(4).height=_movie.sprite(4).height-10

end mouseLeave

Sljedeća funkcija omogućava izvršavanje audio i video fajlova, a pridružena je skriptu koji odgovara cast member-u play. Veoma slično su ostvarene i funkcije pause, stop, rewind… Najbitnije je da se ispita koji je “flag” postavljen, na osnovu toga onemoguće ostali i omogući pokretanje pomoću određenog kanala za taj medij:

on mouseUp me

  if(muzikaFlag=true) then

    if(audioPlaying=true) then

      sound(1).stop()

      zvucniFajl=VOID

      if(not voidP(sprite(9).getSelectedIndex())) then

        audioPlaying=true

        izbor=integer(_movie.sprite(9).selectedIndex)

        nazivFajla=ListaAudio.getAt(izbor+1)

        if(nazivFajla contains ".rm") then

          zvucniFajl=_movie.newMember(#realMedia)

        else if(nazivFajla contains ".wma") then

          zvucniFajl=_movie.newMember(#windowsMedia)

        else

          zvucniFajl=_movie.newMember(#sound)

        end if

        zvucniFajl.fileName=nazivFajla

        sound(1).play(zvucniFajl)

      end if

    else if(audioPaused=true) then

      sound(1).play()

      audioPaused=false

      audioPlaying=true

    else if(audioPlaying=false and audioPaused=false) then

      if(not voidP(sprite(9).getSelectedIndex())) then

        audioPlaying=true

        izbor=integer(sprite(9).selectedIndex)

        nazivFajla=ListaAudio.getAt(izbor+1)

        if(nazivFajla contains ".rm") then

          zvucniFajl=_movie.newMember(#realMedia)

        else if(nazivFajla contains ".wma") then

          zvucniFajl=_movie.newMember(#windowsMedia)

        else

          zvucniFajl=_movie.newMember(#sound)

        end if

       

        zvucniFajl.fileName=nazivFajla

        sound(1).play(zvucniFajl)

      end if

    end if

   

    -- ako se koristi film

  else if(filmFlag=true) then

    if(videoPlaying=false and videoPaused=false) then

      if(not voidP(sprite(9).getSelectedIndex())) then

        videoPlaying=true

        izbor=integer(sprite(9).selectedIndex)

        nazivFajla=ListaVideo.getAt(izbor+1)

        if(nazivFajla contains ".rm") then

          videoFajl=_movie.newMember(#realMedia)

        else

          videoFajl=_movie.newMember(#windowsMedia)

        end if

        videoFajl.fileName=nazivFajla

        channel(30).makeScriptedSprite(videoFajl)

       

        -- postavljanje dimenzija

        _movie.stage.rect=rect(0,0,800,600)

        channel(30).sprite.rect=rect(0,40,800,600)

        -- postavljanje dimenzija

        channel(30).sprite.play()

      end if

    else if(videoPaused=true) then

      videoPaused=false

      channel(30).sprite.play()

    else if(videoPlaying=true) then

      nothing

    end if

  end if

  sprite(16).color=bojaTamnoCrvena

  sprite(18).color=bojaCrvena

  sprite(17).color=bojaCrvena

  sprite(19).color=bojaCrvena

  sprite(20).color=bojaCrvena

end

Sljedeća funkcija omogućava pojačavanje tona za audio i video fajlove, te DVD-ove pritiskom na dugme “pojačaj” koje je predstavljeno strelicom prema gore, a koje se pojavi ulaskom u jednu od prethodno navedene tri opcije. Funkcija za smanjivanje je potpuno analogna.

on mouseUp me

  if(dvdFlag=true) then

    if(dvdPlaying=true) then

      if(dvdFajl.volume<95) then

        dvdFajl.volume=dvdFajl.volume+5

      end if

    end if

  else if(muzikaFlag=true) then

    if(audioPlaying=true) then

      if(sound(1).volume<250) then

        sound(1).volume=sound(1).volume+5

      end if

    end if

  else if(filmFlag=true) then

    if(videoPlaying=true) then

      if(channel(30).sprite.volume<250) then

        channel(30).sprite.volume=channel(30).sprite.volume+5

      end if

    end if

  end if

end

PROČITAJ / PREUZMI I DRUGE SEMINARSKE RADOVE IZ OBLASTI:
ASTRONOMIJA | BANKARSTVO I MONETARNA EKONOMIJA | BIOLOGIJA | EKONOMIJA | ELEKTRONIKA | ELEKTRONSKO POSLOVANJE | EKOLOGIJA - EKOLOŠKI MENADŽMENT | FILOZOFIJA | FINANSIJE |  FINANSIJSKA TRŽIŠTA I BERZANSKI    MENADŽMENT | FINANSIJSKI MENADŽMENT | FISKALNA EKONOMIJA | FIZIKA | GEOGRAFIJA | INFORMACIONI SISTEMI | INFORMATIKA | INTERNET - WEB | ISTORIJA | JAVNE FINANSIJE | KOMUNIKOLOGIJA - KOMUNIKACIJE | KRIMINOLOGIJA | KNJIŽEVNOST I JEZIK | LOGISTIKA | LOGOPEDIJA | LJUDSKI RESURSI | MAKROEKONOMIJA | MARKETING | MATEMATIKA | MEDICINA | MEDJUNARODNA EKONOMIJA | MENADŽMENT | MIKROEKONOMIJA | MULTIMEDIJA | ODNOSI SA JAVNOŠĆU |  OPERATIVNI I STRATEGIJSKI    MENADŽMENT | OSNOVI MENADŽMENTA | OSNOVI EKONOMIJE | OSIGURANJE | PARAPSIHOLOGIJA | PEDAGOGIJA | POLITIČKE NAUKE | POLJOPRIVREDA | POSLOVNA EKONOMIJA | POSLOVNA ETIKA | PRAVO | PRAVO EVROPSKE UNIJE | PREDUZETNIŠTVO | PRIVREDNI SISTEMI | PROIZVODNI I USLUŽNI MENADŽMENT | PROGRAMIRANJE | PSIHOLOGIJA | PSIHIJATRIJA / PSIHOPATOLOGIJA | RAČUNOVODSTVO | RELIGIJA | SOCIOLOGIJA |  SPOLJNOTRGOVINSKO I DEVIZNO POSLOVANJE | SPORT - MENADŽMENT U SPORTU | STATISTIKA | TEHNOLOŠKI SISTEMI | TURIZMOLOGIJA | UPRAVLJANJE KVALITETOM | UPRAVLJANJE PROMENAMA | VETERINA | ŽURNALISTIKA - NOVINARSTVO