د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

لومړۍ برخه: د ویډیو او عکسونو سره د کار کولو اساسات

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

څه؟ د ویډیو کوډیک د سافټویر / هارډویر یوه برخه ده چې ډیجیټل ویډیو کمپریس او / یا ډیکمپریس کوي.

د څه د پاره؟ د ځینې محدودیتونو سره سره دواړه د بینڈویت شرایطو کې او
او د ډیټا ذخیره کولو ځای په شرایطو کې ، بازار په زیاتیدونکي توګه د لوړ کیفیت ویډیو غوښتنه کوي. ایا تاسو په یاد لرئ چې څنګه په وروستي پوسټ کې موږ د 30x24 ریزولوشن سره په هر ثانیه کې د 480 فریمونو لپاره اړین لږترلږه ، 240 بټونه په هر پکسل حساب کړ؟ موږ له کمپریشن پرته 82,944 Mbit/s ترلاسه کړل. کمپریشن اوس مهال په عمومي ډول د تلویزیون سکرینونو او انټرنیټ ته HD/FullHD/4K لیږدولو یوازینۍ لار ده. دا څنګه ترلاسه کیږي؟ اوس راځئ چې په لنډه توګه اصلي میتودونه وګورو.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

ژباړه د EDISON سافټویر په ملاتړ جوړه شوې وه.

موږ بوخت یو د ویډیو څارنې سیسټمونو ادغاماو همدارنګه موږ مایکروټوموګراف جوړوو.

کوډیک بمقابله کانټینر

یوه عامه تېروتنه چې نويان یې کوي د ډیجیټل ویډیو کوډیک او ډیجیټل ویډیو کانټینر ګډوډ کول دي. یو کانټینر یو ځانګړی شکل دی. یو ریپر چې ویډیو (او احتمالا آډیو) میټاډاټا لري. کمپریس شوی ویډیو د کانټینر تادیې په توګه فکر کیدی شي.

عموما، د ویډیو فایل توسیع د دې کانټینر ډول په ګوته کوي. د مثال په توګه، فایل video.mp4 شاید یو کانټینر وي MPEG-4 برخه 14، او د video.mkv په نوم فایل ډیر احتمال لري ماټرېشکا. د کوډیک او کانټینر ب formatه په بشپړ ډول ډاډ ترلاسه کولو لپاره ، تاسو کارولی شئ FFmpeg او یا رسنۍ.

یو څه تاریخ

مخکې له دې چې موږ ته ورسیږو څنګه؟، راځئ چې تاریخ ته یو څه ډوب کړو ترڅو ځینې زاړه کوډیکونه لږ ښه پوه شي.

د ویډیو کوډیک H.261 په 1990 کې راڅرګند شو (تخنیکي پلوه - په 1988 کې) او د 64 Kbps د ډیټا لیږد نرخ سره کار کولو لپاره رامینځته شوی. دا دمخه نظرونه کارولي لکه د رنګ فرعي نمونې کول ، میکرو بلاکس ، او داسې نور. د ویډیو کوډیک معیار په 1995 کې خپور شو H.263، کوم چې تر 2001 پورې وده کړې.

لومړۍ نسخه په 2003 کې بشپړه شوه H.264 / AVC. په همدغه کال، TrueMotion خپل وړیا زیان لرونکی ویډیو کوډیک خپور کړ VP3. ګوګل دا شرکت په 2008 کې اخیستی، خوشې کوي VP8 هماغه کال. د 2012 په دسمبر کې، ګوګل خپور کړ VP9، او دا د براوزر بازار شاوخوا ¾ کې ملاتړ کیږي (د ګرځنده وسیلو په شمول).

AV1 یو نوی وړیا او خلاصې سرچینې ویډیو کوډیک دی چې لخوا رامینځته شوی د پرانستې رسنیو لپاره اتحاد (AOMmedia)، چې خورا مشهور شرکتونه پکې شامل دي، لکه: ګوګل، موزیلا، مایکروسافټ، ایمیزون، Netflix، AMD، ARM، NVidia، Intel او Cisco. د کوډیک لومړۍ نسخه، 0.1.0، د اپریل په 7، 2016 کې خپره شوه.

د AV1 زیږون

