MJPEG

**MJPEG** (ka **M-JPEG**, **Motion JPEG** – 'liikuv JPEG') on multimeedia vormingute alamhulk, mille puhul iga videokaader on pakitud eraldi JPEG-pildina (mitte aga eraldi failina). Seetõttu on neil kõigil garanteeritud sama kvaliteet, mis omakorda sõltub tihenduse tasemest. Neid vorminguid kasutatakse sageli mobiilsetes seadmetes, näiteks digitaalfotoaparaatides. Võrgukaamera suudab jäädvustada ja tihendada näiteks 30 sellist pilti sekundis ja teha neist katkematu piltide jada. Kui kaadrid vahetuvad kiirusel 16 kaadrit sekundis (fps – *frames per second*) või rohkem, siis näeb vaatleja digitaalvideot.

## Kodeerimine

MJPEG kasutab kadudega kaadrisisest tihendust (*intra-frame compression*), mis põhineb diskreetsel koosinusteisendusel (*discrete cosine transform*). See matemaatiline operatsioon muudab iga videoallika kaadri/välja ruumivallast (*spatial domain*) sagedusvalda (*frequency domain* ehk *transform domain*). See on pidev mudel, mis põhineb psühhovisuaalsel süsteemil ja jätab välja kõrgsagedusliku informatsiooni ehk teravad üleminekud erksuses ning värvitoonis. Sagedusvallas informatsiooni vähendamise protsessi nimetatakse kvantimiseks. Kvantimine on meetod, mis optimaalselt vähendab suure ulatusega arvude skaalat (kus iga arv esineb vaid ühe korra). Sagedusvalda kasutatakse, sest see sisaldab kõrgsageduslikke koefitsiente, mis panustavad vähem pildile üldiselt kui muud koefitsiendid, kuid sellised väiksed väärtused on hea pakkimisvõimalusega. Kvanditud koefitsiendid on järjestatud ja kadudeta pakitud väljundi bitivoogu. Peaaegu kõik MJPEG realisatsioonid lubavad kasutaja kontrolli kompressiooni suhte üle (samuti ka muud valitavad parameetrid), lubades kasutajal vahetada pildi kvaliteet väiksema failimahu vastu. Manusrakendustes (nagu näiteks MiniDV, mis kasutab sarnast DCT kompressiooni skeemi) on parameetrid eelnevalt valitud ja kinnistatud.

MJPEG on vaid kaadrisisese tihendusega skeem (võrreldes arvutuslikult intensiivsema kaadritevahelise prognoosi tehnikaga). Tänapäevased kaadritevahelised videovormingud, näiteks MPEG-1, MPEG-2 ja H.264/MPEG-4 AVC, saavutavad tihendusteguri 1:50 (faili mahtu vähendatakse 50 korda) või rohkem. M-JPEG-s videokaadrid ei mõjuta üksteist; see piirab selle efektiivsust ja tekkinud failid on mahukamad. Kuna kaadrid on pakitud üksteisest eraldi, nõuab pakkimine ja lahtipakkimine vähem protsessori tööaega.

Kaadreid, mis on suurte sujuvate üleminekutega või monotoonse pinnaga, on lihtne tihendada ning on suurem tõenäosus, et nende algsed detailid jäävad väiksemate nähtavate pakkimisjälgedega. Kaadrites, millel on kujutatud keerulisi struktuure, peeneid kurve ja jooni (näiteks kiri ajalehel) kipuvad tekkima makroplokid ja ähmastumised. Samuti ei riku M-JPEG pakitud video kvaliteeti erinevad liikumiskeerukused ehk muutused, mis toimuvad aja jooksul. Pilti ei tee halvemaks kiired liikumised (näiteks suure kose pindmise vee tormilisus) ning teda ei paranda ka muutuste puudumine (muutumatu maastik, mida on pildistatud statiivilt).

QuickTime'i vormingutele on Apple defineerinud kahte tüüpi kodeeringud: MJPEG-A ja MJPEG-B. MJPEG-B ei sisalda enam kehtivaid JPEG-vahetusfaile (*interchange files*) ja seega ei ole võimalik panna kaadrit JPEG-failivormingut muutmata päist (*header*) ehk täiendavat infot iga andmeploki alguses.

## Rakendused

Tarkvara ja seadmed, mis kasutavad MJPEG-standardit:
*veebibrauserid
*meediapleierid
*mängukonsoolid
*digikaamerad
*IP-kaamerad
*veebikaamerad
*voogedastuse serverid (*streaming server*)
*videokaamerad
*mittelineaarne monteerimine (*non-linear video editor*)

#### Videohõive ja töötlus
MJPEG-d kasutatakse tihti mittelineaarses montaažis. Tänapäeva arvutid suudavad töödelda kõrglahutusega (*High Definition*) videoid ja arvutid ei vaja selle vormingu jaoks eraldi riistvara. See vorming lubab ka suvapöördust ükskõik millisele kaadrile. MJPEG-d toetatakse väga laialdaselt videohõive ja -töötluse seadmetes.

### Digitaalsed kaamerad
Enne MPEG-4 kodeeringu esiletõusu tarbekaupade seas leidis MJPEG laialdast kasutust digitaalsete kaamerate "video" režiimis. See võimaldas pärast muudatuse tegemist tarkvaras videoid kodeerida ja taasesitada. Tulemusena saadud kvaliteet on sarnase suurusega MPEG-ga võrreldes madalam, eriti kuna heliks (kui lisada) oli tihti tihendamata, madala diskreetimissagedusega impulss-koodmodulatsioon (*pulse code modulation*) või madala tihenduse ja protsessori kasutusega adaptiiv-diferentsiaalne impulss-koodmodulatsioon (*adaptive differential pulse code modulation*).

