Ogg Media | |
---|---|
Extensie | .ogm |
Tip de format | format de descriere a containerului [d] |
Extins din | Ogg |
Ogg Media (OGM) este un format, un container pentru stocarea fluxurilor de date, cum ar fi video, audio și subtitrări. Oferă mijloacele necesare pentru transportul fiabil al fișierelor, controlul integrității fișierelor, minimizarea numărului de mișcări ale fișierelor în timpul redării mai multor fluxuri (intercalare).
Containerul Ogg Media este o modificare terță parte a containerului Ogg , care vizează codecuri gratuite acceptate de Xiph.Org , pentru a suporta codecuri non-free utilizate în mod obișnuit cu un container AVI folosind DirectShow . Ogg Media a fost înființată în 2002 independent de Xiph.Org , care a emis o solicitare în 2004 pentru a elimina „Ogg” înșelător din numele containerului. [unu]
Fiecare flux de date în termeni de ogg este numit flux logic ( de exemplu, flux de biți logic ), mai multe fluxuri logice sunt combinate într-un flux fizic ( de exemplu, flux de biți fizic ) .
Există următoarele metode pentru combinarea fluxurilor logice într-unul fizic:
Fiecare flux logic este împărțit în pachete ( pachete în limba engleză ). Formatul pachetului este determinat de codecul utilizat . Pachetele sunt împărțite în segmente , dimensiunea fiecărui segment nu depășește 255 de octeți . Segmentele sunt combinate în pagini ( pagini în limba engleză ), fiecare pagină nu conține mai mult de 255 de segmente (dimensiunea totală a datelor dintr-o pagină nu depășește niciodată 64 Kb). Un pachet poate fi conținut în mai mult de o pagină (adică să fie mai mare de 64 KB), caz în care este setat un steag special „continuare a pachetului” ( în engleză continued_packet_flag ) pentru pagina care conține continuarea pachetului.
offset ( hex ) | marimea | tip de | titlu | Descriere |
0x0 | patru | FOURCC | model_captură | întotdeauna egal cu „OggS”, 0x4f 0x67 0x67 0x53 |
0x4 | unu | BYTE | stream_structure_version | versiunea struct, ar trebui să fie 0 |
0x5 | unu | câmp de biți | header_type_flag | 0x1 continued_packet_flag pagina conține continuarea pachetului |
Pagina 0x2 begin_of_stream este prima pagină a fluxului | ||||
Pagina 0x4 end_of_stream este ultima pagină a fluxului | ||||
0x6 | opt | INT64 | poziție_absolută_granule | numărul ultimului cadru sau eșantion (eșantion) codificat în întregime în acest pachet. Cadrele care nu se încadrează în pachetul în ansamblu nu sunt luate în considerare, dacă nu există cadre care se încadrează în pachetul ca întreg, se indică valoarea -1 |
0xE | patru | INT32 | pagina_număr_serial | numărul fluxului logic (în cadrul fluxului fizic dat) căruia îi aparține conținutul paginii. Trebuie să fie unic într-un singur flux fizic. |
0x12 | patru | INT32 | page_sequence_nr | numărul paginii în firul logic |
0x16 | patru | UINT32 | page_checksum | CRC32 - codul paginii |
0x1A | unu | BYTE | page_segments | numărul de segmente pe pagină. Numărul [0-255], numerele 0 și 255 sunt valide (cu numărul 0, pagina nu conține segmente (și informații) și ar trebui pur și simplu sărit). |
0x1B | page_segments | BYTE [] | tabel_segmente | tabelul cu dimensiunile segmentului de pagină. Numărul de intrări din tabel este determinat de page_segment, în caz de null, nu există segment_table |
O caracteristică esențială a formatului este absența unui antet comun pentru fluxul fizic. De exemplu, concatenarea binară a două fișiere va da un fișier de lucru. În fișierele OGM, nu există un index pentru fluxul video (ceea ce crește stabilitatea formatului în timpul transferului de date, dar face redarea mai dificilă).
Fiecare pagină conține un cod CRC pentru a verifica corectitudinea datelor în timpul transmisiei și redării.
containere media | |
---|---|
Video/Audio | |
Audio | |
Muzică | |
Raster | |
Vector | |
Complex |