MPEG-TS

Փոխադրական հոսքը (TS, TP, MPEG-TS, կամ M2TS) ձայնա և տեսատվյալների հաղորդման արձանագրություն է։ Այս ստանդարտի մշակման նպատակը ձայնա և տեսատվյալների մուլտիփլեքսացումն է (անգլ.՝ multiplexing, տվյալների մի քանի հոսքի նույն խողովակով փոխանցում) և նրանց ելքի սինխրոնիզացում։ Փոխադրական հոսքը բացում է փոխադրական միջոցների սխալների ուղղման հնարավորություն, ինչպիսին են DVB և ATSC-ը։
TS-ն մեդիակոնտեյների ֆորմատ է, որը բացում է տարրական հոսքերի և այլ տվյալների փաթեթները։


== Հոսքի կառուցվածքը ==
Փոխադրական հոսքում կարելի է առանձնացնել աբստրակցիայի մի քանի մակարդակներ, որոնք աստիճանակարգային կառուցվածքը հիշեցնում է OSI մոդելին։ Օրինակ տեսանյութ պարունակող հոսքը կարելի է ներկայացնել հետևյալ կերպ.

Տարբեր ծրագրերի խառնուրդ
Փաթեթավորված տարրական հոսք (անգլ.՝ Packetized elementary stream, PES)
Տարրական հոսք (Elementary stream, ES)
Պատկերների խումբ (Group of pictures, GOP), ներկայացնում է պատահական մուտք դեպի նկարը
Առանձին պատկեր (կադր)
Հատում (անգլ.՝ Slice), սխալների տարածման կանխման համար կադրի նշված մաս
Մակրոբլոկ` կազմված 6 -ից 12 DCT բլոկներից
Կոդավորման տարրական բլոկ (DCT բլոկ), 8x8 կետ չափերով


== Փոխադրական հոսքի կարևոր տարրերը ==


=== Փաթեթ ===
Փաթեթը փոխադրական հոսքի հիմնային միավորն է։

Վերնագիրն սկսվում է հայտնի Սինխրոնիզացիոն բայթից (8 բիթ) 0x47 (0100 0111)։
Հաջորդ երեք բիթային դրոշներն օգտագործվում են օգտակար բեռնվածության մշակումը ցույց տալու համար։
1. Առաջին դրոշակը նշում է փոխադրական սխալը։
2. Երկրորդ դրոշակը նշում է օգտակար բեռնվածության սկիզբը (անգլ.՝ payload_unit_start_indicator)։ Երբ Transport Stream փաթեթի օգտակար բեռնվածությունը պարունակում է PSI տվյալներ, «payload_unit_start_indicator»-ն ունենում է «1» արժեքը։ Եթե Transport Stream փաթեթը չի պարունակում PSI տվյալներ, ապա «payload_unit_start_indicator»-ը կլինի «0»: Տես` 2.4.4.1 և 2.4.4.2 կետերը։ սա նույնպես կիրառվում է stream_type 5 մասնավոր հոսքերի դեպքում։
3. Երրորդ դրոշակը նշում է առաջնային փոխադրական բիթը։
Դրոշակներն ուղեկցվում են Փաթեթի իդենտիֆիկատորով (13 բիթ) PID: Օգտագործվում, որպեսզի միանշանակ որոշվի հոսքը, որին պատկանում է մուլտիփլեքսորի արտադրած փաթեթը (օրինակ` ES-ին համապատասխանող PES փաթեթը)։ PID-ի որոշ արժեքներ կանխորոշված են և օգտագործվում են ղեկավարման տեղեկության տարբեր հոսքերը նշելու համար։ Ստացողին չպահանջվող անհայտ PID-ով փաթեթից պարզապես հրաժարվում են։ PID 0x1FFF յուրահատուկ արժեքը գրանցված է փաթեթ-զրոյական փաթեթը նշելու համար (և պետք է անտեսվի ստացողի կողմից)։
Հաջորդ երկու ծառայողական բիթերն օգտագործվում են որոշ TS փաթեթների օգտակար բեռնվածության ծածկագրերի պայմանական մուտքի պրոցեդուրաների կողմից։
1. 00 — չծածկագրված փաթեթ
2. 01 — հետագա օգտագործման համար ԳՐԱՆՑՎԱԾ
3. 10 — զույգ բանալիով ծածկագրված փաթեթ
4. 11 — կենտ բանալիով ծածկագրված փաթեթ։
Ադապտացիայի դաշտի ծառայողական երկու բիթ, որոնք կարող են ունենալ չորս արժեք.
1. 01 — առանց ադապտացիայի դաշտի (adaptation_field), միայն օգտակար բեռնվածություն (payload_data)
2. 10 — միայն ադապտացիայի դաշտեր (adaptation_field), առանց օգտակար բեռնվածության (payload_data)
3. 11 — ադապտացիայի դաշտեր (adaptation_field), այնուհետև հաջորդում է օգտակար բեռնվածությունը (payload_data)
4. 00 — ԳՐԱՆՑՎԱԾ ISO/IEC` հետագա օգտագործման համար։
Վերջապես կա Անընդհատության հաշվիչ (4 բիթ)։Փաթեթի մնացած մասը կազմված է օգտակար տեղեկությունից։ փաթեթները կազմվում են 188 բայթ երկարությամբ, բայց հանգուցային միջավայրը փաթեթի սխալների վերացման համար կարող է ավելացնել մի քանի բայթ։ Որպես փոխադրական փաթեթ DVB-ASI-ն օգտագործում է 204 բայթ և 208 բայթ` ATSC-ն։ (DVB t=8 և ATSC t=10, այսինքն կան լրացուցիչ բայթեր = 2*t). ATSC հաղորդումն Reed-Solomon սխալների առաջնային վերացմանն ավելացնում է 20 բայթ, 208 բայթ երկարությամբ փաթեթ ստեղծելու համար։ Փաթեթի 188 բայթանոց չափն ի սկզբանե ընտրված էր ATM համակարգերի հետ համատեղելության համար։


=== PID ===
Փոխադրական հոսքում յուրաքանչյուր աղյուսակ կամ տարրական հոսք նույնականացվում է 13 բիթանոց PID-ով։ Դեմուլտիփլեքսորն ընդհանուր փոխադրական հոսքից դուրս է հանում տարրական հոսքերը` միացնելով դրանք նման PID ունեցող հոսքերով։ Շատ ներդիրներում նախատեսվում է կիրառել ժամանակավոր մուլտիփլեքացում, որպեսզի որոշվի, թե կոնկրետ PID-ը որքան հաճախ կհայտնվի փոխադրակկան հոսքում։


=== Programs ===
Փոխարդական հոսքն ունի ծրագրի կոնցեպցիա (ըմբռնում)։ Program Map Table (PMT) միակ ծրագիրն է, որն ունի եզակի PID և այդ ծրագրի հետ կապված, իրենց PID-երն ունեցող տարրական հոսքեր, որոնք թվարկված են PMT-ում։ Օրինակ` թվային հեռուստատեսությունում կիրառվող փոխադրական հոսքը կարող է կազմվել երեք ծրագրերից և իր մեջ կրել երեք հեռուստատեսային ալիք։ Ենթադրենք, յուրաքանչյուր ալիք կազմված է մեկ տեսահոսքից և մեկ կամ երկու ձայնային հոսքից և ցանկացած անհրաժեշտ
մետատվյալից։ Ալիքները դեկոդավորել ցանկացող ընդունիչը դեկոդավորման համար կիրառում է միայն տվյալ ալիքի համար անհրաժեշտ PID-երը, որոնք կապված են իր ծրագրի հետ։ Այն կարող է հրաժարվել նրանում պարունակվող մնացած բոլոր PID-երից։


=== Program Specific Information (PSI) ===
Հատուկ տեղեկություն ծրագրերի մասին.

Program Association Table (PAT),
Program Map Table (PMT),
Conditional Access Table (CAT),
Network Information Table (NIT)։MPEG-2 ֆորմատի դասակարգման մեջ CAT-ը և NIT-ը կանոնակարգված չեն։


==== PAT ====
(Program Association Table, PAT) ծրագրերի աղյուսակը պարունակում է բոլոր PMT-ի PID-եր։ Իր սեփական PID-ը միշտ 0x0:


==== PMT ====
(Program Map Table, PMT) ծրագրի կառուցվածքի աղյուսակը պարունակում է PID-եր և կոնկրետ ծրագրի տարրական հոսքերի հիմնական բնութագրիչներ` տեսանյութ, ձայն, լրացուցիչ տվյալներ։ Յուրաքանչյուր ծրագրի համար կա իր սեփական PID-ով PMT-ն։ Բացի այդ, եթե ծրագրում առկա են ծածկագրված տարրական հոսքեր, PMT-ն պարունակում է պայմանական մուտքի ECM համակարգի հաղորդագրություն։


=== PCR ===
Որպեսզի դեկոդերը կարողանա վերարտադրել ծրագրերը ճիշտ ժամանակին, ճիշտ արագությամբ և սինխրոնիզացիայով, ծրագրերը սովորաբար պարբերական հաղորդում են Program Clock Reference, կամ PCR` ծրագրի հոսքերից մեկում։ Դա այդպես էլ կոչվում է` հենակետային հաճախության (Master Clock) հիմնական աղբյուր։ MPEG2-ում ժամանակային միջակայքերը հաշվվում են այդ հաճախությամբ։ Օրինակ` ներկայացման ժամանակային նշումը (PTS) համապատասխանում է PCR-ին։ Առաջին 33 բիթը համապատասխանում են 90 կՀց հենակետային հաճախությանը։ Ներկայացման ընդլայնումը մինչև 9 բիթ, համապատասխանում է 27 մՀց հաճախությանը։


=== Null packets ===
Հաղորդման որոշ արձանագրություններ, ինչպիսիք են ATSC և DVB ստանդարտները, խիստ սահմանափակ են փոխադրական հոսքի բիթ-րեյթի պահանջների հանդեպ։ Այսպիսով, որպեսզի տվյալների հոսքն ընդունի հաղորդման խիստ տրված արագությունը, Multiplexer-ը պետք է ունենա հոսքում լրացուցիչ փաթեթներ ավելացնելու հնարավորություն։ PID 0x1FFF փաթեթները ծառայում են հենց այդ նպատակին։ Այդ փաթեթների օգտակար բեռնվածությունը չի պպարունակում որևէ օգտակար տեղեկություն, այդ կերպ, ռեսիվերն ստանալով այդպիսի փաթեթ անտեսում է նրա պարունակությունը։


== M2TS նիշքեր ընդունող ծրագրեր ==


=== Բազմահարթակային ===
FFmpeg
MPlayer
VideoLAN
մերդիանվագարկիչ VLC
ProjectX
PS3Muxer


=== Linux ===
Մերդիանվագարկիչ VLC
xine
MythTV
SMPlayer


=== Windows ===
Combined Community Codec Pack
K-Lite Codec Pack
GOM Player
Haenlein-Software DVR Studio
The KMPlayer
Squared 5 MPEG Streamclip
VideoReDo
VobEdit
BSPlayer
jetAudio
Մերդիանվագարկիչ VLC
Light alloy


=== Mac OS X ===
Squared 5 MPEG Streamclip
Movist
Մերդիանվագարկիչ VLC


== Ծանոթագրություններ ==


== Արտաքին հղումներ ==
MPEG-2 Systems FAQ Archived 2008-07-26 at the Wayback Machine.
MPEG-4 Systems FAQ Archived 2008-06-20 at the Wayback Machine.
MPEG-1 description Archived 2005-03-24 at the Wayback Machine.
Powerpoint MPEG-2 Transport Stream introduction Archived 2010-03-31 at the Wayback Machine.
[1]
Splicing FAQ Archived 2016-07-26 at the Wayback Machine.
Freeware TS-Muxer
MPEG-2 Transport Stream
MPEG-2 Transmission Archived 2020-08-13 at the Wayback Machine.