د 2015 په پیل کې، ګوګل کار کاوه VP10Xiph (کوم چې د موزیلا ملکیت دی) کار کاوه دالا، او سیسکو خپل وړیا ویډیو کوډیک جوړ کړ چې په نوم یادیږي اوکړو.

نو MPEG لا د لومړي ځل لپاره کلنۍ محدودیتونه اعلان کړل HEVC (H.265) او فیس د H.8 په پرتله 264 ځله لوړ دی، مګر دوی ډیر ژر بیا قواعد بدل کړل:

کلنی حد نشته،
د منځپانګې فیس (د عاید 0,5٪) او
د واحد فیس د H.10 څخه شاوخوا 264 ځله لوړ دی.

د پرانستې رسنیو لپاره اتحاد د بیلابیلو برخو څخه د شرکتونو لخوا رامینځته شوی: د تجهیزاتو جوړونکي (Intel، AMD، ARM، Nvidia، Cisco)، د مینځپانګې چمتو کونکي (ګوګل، Netflix، Amazon)، د براوزر جوړونکي (ګوګل، موزیلا) او نور.

شرکتونو یو ګډ هدف درلود - د امتیاز څخه پاک ویډیو کوډیک. بیا څرګندیږي AV1 د خورا ساده پیټینټ جواز سره. تیموتی بی ټیری بیری یو په زړه پوری پریزنټشن وړاندې کړ چې د اوسني AV1 مفهوم او د دې جواز ورکولو ماډل اصل شو.

تاسو به حیران شئ چې پوه شئ چې تاسو کولی شئ د AV1 کوډیک د براوزر له لارې تحلیل کړئ (هغه څوک چې لیوالتیا لري کولی شي aomanalyzer.org).

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

یونیورسل کوډیک

راځئ چې د نړیوال ویډیو کوډیک لاندې اصلي میکانیزمونو ته وګورو. ډیری دا مفکورې ګټورې دي او په عصري کوډیکونو کې کارول کیږي لکه VP9, AV1 и HEVC. زه تاسو ته خبرداری درکوم چې ډیری شیان تشریح شوي به ساده شي. ځینې ​​​​وختونه د ریښتینې نړۍ مثالونه (لکه څنګه چې د H.264 سره) د ټیکنالوژیو ښودلو لپاره کارول کیږي.

لومړی ګام - د انځور ویش

لومړی ګام دا دی چې چوکاټ په څو برخو، فرعي برخو او هاخوا ویشل شي.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

د څه لپاره؟ ډیری لاملونه شتون لري. کله چې موږ یو انځور ویشو، موږ کولی شو د حرکت ویکتور په سمه توګه د کوچنیو خوځنده برخو لپاره د کوچنیو برخو په کارولو سره وړاندوینه وکړو. پداسې حال کې چې د جامد شالید لپاره تاسو کولی شئ ځان په لویو برخو کې محدود کړئ.

کوډیکونه معمولا دا برخې په برخو (یا ټوټې) ، میکرو بلاکونو (یا د کوډ کولو ونې بلاکونه) ، او ډیری فرعي برخې تنظیموي. د دې برخو اعظمي اندازه توپیر لري، HEVC دا 64x64 ته ټاکي پداسې حال کې چې AVC 16x16 کاروي، او فرعي برخې تر 4x4 اندازې ویشل کیدی شي.

ایا تاسو د تیرې مقالې څخه د چوکاټونو ډولونه په یاد لرئ؟! ورته په بلاکونو کې پلي کیدی شي ، نو موږ کولی شو I-Fragment، B-block، P-macroblock، او داسې نور ولرو.

د هغو کسانو لپاره چې غواړي تمرین وکړي، وګورئ چې انځور څنګه په برخو او فرعي برخو ویشل شوی. د دې کولو لپاره، تاسو کولی شئ هغه وکاروئ چې دمخه یې په تیرو مقالو کې یادونه شوې. د انټیل ویډیو پرو تحلیل کونکی (هغه چې تادیه کیږي ، مګر د وړیا آزموینې نسخې سره چې په لومړي 10 چوکاټونو پورې محدود دی). برخې دلته تحلیل شوي VP9:

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

دوهم ګام - وړاندوینه