Failimahu ja edastuskiiruse kontrollimiseks hoiti kaadrite suurused ja sagedused koos heli diskreetimissagedustega küllalt väiksed ja iga kaadrit tihendati võimalikult palju. Resolutsioonid 160×120 või 320×240 on levinud suurused – tüüpiliselt 10, 12, või 15 kaadrit sekundis, kus pildikvaliteet on võrdväärne JPEG omaga, mille seadistus "50" ja mono adaptiiv-diferentsiaalne impulss-koodmodulatsiooniga heli diskreeditud ~8&nbsp;kHz juures.

Selle tulemuseks on väga elementaarne, kuid siiski kasutamiskõlblik videoväljund, mille salvestushind on lähedane MPEG omale (video ~120&nbsp;kB/s , audio ~8&nbsp;kB/s – või ~1&nbsp;Mbit/s 320×240 resolutsiooniga), kuid üldkulud (operatsioonisüsteemi ja rakendusprogramme toetavate utiliitide tööks kuluv aeg) minimaalsed. Seda videot hoitakse tüüpiliselt populaarsetes Windows AVI või Apple QuickTime MOV konteinerfailides, mida saab kohe (või pärast kodekite allalaadimist) vaadata enamikus operatsioonisüsteemide versioonides.

AMV (Anime Music Video) videovorming, mis on levinud odavates MP4-pleierites, on kohandatud MJPEG versioon.

Paljud video salvestamise võimalusega kaamerad kasutavad MJPEG-vormingut. 2008. aasta augustis avalikustas Nikon mudeli D90. See oli esimene digipeegelkaamera (DSLR – Digital Single Lense Reflex), mis salvestas videot. D90 kasutab kolme MJPEG-vormingut: 320×216, 640×424 ja 1280×720 pikslit. 2009. aasta juunis teatas Pentax, et varsti ilmuv K7-kaamera kasutab MJPEG-d resolutsioonidega 640×416, 1280×720, ja 1536×1024. Tekkinud MJPEG-failide andmeedastuskiirus võib olla kuni 74&nbsp;Mbit/s.

### HDTV meediapleierid
Apple teatas 1. septembril 2010, et nende kõige uuem Apple TV versioon toetab MJPEG-d kuni 35&nbsp;Mbit/s, 1280×720 pikslit, 30 fps, audio on salvestatud ulav-laiendiga ja PMC stereo audio avi-failivormingus.

Teatud meediapleierid, näiteks Netgear NeroTV 550, ei toeta MJPEG taasesitust.

### IP-kaamerad
Paljud võrguvõimelised kaamerad võimaldavad MJPEG-voogusid, millega võrgu kliendid saavad ühenduse luua. Mozillal ja Webkitil põhinevad veebibrauserid toetavad nende MJPEG-voogude vaatamist.

Mõned kaamerad on varustatud oma MJPEG liidestega. Kui aga see puudub, saab kasutada serverit, mis koodimuunduriga teeb kaamera pildid MJPEG-vooks ja saadab seda edasi teistele võrgu klientidele.

### Digitaalne video
Kuna digitaalne video (Digital Video) on uuem standard, siis kasutab see MJPEG-st erinevat lähenemist diskreetsele koosinusteisenduse algoritmile. Seetõttu on ka kvaliteet märgatavalt parem. Sarnaselt MJPEG-ga kasutab ka DV kaadritevahelist tihendust.

### Tarkvara
MJPEG-d toetavad veebibrauserid on Safari, Google Chrome ja Firefox. Teised brauserid, näiteks Internet Explorer, saavad MJPEG-vooge edastada väliste pluginate abil. Cambozola on aplett, mis suudab näidata MJPEG striime Java-põhistes veebibrauserites. MJPEG-d kasutavad ka Sony PlayStation ja QuickTime.

## Eelised

*Lihtne teostada, sest kasutab pakkimiseks JPG-d, millel on hästi arendatud teegid; meetodina kasutab kaadrisisest tihendust.
*MJPEG talub kiiret liikumist videovoogudes, kuid skeemidel, mis kasutavad kaadritevahelist tihendust, võib tihti kvaliteet halveneda, kui kaadrite sisu palju muutub.
*MJPEG vajab lihtsamat riistvara ja andmete töötlemisskeeme ja seetõttu on ka kulud väiksemad.
*Juurdepääsu võimalus igale kaadrile tagab video kõrge kvaliteediga ja erinevate kiirustega taasesituse. Samuti tähendab see, et graafika töötlemine on lihtsustatud.

## Puudused

*MJPEG ei ole suuteline tootma kõrge kvaliteediga pilti.
*Ei ole ühte kindlat vormingut. Näiteks Microsoft salvestab MJPEG-d AVI failides ja Apple kasutab selleks QuickTime'i. 
*Vajab suuremat ribalaiust kui uuemad versioonid, kuna voogedastus toimub interneti teel konstantse kaadrisagedusega.
*MJPEG ei tihenda hästi animatsiooni. See tuleneb asjaolust, et ta ei talu järske värvi- ja heledusmuutusi.

## Viited