Elikkäs minua yritetään kovasti nakittaa mukaan multimediaprojektiin.
Projektin tavoitteena on kerätä erilaista multimediamateriaalia eli kuvia, ääniä, musiikkia, videota ja esittää tätä videotykillä.
Oma osani tässä hommassa olisi jonkinlaisen käyttöliittymän teko ja tiedon tallentamisen organisoiminen. Tietoon tulisi vielä saada lisättyä jotain metatietoa.
Ensimmäisenä ongelmana on tuon metatiedon lisääminen. Eli kun koneella on paljon tuota materiaalia niin tulisi pystyä valitsemaan sieltä vain ne jotka edustavat esim. 80-luvun intiasta olevan materiaalin.
Tietojen formaatista ei ole vielä ollut mitään muuta selvää kuin että ne tulevat monesta eri lähtestä monissa eri muodoissa. Ajattelin että olisi varmaan helpointa tallettaa kaikki media jossain tietyssä formaatissa jotta sen jatkokäsittely helpottuisi. Ogg kaiketi olisi hyvä valinta.
Homma tarvitsee helpon käyttöliittymän, jota peruspulliainen osaa sitä jouhevasti käyttää. Tätä voi hioa kuntoon, jos nyt saan nuo muut seikat jollekkin mallille ensin.
Kuinka hankalaa olisi toteuttaa seuraavaa:
Käyttäjä valitsee halutun kulttuurin, ajanjakson ja avainsanojen perusteella materiaalin mitä haluaa toistaa. Hän klikkailee listasta videon mutta mykistää sen valikosta, toisesta valikosta hän valitsee musiikkipätkän joka soi videon kanssa samaan aikaan. Tämän jälkeen hän painaa 'soita' nappulaa käyttöliittymästä ja materiaali alkaa pyörimään tykin kautta, kunnes se sammutetaan käyttöliittymäohjelmasta.
Itse käyttelen lähinnä Linuxia, joten itselle tulisi vaan mieleen asennella audioasetukset että eri äänilähteet voivat soida samaan aikaan. GUI olisi vain joku skripti joka kutsuisi mplayeriä ja muita soittimia tarpeen mukaan taustalla. Tietoja tallentaessa se konvertoitaisiin ogg formaattiin jollain työkalulla. Mutta miten tämä kaikki kannattaisi hoitaa Windowsin puolella. Windows näyttäisi olevan nyt tämän hetkinen käyttöliittymäohjelman alusta mutta jos mahdollista niin yrittäisin tehdä mahdollisimman helposti portattavan tuossa jos alustaan tuleekin muutoksia vielä.
Kielenä käyttäisin mitä todennäköisimmin Javaa, sillä siitä minulla on eniten kokemusta. Python ei ole myöskään poissuljettu.
Jotain vinkkejä ja suosituksia ottaisin vastaan miten tuota kannattaisi lähteä kasaamaan. Projekti on vielä alkutekijöissään, joten tuollainen ohjelma ei varmaan kokonaisuudessaan luonnistu aikataulussa. Tuo tiedon organisointi olisi nyt se ensimmäinen homma, mikä tulisi saada aikaan.
Yksi vaihtoehto tiedon organisointiin on jokin tietokanta. Yhdessä taulussa on itse tieto (id 1, media "video.ogg"), toisessa ovat luokitusten tyypit (id 1, tyyppi "aikakausi"), kolmannessa luokitukset (id 1, ryhma_id 1, luokka "1930-luku"). Neljäs taulu liittää luokitukset medioihin (media_id = 1, luokka_id = 1).
Itse mediatoteutuksesta en osaa sanoa sen kummempaa. Linuxissa ajatuksesi toimii todella helposti (mplayer -ao null
), mutta Windowsissa asia ei taida olla niin yksinkertainen (ellei hanki sinnekin samoja soittimia). Jos haluat yrittää tuota, niin järkevintä on varmaan listata ajokomennot (ääni, video, mykistetty video) asetustiedostoon, jotta niitä on helppo käsin muokata.
Jos formaatit lyö lukkoon, ei ole mahdoton ajatus tehdä koko soitinta Javalla, vaikka onhan se turhaa työtä. :)
Yksi ehdokas on JavaScript (ja HTML). Tällöin voisi helposti hyödyntää selaimen mediasoitinta, ja käyttöliittymänkin teko olisi helppoa. JavaScriptista voi kutsua myös Java-appletin funktioita, joten esimerkiksi mediakirjaston hallinnan (tietokannan) voisi edelleen hoitaa Javalla.
Jos selainpuolelle lähdetään niin parempi vaihtoehto voisi olla vaikkapa Silverlight. Etuina mahdollisuudet helppoon, näyttävään ja monipuoliseen käyttöliittymään sekä toimiminen kaikkialla, missä on pääsy Internetiin sekä selain, johon on asennettu Silverlight-tuki. Esteenä tuen puute oletusarvoisesti, mutta toivottavasti tekniikka yleistyy, ja jos ohjelmasta tehdään stand-alone, käyttäjä joutuu silti asentamaan jotain.
<sarkasmi> Silverlight toimii Linuxillakin niin hyvin... </sarkasmi>
Itselläni useimmat testisivustot eivät edes tunnistaneet Moonlightin läsnäoloa. Pari aivan yksinkertaista näytti kuitenkin toimivan, eli vika ei voi olla asetuksissa. Ehkä Moonlight 2.0 tuo tähän parannusta.
Jos ajattelit käyttää apuna valmiita mediasoittimia, niin miten olisi REBOL -toteutus?
Näyttävän käyttöliittymän saa aikaan todella nopeasti ja helposti.
Tuosta voisi olla apua: http://www.rebol.com/docs/quick-start5.html
Ja tuosta: http://www.rebol.net/cookbook/recipes/0012.html
Juu, melko turhaan tuota soitinpuolta Javalla kirjoittaa kun erilliset soittimet hoitaa asian monta kertaa paremmin.
Mietin tuota tietokanta toteutustakin. Tietokantaan itse tiedon tallentaminen ei itsestäni ole oikein hyvältä kuulostava ratkaisu. Jos siis joutuu aina paikalliselle koneelle asentamaan tietokanta-palvelimen yms. Materiaaliin olisi päästävä käsiksi ilman verkkoakin.
Ja pelkkien metadata tietojen tallentaminen tietokantaan ja sieltä itse tiedostoon viittaaminen tarvitsisi tietokannan ja tiedostojärjestelmän tietojen pitämistä ajantasalla.
Linuxissa tuo olisi just mukava tehdä mutta veikkaan että tuolle työryhmälle asia ei tuntuisi hyvältä. Päivän demosessiossa eivät saaneet edes läppäriltä kuvaa tykille saatikka langatonta verkkoa toimintaan joten 'helppokäyttöisen' käyttöliittymän tarvetta on :)
Uskoisin että tuo MPlayerin asennus ei ole liiallinen vaatimus joten se voisi olla tuohon toistoon ihan hyvä. Saa ainakin tarpeeksi säädettyä suoraan komentoriviltä sitä.
En tullut tuota Javascript / HTML -komboa miettineeksi ollenkaan. Voisi sitäkin harkita. Tosin Javascriptiä en ole muutamaa hassua copy-paste riviä enempää käpistellyt että sinällään Java voisi siltä olla parempi.
REBOL:sta en ole koskaan kuullut mutta pitää silmäillä sitä jos siitä jotain saa nopeasti irti.
Itsellä ei ole kovin paljon aikaa projektille ja deadline on melko lyhyt niin kovin monimutkaista ratkaisua tuohon ei kerkeä toteuttamaan.
Katselin että Ogg formaattiin saisi jotain kommentteja lisättyä avain=arvo pareina mikä voisi täyttää tuon metadata vaatimuksen. Pitää tutustua siihen vielä miten se käytännössä toimii.
Joka tiedostoon erikseen upotettujen metatietojen ongelmana on, että haut kestävät selvästi pidempään kuin yhtenäisestä tietokannasta, kun joudutaan lukemaan pätkä jokaisesta tiedostosta. Tietokanta ei välttämättä tarkoita MySQL:ää tai Oraclea, vaan jos dataa on siedettävä määrä, tavallinen tekstitiedosto (vaikka oma tiedosto kullekin "taululle") riittää aivan hyvin.
Voitko hieman laajemmin selittää mitä tuolla tietokanta ratkaisulla meinaat?
Kyllä esimerkiksi SQLite voisi mennä ihan hyvin. Hakujen suorittaminen SQL:llä voisi olla ihan hyvä ratkaisu.
Aihe on jo aika vanha, joten et voi enää vastata siihen.