یوځل چې موږ برخې ولرو، موږ کولی شو د دوی لپاره ستورولوژیکي وړاندوینې وکړو. لپاره د INTER وړاندوینې باید انتقال شي حرکت ویکتورونه او پاتې، او د INTRA وړاندوینې لپاره دا لیږدول کیږي د وړاندوینې لار او پاتې.

دریم ګام - بدلون

یوځل چې موږ د پاتې کیدو بلاک ( وړاندوینه شوې برخه → ریښتیني برخه) ولرو ، نو دا ممکنه ده چې دا په داسې ډول بدل کړو چې موږ پوهیږو چې کوم پکسلونه د عمومي کیفیت ساتلو پرمهال له مینځه وړل کیدی شي. ځینې ​​بدلونونه شتون لري چې دقیق چلند وړاندې کوي.

که څه هم نورې لارې شتون لري، راځئ چې دوی په ډیر تفصیل سره وګورو. جلا کوزین بدلون (DCT - څخه جلا کوزین بدلون). د DCT اصلي دندې:

  • د پکسل بلاکونه د فریکونسۍ کوفیفینټ مساوي اندازې بلاکونو ته بدلوي.
  • د ځایي بې ځایه کیدو له مینځه وړو کې د مرستې لپاره ځواک کموي.
  • د بیرته راګرځیدو وړتیا ورکوي.

فبروري 2، 2017 Sintra R.J. (Cintra, RJ) او Bayer F.M. (بایر ایف ایم) د عکس کمپریشن لپاره د DCT په څیر بدلون په اړه مقاله خپره کړه چې یوازې 14 اضافې ته اړتیا لري.

اندیښنه مه کوئ که تاسو د هر توکي په ګټو نه پوهیږئ. اوس راځئ چې ځانګړي مثالونه وکاروو ترڅو د دوی اصلي ارزښت وګورو.

راځئ چې دا د پکسل 8x8 بلاک واخلو:

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

دا بلاک په لاندې 8 x 8 پکسل عکس کې وړاندې شوی:

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

د پکسل په دې بلاک کې DCT پلي کړئ او د کوفیفینټ 8x8 بلاک ترلاسه کړئ:

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

او که موږ د کوفیفینټ دا بلاک وړاندې کړو، موږ به لاندې انځور ترلاسه کړو:

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

لکه څنګه چې تاسو لیدلی شئ، دا د اصلي انځور په څیر نه ښکاري. تاسو لیدلی شئ چې لومړی ضمیمه د نورو ټولو څخه خورا توپیر لري. دا لومړی ضمیمه د DC کوفیینټ په نوم پیژندل کیږي، کوم چې د ان پټ سرې کې ټولې نمونې استازیتوب کوي، یو څه د اوسط په څیر.

د کوفیفینټس دا بلاک په زړه پوري ملکیت لري: دا د لوړې فریکونسۍ اجزا له ټیټ فریکونسۍ څخه جلا کوي.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

په یوه عکس کې، ډیری بریښنا په ټیټ فریکونسیو متمرکزه ده، نو که تاسو عکس د هغې د فریکونسۍ برخو ته واړوئ او د لوړې فریکونسۍ کوفیفینټ رد کړئ، تاسو کولی شئ د عکس بیان کولو لپاره د اړتیا وړ ډیټا اندازه کم کړئ پرته لدې چې د عکس کیفیت ډیر قرباني کړئ.

فریکونسی د سیګنال بدلون ته اشاره کوي.

راځئ هڅه وکړو چې د ازموینې قضیه کې ترلاسه شوي پوهه د DCT په کارولو سره اصلي عکس ته د هغې فریکونسۍ (د ضمیمو بلاک) ته بدلولو سره پلي کړو او بیا د لږترلږه مهم ضمیمو برخې له مینځه یوسو.

لومړی موږ دا د فریکونسۍ ډومین ته واړوو.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

بیا، موږ د کوفیفینټ برخه (67٪) له منځه یوسو، په عمده توګه ټیټ ښیې برخه.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

په نهایت کې ، موږ عکس د کوفیفینټ له دې رد شوي بلاک څخه بیا جوړوو (په یاد ولرئ ، دا باید د نه بدلیدونکي وي) او له اصلي سره یې پرتله کړئ.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

