మేము వీడియో ఎన్కోడింగ్ను ఎనిమిది రెట్లు ఎలా వేగవంతం చేసాము
ప్రతిరోజూ, మిలియన్ల మంది వీక్షకులు ఇంటర్నెట్లో వీడియోలను చూస్తున్నారు. కానీ వీడియో అందుబాటులోకి రావాలంటే, అది సర్వర్కి అప్లోడ్ చేయడమే కాకుండా, ప్రాసెస్ చేయబడాలి. ఇది ఎంత వేగంగా జరిగితే, సేవకు మరియు దాని వినియోగదారులకు అంత మంచిది.
నా పేరు అస్కర్ కమాలోవ్, ఒక సంవత్సరం క్రితం నేను Yandex వీడియో టెక్నాలజీ బృందంలో చేరాను. ఈ రోజు నేను హబ్ర్ పాఠకులకు క్లుప్తంగా చెబుతాను, ఎన్కోడింగ్ ప్రక్రియను సమాంతరంగా చేయడం ద్వారా, మేము వినియోగదారుకు వీడియో డెలివరీని గణనీయంగా ఎలా వేగవంతం చేసాము.
వీడియో సేవల హుడ్ కింద ఏమి జరుగుతుందనే దాని గురించి ఇంతకు ముందు ఆలోచించని వారికి ఈ పోస్ట్ ప్రాథమికంగా ఆసక్తిని కలిగిస్తుంది. వ్యాఖ్యలలో మీరు ప్రశ్నలు అడగవచ్చు మరియు భవిష్యత్ పోస్ట్ల కోసం అంశాలను సూచించవచ్చు.
పని గురించి కొన్ని మాటలు. Yandex ఇతర సైట్లలో వీడియోల కోసం శోధించడంలో మీకు సహాయపడటమే కాకుండా, దాని స్వంత సేవల కోసం వీడియోలను నిల్వ చేస్తుంది. ఇది అసలైన ప్రోగ్రామ్ అయినా లేదా స్పోర్ట్స్ మ్యాచ్ ఆన్ ఎయిర్ అయినా, KinoPoiskలో ఫిల్మ్ అయినా లేదా Zen మరియు Newsలో వీడియో అయినా - ఇవన్నీ మా సర్వర్లకు అప్లోడ్ చేయబడతాయి. వినియోగదారులు వీడియోను చూడాలంటే, దానిని సిద్ధం చేయాలి: అవసరమైన ఆకృతికి మార్చడం, ప్రివ్యూ సృష్టించడం లేదా సాంకేతికత ద్వారా అమలు చేయడం డీప్హెచ్డి. సిద్ధం చేయని ఫైల్ కేవలం స్థలాన్ని తీసుకుంటుంది. అంతేకాకుండా, మేము హార్డ్వేర్ యొక్క సరైన ఉపయోగం గురించి మాత్రమే కాకుండా, వినియోగదారులకు కంటెంట్ డెలివరీ వేగం గురించి కూడా మాట్లాడుతున్నాము. ఉదాహరణ: హాకీ మ్యాచ్ యొక్క నిర్ణయాత్మక క్షణం యొక్క రికార్డింగ్ ఈవెంట్ తర్వాత ఒక నిమిషంలో శోధించబడుతుంది.
సీక్వెన్షియల్ ఎన్కోడింగ్
కాబట్టి, వినియోగదారు యొక్క ఆనందం ఎక్కువగా వీడియో ఎంత త్వరగా అందుబాటులోకి వస్తుంది అనే దానిపై ఆధారపడి ఉంటుంది. మరియు ఇది ప్రధానంగా ట్రాన్స్కోడింగ్ వేగం ద్వారా నిర్ణయించబడుతుంది. వీడియో అప్లోడ్ వేగం కోసం కఠినమైన అవసరాలు లేనప్పుడు, సమస్యలు లేవు. మీరు ఒకే, విడదీయరాని ఫైల్ని తీసుకుని, దానిని మార్చండి మరియు అప్లోడ్ చేయండి. మా ప్రయాణం ప్రారంభంలో, మేము ఈ విధంగా పని చేసాము:
క్లయింట్ వీడియోను స్టోరేజ్కి అప్లోడ్ చేస్తుంది, ఎనలైజర్ కాంపోనెంట్ మెటా సమాచారాన్ని సేకరిస్తుంది మరియు వీడియోని వర్కర్ కాంపోనెంట్కి మార్పిడి కోసం బదిలీ చేస్తుంది. అన్ని దశలు వరుసగా నిర్వహిస్తారు. ఈ సందర్భంలో, అనేక ఎన్కోడింగ్ సర్వర్లు ఉండవచ్చు, కానీ ఒకటి మాత్రమే నిర్దిష్ట వీడియోను ప్రాసెస్ చేయడంలో బిజీగా ఉంది. సాధారణ, పారదర్శక రేఖాచిత్రం. ఇక్కడే దాని ప్రయోజనాలు ముగుస్తాయి. ఈ పథకం నిలువుగా మాత్రమే స్కేల్ చేయబడుతుంది (మరింత శక్తివంతమైన సర్వర్ల కొనుగోలు కారణంగా).
ఇంటర్మీడియట్ ఫలితంతో సీక్వెన్షియల్ ఎన్కోడింగ్
బాధాకరమైన నిరీక్షణను ఎలాగైనా సులభతరం చేయడానికి, పరిశ్రమ వేగవంతమైన కోడింగ్ ఎంపికతో ముందుకు వచ్చింది. పేరు తప్పుదారి పట్టించేది, ఎందుకంటే వాస్తవానికి, పూర్తి కోడింగ్ వరుసగా జరుగుతుంది మరియు ఎక్కువ సమయం పడుతుంది. కానీ ఇంటర్మీడియట్ ఫలితంతో. ఆలోచన ఇది: వీలైనంత త్వరగా వీడియో యొక్క తక్కువ-రిజల్యూషన్ వెర్షన్ను సిద్ధం చేయండి మరియు ప్రచురించండి, ఆపై మాత్రమే అధిక-రిజల్యూషన్ వెర్షన్లు.
ఒక వైపు, వీడియో వేగంగా అందుబాటులోకి వస్తుంది. మరియు ఇది ముఖ్యమైన సంఘటనలకు ఉపయోగపడుతుంది. కానీ మరోవైపు, చిత్రం అస్పష్టంగా మారుతుంది మరియు ఇది వీక్షకులను బాధపెడుతుంది.
మీరు వీడియోను త్వరగా ప్రాసెస్ చేయడమే కాకుండా, దాని నాణ్యతను కూడా నిర్వహించాల్సిన అవసరం ఉందని ఇది మారుతుంది. ఇప్పుడు వీడియో సేవ నుండి వినియోగదారులు ఆశించేది ఇదే. అత్యంత ఉత్పాదక సర్వర్లను కొనుగోలు చేయడం సరిపోతుందని అనిపించవచ్చు (మరియు వాటిని ఒకేసారి అప్గ్రేడ్ చేయండి). కానీ ఇది ఒక డెడ్ ఎండ్, ఎందుకంటే అత్యంత శక్తివంతమైన హార్డ్వేర్ను కూడా వేగాన్ని తగ్గించే వీడియో ఎల్లప్పుడూ ఉంటుంది.
సమాంతర ఎన్కోడింగ్
సంక్లిష్ట సమస్యను చాలా తక్కువ సంక్లిష్టమైనవిగా విభజించి, వాటిని వివిధ సర్వర్లలో సమాంతరంగా పరిష్కరించడం చాలా సమర్థవంతంగా ఉంటుంది. ఇది వీడియో కోసం MapReduce. ఈ సందర్భంలో, మేము ఒక సర్వర్ పనితీరుకు పరిమితం కాదు మరియు అడ్డంగా (కొత్త యంత్రాలను జోడించడం ద్వారా) స్కేల్ చేయవచ్చు.
మార్గం ద్వారా, వీడియోలను చిన్న ముక్కలుగా విభజించడం, వాటిని సమాంతరంగా ప్రాసెస్ చేయడం మరియు వాటిని అతుక్కోవడం అనే ఆలోచన కొంత రహస్యం కాదు. మీరు ఈ విధానానికి సంబంధించిన అనేక సూచనలను కనుగొనవచ్చు (ఉదాహరణకు, హబ్రేలో నేను ప్రాజెక్ట్ గురించి ఒక పోస్ట్ను సిఫార్సు చేస్తున్నాను డిస్ట్VIDc) కానీ ఇది మొత్తంగా ఏదీ సులభతరం చేయదు, ఎందుకంటే మీరు రెడీమేడ్ సొల్యూషన్ తీసుకొని మీ ఇంటికి నిర్మించలేరు. మా అవస్థాపన, మా వీడియో మరియు మా లోడ్కు కూడా మాకు అనుకూలత అవసరం. సాధారణంగా, మీ స్వంతంగా వ్రాయడం సులభం.
కాబట్టి, కొత్త ఆర్కిటెక్చర్లో, మేము ఏకశిలా వర్కర్ బ్లాక్ను సీక్వెన్షియల్ కోడింగ్తో మైక్రోసర్వీసెస్ సెగ్మెంటర్, టోకోడర్, కాంబినర్గా విభజించాము.
సెగ్మెంటర్ వీడియోను సుమారు 10 సెకన్ల శకలాలుగా విభజిస్తుంది. శకలాలు ఒకటి లేదా అంతకంటే ఎక్కువ GOPలను కలిగి ఉంటాయి (చిత్రాల సమూహం) ప్రతి GOP స్వతంత్రంగా ఉంటుంది మరియు విడిగా ఎన్కోడ్ చేయబడుతుంది, తద్వారా ఇది ఇతర GOPల నుండి ఫ్రేమ్లను సూచించకుండా డీకోడ్ చేయబడుతుంది. అంటే, శకలాలు ఒకదానికొకటి స్వతంత్రంగా ఆడవచ్చు. ఈ షార్డింగ్ జాప్యాన్ని తగ్గిస్తుంది, ప్రాసెసింగ్ ముందుగానే ప్రారంభించడానికి అనుమతిస్తుంది.
Tcoder ప్రతి భాగాన్ని ప్రాసెస్ చేస్తుంది. ఇది క్యూ నుండి ఒక పనిని తీసుకుంటుంది, నిల్వ నుండి ఒక భాగాన్ని డౌన్లోడ్ చేస్తుంది, దానిని విభిన్న రిజల్యూషన్లలోకి ఎన్కోడ్ చేస్తుంది (ప్లేయర్ కనెక్షన్ వేగం ఆధారంగా సంస్కరణను ఎంచుకోవచ్చని గుర్తుంచుకోండి), ఆపై ఫలితాన్ని తిరిగి నిల్వలో ఉంచుతుంది మరియు భాగాన్ని ప్రాసెస్ చేసినట్లు గుర్తు చేస్తుంది డేటాబేస్లో. అన్ని శకలాలు ప్రాసెస్ చేసిన తర్వాత, Tcoder తదుపరి భాగం కోసం ఫలితాలను రూపొందించడానికి పనిని పంపుతుంది.
Combiner కలిసి ఫలితాలను సేకరిస్తుంది: Tcoder ద్వారా తయారు చేయబడిన అన్ని శకలాలను డౌన్లోడ్ చేస్తుంది, విభిన్న రిజల్యూషన్ల కోసం స్ట్రీమ్లను రూపొందిస్తుంది.
ధ్వని గురించి కొన్ని మాటలు. అత్యంత ప్రజాదరణ పొందిన AAC ఆడియో కోడెక్ అసహ్యకరమైన లక్షణాన్ని కలిగి ఉంది. మీరు శకలాలను విడిగా ఎన్కోడ్ చేస్తే, మీరు వాటిని సజావుగా అతికించలేరు. పరివర్తనాలు గమనించవచ్చు. వీడియో కోడెక్లకు ఈ సమస్య లేదు. సిద్ధాంతపరంగా, మీరు సంక్లిష్టమైన సాంకేతిక పరిష్కారం కోసం చూడవచ్చు, కానీ ఈ గేమ్ ఇంకా కొవ్వొత్తికి విలువైనది కాదు (ఆడియో వీడియో కంటే గణనీయంగా తక్కువగా ఉంటుంది). అందువల్ల, వీడియో మాత్రమే సమాంతరంగా ఎన్కోడ్ చేయబడుతుంది మరియు మొత్తం ఆడియో ట్రాక్ ప్రాసెస్ చేయబడుతుంది.
Результаты
సమాంతర వీడియో ప్రాసెసింగ్కు ధన్యవాదాలు, మేము వీడియోని మాకు అప్లోడ్ చేయడం మరియు వినియోగదారులకు అందుబాటులో ఉండటం మధ్య ఆలస్యాన్ని గణనీయంగా తగ్గించాము. ఉదాహరణకు, ఒక గంటన్నర నిడివి ఉండే FullHD ఫిల్మ్ కోసం విభిన్న నాణ్యతతో కూడిన అనేక పూర్తి వెర్షన్లను రూపొందించడానికి గతంలో రెండు గంటలు పట్టవచ్చు. ఇప్పుడు ఇదంతా 15 నిమిషాలు పడుతుంది. అంతేకాకుండా, సమాంతర ప్రాసెసింగ్తో, పాత ఇంటర్మీడియట్ రిజల్ట్ అప్రోచ్తో తక్కువ రిజల్యూషన్ వెర్షన్ కంటే కూడా వేగంగా హై-రిజల్యూషన్ వెర్షన్ను సృష్టిస్తాము.
మరియు మరొక విషయం. పాత విధానంతో సరిపడా సర్వర్లు లేక, పనులు లేక ఖాళీగా ఉన్నాయి. ఐరన్ రీసైక్లింగ్ వాటాను పెంచడానికి సమాంతర కోడింగ్ మిమ్మల్ని అనుమతిస్తుంది. ఇప్పుడు వెయ్యికి పైగా ఉన్న మా క్లస్టర్ ఎప్పుడూ ఏదో ఒక పనిలో బిజీగా ఉంటుంది.
నిజానికి, మెరుగుదల కోసం ఇంకా స్థలం ఉంది. ఉదాహరణకు, మేము వీడియో యొక్క శకలాలు పూర్తిగా మనకు రాకముందే ప్రాసెస్ చేయడం ప్రారంభిస్తే గణనీయమైన సమయాన్ని ఆదా చేయవచ్చు. వారు చెప్పినట్లు, మరిన్ని రాబోతున్నాయి.
మీరు వీడియోతో పని చేసే రంగంలో ఏ పనుల గురించి చదవాలనుకుంటున్నారో వ్యాఖ్యలలో వ్రాయండి.