موږ ګورو چې دا د اصلي عکس سره ورته دی، مګر د اصلي څخه ډیری توپیرونه شتون لري. موږ 67,1875٪ وغورځول او لاهم د اصلي سره ورته یو څه ترلاسه کړل. دا ممکنه وه چې د لا ښه کیفیت عکس ترلاسه کولو لپاره کوفیفینټونه په ډیر فکر سره رد کړئ ، مګر دا یوه بله موضوع ده.

هر کوفینټ د ټولو پکسلونو په کارولو سره تولید شوی

مهم: هر کوفېنټ په مستقیم ډول په یوه پکسل کې نه نقشه شوی، مګر د ټولو پکسلونو وزن لري. دا حیرانوونکی ګراف ښیې چې څنګه لومړی او دوهم کوفیفینټ د هر شاخص لپاره ځانګړي وزنونو په کارولو سره محاسبه کیږي.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

تاسو کولی شئ د دې پر بنسټ د ساده عکس جوړونې په لټه کې د DCT لیدلو هڅه وکړئ. د مثال په توګه، دلته د A سمبول دی چې د هر ضخامت وزن په کارولو سره رامینځته شوی:

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

څلورم ګام - اندازه کول

وروسته له دې چې موږ په مخکیني مرحله کې ځینې کوفیفینټونه وغورځوو، په وروستي مرحله (بدلون) کې موږ د مقدار کولو ځانګړې بڼه ترسره کوو. پدې مرحله کې دا د منلو وړ ده چې معلومات له لاسه ورکړي. یا، په ساده ډول، موږ به د کمپریشن ترلاسه کولو لپاره کوفیفینټ اندازه کړو.

تاسو څنګه کولی شئ د کوفیفینټ بلاک اندازه کړئ؟ یو له خورا ساده میتودونو څخه یونیفورم مقدار کول دي ، کله چې موږ بلاک واخلو ، نو دا د یو ارزښت (10 لخوا) سره تقسیم کړئ او پایله یې ګرد کړئ.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

ایا موږ کولی شو د کوفیفینس دا بلاک بیرته وګرځوو؟ هو، موږ کولی شو، د ورته ارزښت په واسطه ضرب کړو چې موږ یې ویشلی.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

دا طریقه غوره نه ده ځکه چې دا د هر ضمیمه اهمیت په پام کې نه نیسي. یو څوک کولی شي د یو واحد ارزښت پر ځای د کوانټایزر میټریکس وکاروي ، او دا میټریکس کولی شي د ټیټ ښي اړخ اکثریت او د پورتنۍ کیڼ اړخ اقلیت مقدار کولو سره د DCT ملکیت استخراج کړي.

پنځم ګام - د انټروپي کوډ کول

یوځل چې موږ ډیټا اندازه کړو (د عکس بلاکونه ، ټوټې ، چوکاټونه) ، موږ لاهم کولی شو دا بې له کوم زیان سره فشار کړو. د ډیټا کمپریس کولو لپاره ډیری الګوریتمیک لارې شتون لري. موږ به یې ځینې ته یو ګړندي نظر واخلو ، د ژورې پوهاوي لپاره تاسو کولی شئ کتاب ولولئ د پوهیدو کمپریشن: د ډیټا کمپریشن د عصري پراختیا کونکو لپاره ("د کمپریشن پوهیدل: د عصري پراختیا کونکو لپاره د ډیټا کمپریشن").

د VLC په کارولو سره د ویډیو کوډ کول

راځئ چې ووایو موږ د کرکټرونو لړۍ لرو: a, e, r и t. احتمال (له 0 څخه تر 1 پورې) په دې جدول کې د هر کرکټر څومره ځله څرګندیږي.

a e r t
احتمال 0,3 0,3 0,2 0,2

موږ کولی شو ځانګړي بائنری کوډونه (په غوره توګه کوچني) تر ټولو احتمالي کسانو ته او لوی کوډونه لږ احتمال لرونکي ته وټاکو.

a e r t
احتمال 0,3 0,3 0,2 0,2
بائنری کوډ 0 10 110 1110

موږ جریان فشار راوړو، داسې انګیرل کیږي چې موږ به د هر کرکټر لپاره 8 بټونه مصرف کړو. د کمپریشن پرته، په هر کرکټر کې 24 بټونو ته اړتیا وي. که تاسو هر کرکټر د دې کوډ سره بدل کړئ ، تاسو سپما ترلاسه کوئ!

لومړی ګام د کرکټر کوډ کول دي e، کوم چې د 10 سره مساوي دی، او دویم کرکټر دی a، کوم چې اضافه شوي (نه په ریاضيکي ډول): [10][0]، او په پای کې دریم کرکټر t، کوم چې زموږ وروستی کمپریس شوی بټ سټریم د [10][0][1110] یا سره مساوي کوي 1001110، کوم چې یوازې 7 بټونو ته اړتیا لري (د اصلي څخه 3,4 ځله لږ ځای).

مهرباني وکړئ په یاد ولرئ چې هر کوډ باید د مخکینۍ سره یو ځانګړی کوډ وي. هفمن الګوریتم تاسو سره به د دې شمیرو په موندلو کې مرسته وکړي. که څه هم دا طریقه د دې نیمګړتیاو پرته نه ده، د ویډیو کوډیکونه شتون لري چې لاهم د کمپریشن لپاره دا الګوریتمیک میتود وړاندیز کوي.

دواړه کوډ کونکی او کوډ کونکی باید د دوی بائنری کوډونو سره سمبول میز ته لاسرسی ولري. له همدې امله، دا هم اړینه ده چې د ان پټ په توګه یو میز ولیږئ.

د ریاضیاتو کوډ کول

راځئ چې ووایو موږ د کرکټرونو لړۍ لرو: a, e, r, s и t، او د دوی احتمال په دې جدول کې وړاندې شوی.

a e r s t
احتمال 0,3 0,3 0,15 0,05 0,2

د دې جدول په کارولو سره، موږ به هغه سلسله جوړه کړو چې ټول ممکنه حروف ولري، د لوی شمیر په واسطه ترتیب شوي.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

اوس راځئ چې د دریو حروفونو یو جریان کوډ کړو: خورئ.

لومړی لومړی کرکټر غوره کړئ e، کوم چې د 0,3 څخه تر 0,6 پورې په فرعي حد کې دی (په شمول نه). موږ دا فرعي رینج اخلو او بیا یې په ورته تناسب کې د پخوا په څیر ویشو، مګر د دې نوې لړۍ لپاره.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

راځئ چې زموږ جریان کوډ کولو ته دوام ورکړو خورئ. اوس دوهم کرکټر واخلئ a، کوم چې د 0,3 څخه تر 0,39 پورې په نوي فرعي رینج کې دی، او بیا زموږ وروستی کرکټر واخلئ t او د ورته پروسې بیا تکرار کول، موږ د 0,354 څخه تر 0,372 پورې وروستی فرعي رینج ترلاسه کوو.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

موږ یوازې اړتیا لرو چې په وروستي فرعي رینج کې له 0,354 څخه تر 0,372 پورې یو شمیر وټاکو. راځئ چې 0,36 غوره کړو (مګر تاسو کولی شئ په دې فرعي رینج کې کوم بل نمبر غوره کړئ). یوازې د دې شمیرې سره به موږ وکولی شو خپل اصلي جریان بحال کړو. دا داسې ده لکه څنګه چې موږ د خپل جریان کوډ کولو لپاره په حدودو کې کرښه رسم کوو.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

برعکس عملیات (یعنی، کوډ کول) لکه څنګه چې ساده دی: زموږ د 0,36 شمیرې او زموږ د ابتدايي سلسلې سره، موږ کولی شو ورته پروسه پرمخ یوسو. مګر اوس، د دې شمیرې په کارولو سره، موږ د دې شمیرې په کارولو سره کوډ شوی جریان پیژنو.

د لومړي سلسلې سره، موږ ګورو چې زموږ شمیره د ټوټې سره مطابقت لري، نو دا زموږ لومړی کرکټر دی. اوس موږ د پخوا په څیر د ورته پروسې په تعقیب سره دا فرعي سلسله بیا تقسیم کوو. دلته تاسو لیدلی شئ چې 0,36 د سمبول سره مطابقت لري a، او د پروسې له تکرارولو وروسته موږ وروستي کرکټر ته ورسیدو t (زموږ د اصلي کوډ شوی جریان جوړول خورئ).

دواړه کوډ کوونکی او ډیکوډر باید د سمبول احتمالاتو جدول ولري، نو دا اړینه ده چې دا د ان پټ ډاټا کې هم ولیږئ.

ډیر ښکلی، دا نه دی؟ څوک چې د دې حل سره راغلی خورا هوښیار و. ځینې ​​​​ویډیو کوډیکونه دا تخنیک کاروي (یا لږترلږه دا د اختیار په توګه وړاندیز کوي).

مفکوره دا ده چې بې له کوم زیانمن بټ جریان فشار کړئ. یقینا دا مقاله ډیری توضیحات، دلایل، سوداګریز بندونه، او نور له لاسه ورکوي. مګر که تاسو پراختیا ورکوونکي یاست، تاسو باید نور پوه شئ. نوي کوډیکونه هڅه کوي د مختلف انټروپي کوډ کولو الګوریتمونه وکاروي لکه ANS.

شپږم ګام - د بټ سټریم بڼه

د دې ټولو کولو وروسته، ټول هغه څه چې پاتې دي د ترسره شوي ګامونو په شرایطو کې د کمپرس شوي چوکاټونو خلاصول دي. کوډ کونکی باید په واضح ډول د کوډ کونکي لخوا ترسره شوي پریکړو څخه خبر شي. ډیکوډر باید ټول اړین معلومات چمتو کړي: د بټ ژوروالی، د رنګ ځای، ریزولوشن، د وړاندوینې معلومات (حرکت ویکتورونه، سمتي INTER وړاندوینه)، پروفایل، کچه، د چوکاټ کچه، د چوکاټ ډول، د چوکاټ شمیره او نور ډیر څه.

موږ به د بټ سټریم ته یو ګړندی نظر واخلو H.264. زموږ لومړی ګام د لږترلږه H.264 بټ سټریم رامینځته کول دي (FFmpeg په ډیفالټ کې د کوډ کولو ټول اختیارونه اضافه کوي لکه SEI NAL - موږ به پوه شو چې دا یو څه نور دی). موږ کولی شو دا زموږ د خپل ذخیره او FFmpeg په کارولو سره ترسره کړو.

./s/ffmpeg -i /files/i/minimal.png -pix_fmt yuv420p /files/v/minimal_yuv420.h264

دا کمانډ به خام بټ سټریم رامینځته کړي H.264 د یو چوکاټ سره، 64 × 64 ریزولوشن، د رنګ ځای سره YUV420. په دې حالت کې، لاندې انځور د چوکاټ په توګه کارول کیږي.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

H.264 بټ سټریم

معياري AVC (H.264) ټاکي چې معلومات به په میکرو فریمونو کې واستول شي (د شبکې په معنی)، په نوم یادیږي nal (دا د شبکې د خلاصون کچه ده). د NAL اصلي هدف د "ویب دوستانه" ویډیو پریزنټشن چمتو کول دي. دا معیار باید په تلویزیونونو کې کار وکړي (سټریم پراساس) ، انټرنیټ (د کڅوړې پراساس).

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

د NAL عناصرو حدود تعریف کولو لپاره د همغږي نښه نښه شتون لري. هر همغږي نښه یو ارزښت لري 0x00 0x00 0x01, پرته له دې چې د لومړي ځل لپاره، چې مساوي دی 0x00 0x00 0x00 0x01. که موږ پیل کړو hexdump د تولید شوي H.264 بټ سټریم لپاره، موږ د فایل په پیل کې لږترلږه درې NAL نمونې پیژنو.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

لکه څنګه چې ویل شوي، ډیکوډر باید نه یوازې د عکس ډاټا، بلکې د ویډیو توضیحات، چوکاټ، رنګونه، کارول شوي پیرامیټونه او نور ډیر څه پوهیږي. د هر NAL لومړی بایټ خپله کټګوري او ډول تعریفوي.

د NAL ډول پیژندونکی شرح
0 نامعلوم ډول
1 د IDR پرته کوډ شوی عکس ټوټه
2 د کوډ شوي سلائس ډیټا برخه A
3 د کوډ شوي سلائس ډیټا برخه B
4 د کوډ شوي سلائس ډیټا برخه C
5 د IDR عکس کوډ شوی IDR ټوټه
6 د ‏‎SEI extension‎‏ پاڼې اړوند نور معلومات په فسبوک کې اوګورئ
7 د SPS ترتیب پیرامیټر سیټ
8 د PPS انځور پیرامیټرو سیټ
9 د لاسرسي جلا کوونکی
10 د لړۍ پای
11 د تار پای
... ...

عموما د بټ سټریم لومړی NAL دی SPS. دا ډول NAL د عام کوډ کولو متغیرونو لکه پروفایل، کچه، ریزولوشن، او نور په اړه د معلوماتو ورکولو مسولیت لري.

که موږ لومړی سنک مارکر پریږدو، موږ کولی شو لومړی بایټ ډیکوډ کړو ترڅو معلومه کړو چې کوم NAL ډول لومړی دی.

د مثال په توګه، د ترکیب نښه وروسته لومړی بایټ دی 01100111چیرته چې لومړی بټ (0) په ساحه کې forbidden_zero_bit. راتلونکی 2 بټونه (11) موږ ته ساحه وایی nal_ref_idc، کوم چې دا په ګوته کوي چې آیا دا NAL د حوالې ساحه ده که نه. او پاتې 5 بټونه (00111) موږ ته ساحه وایی نال_یونټ_ډول، په دې حالت کې دا د SPS بلاک دی (7) NAL.

دوهم بایټ (بائنري=01100100, هیکس=0x64, Dec=100) په SPS NAL کې ساحه ده profile_idc کوم چې هغه پروفایل ښیې چې کوډر کارول شوی. په دې حالت کې، یو محدود لوړ پروفایل کارول شوی و (د بیلګې په توګه، د دوه اړخیز B- برخې مالتړ پرته لوړ پروفایل).

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

که تاسو د بټ سټریم مشخصات وګورئ H.264 د SPS NAL لپاره، موږ به د پیرامیټر نوم، کټګورۍ او توضیحاتو لپاره ډیری ارزښتونه ومومئ. د مثال په توګه، راځئ چې ساحې ته وګورو pic_width_in_mbs_minus_1 и pic_height_in_map_units_minus_1.

د پیرامیټر نوم وېشنيزه شرح
pic_width_in_mbs_minus_1 0 ue(v)
pic_height_in_map_units_minus_1 0 ue(v)

که موږ د دې ساحو ارزښتونو سره ځینې ریاضياتي عملیات ترسره کړو، موږ به حل ترلاسه کړو. یو کولی شي د 1920 x 1080 په کارولو سره استازیتوب وکړي pic_width_in_mbs_minus_1 د 119 ارزښت سره ((119 + 1) * macroblock_size = 120 * 16 = 1920). یوځل بیا ، د ځای خوندي کولو لپاره ، د 1920 کوډ کولو پرځای ، موږ دا د 119 سره وکړل.

که موږ په بائنری شکل کې زموږ رامینځته شوي ویډیو چیک کولو ته دوام ورکړو (د مثال په توګه: xxd -b -c 11 v/minimal_yuv420.h264)، بیا تاسو کولی شئ وروستي NAL ته لاړ شئ، کوم چې پخپله چوکاټ دی.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

دلته موږ د دې لومړي 6 بایټ ارزښتونه ګورو: 01100101 10001000 10000100 00000000 00100001 11111111. څرنګه چې لومړی بایټ د NAL ډول په ګوته کولو لپاره پیژندل شوی، پدې حالت کې (00101) د IDR ټوټه ده (5)، او بیا تاسو کولی شئ دا نور وپلټئ:

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

د مشخصاتو معلوماتو په کارولو سره ، دا به ممکنه وي چې د ټوټې ډول ډیکوډ کړئ (ټوټه_ډول) او د چوکاټ شمیره (چوکاټ_ شمیره) د نورو مهمو برخو په منځ کې.

د ځینو ساحو ارزښتونو ترلاسه کولو لپاره (ue(v), me(v), se(v) او یا te(v))، موږ اړتیا لرو چې د ځانګړي کوډ کونکي په کارولو سره ټوټه ډیکوډ کړو د ګولومب کوډ. دا طریقه د متغیر ارزښتونو کوډ کولو لپاره خورا اغیزمنه ده، په ځانګړې توګه کله چې ډیری ډیفالټ ارزښتونه شتون لري.

ارزښتونه ټوټه_ډول и چوکاټ_ شمیره د دې ویډیو 7 (I-Fragment) او 0 (لومړی چوکاټ) دي.

یو بټ سټریم د پروتوکول په توګه فکر کیدی شي. که تاسو غواړئ د بټ سټریم په اړه نور معلومات ترلاسه کړئ ، نو تاسو باید توضیحاتو ته مراجعه وکړئ ITU H.264. دلته یو میکرو ډیاګرام دی چې ښیې د عکس ډیټا چیرې ده (YUV په کمپریس شوي شکل کې).

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

نور بټ سټریمونه معاینه کیدی شي ، لکه VP9, H.265 (HEVC) یا حتی زموږ نوی غوره بټ سټریم AV1. ایا دوی ټول ورته دي؟ نه، مګر یوځل چې تاسو لږترلږه یو پوه شئ، د پاتې نورو پوهیدل خورا اسانه دي.

غواړئ تمرین وکړئ؟ د H.264 bitstream وپلټئ

تاسو کولی شئ یو واحد فریم ویډیو تولید کړئ او د بټ سټریم معاینه کولو لپاره MediaInfo وکاروئ H.264. په حقیقت کې، هیڅ شی تاسو ته حتی د سرچینې کوډ لیدلو څخه منع کوي چې د بټ جریان تحلیل کوي H.264 (AVC).

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

د تمرین لپاره ، تاسو کولی شئ د انټیل ویډیو پرو تحلیل کونکي وکاروئ (ایا ما دمخه وویل چې برنامه تادیه شوې ، مګر د 10 چوکاټونو محدودیت سره وړیا آزموینې نسخه شتون لري؟).

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

عمومي کتنه

په یاد ولرئ چې ډیری عصري کوډیکونه ورته ماډل کاروي چې موږ یې مطالعه کړې. دلته، راځئ چې د ویډیو کوډیک بلاک ډیاګرام ته یو نظر وګورو اوکړو. دا ټول هغه مرحلې لري چې موږ ترې تیر شوي یو. د دې پوسټ ټول ټکی دا دی چې لږترلږه تاسو ته پدې برخه کې د نوښتونو او اسنادو ښه پوهه درکړي.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

مخکې، دا محاسبه شوې وه چې د 139 GB ډیسک ځای ته اړتیا وي ترڅو د ویډیو فایل ذخیره کولو لپاره چې یو ساعت دوام لري په 720p کیفیت او 30 fps کې. که تاسو پدې مقاله کې بحث شوي میتودونه وکاروئ (انټر فریم او داخلي وړاندوینې ، بدلون ، مقدار کول ، انټروپي کوډینګ ، او نور) ، نو تاسو کولی شئ لاسته راوړئ (د حقیقت پراساس چې موږ په هر پکسل 0,031 بټونه مصرف کوو) ، د کافي ویډیو. د قناعت وړ کیفیت، یوازې 367,82 MB قبضه کوي، نه د 139 GB حافظه.

H.265 څنګه د H.264 په پرتله ښه کمپریشن تناسب ترلاسه کوي؟

اوس چې موږ د کوډیکونو کار کولو څرنګوالي په اړه نور پوهیږو، دا اسانه ده چې پوه شو چې نوي کوډیکونه څنګه کولی شي د لږو بټونو سره لوړ ریزولوشن وړاندې کړي.

که موږ پرتله کړو AVC и HEVC، دا د یادولو وړ ده چې دا تقریبا تل د لوی CPU بار او کمپریشن تناسب ترمینځ انتخاب دی.

HEVC په پرتله ډیرې برخې (او فرعي برخې) اختیارونه لري AVC، د داخلي وړاندوینې نور لارښوونې، د انټروپي کوډ کولو ښه والی، او نور ډیر څه. دا ټول پرمختګونه شوي دي H.265 د 50٪ څخه ډیر فشار کولو توان لري H.264.

د ویډیو کوډیک څنګه کار کوي؟ 2 برخه. څه، ولې، څنګه

لومړۍ برخه: د ویډیو او عکسونو سره د کار کولو اساسات

سرچینه: www.habr.com

Add a comment