HLS സാങ്കേതികവിദ്യ. HTTP ലൈവ് സ്ട്രീമിംഗ്: മികച്ച പാചകക്കുറിപ്പുകൾ. ഓൺലൈൻ പ്രക്ഷേപണത്തിനായി എപ്പോൾ HLS ഉപയോഗിക്കണം

കഴിഞ്ഞ കുറച്ച് വർഷങ്ങളായി ഡിജിറ്റൽ പ്രക്ഷേപണ ലോകത്ത് വലിയ മാറ്റങ്ങളുണ്ടായി. അഡോബ് വികസിപ്പിച്ച ഇൻറർനെറ്റിലൂടെ ഉള്ളടക്കം എത്തിക്കുന്നതിനുള്ള സാങ്കേതികവിദ്യയായ ഫ്ലാഷ് അതിൻ്റെ സാന്നിധ്യം അതിവേഗം കുറയ്ക്കുകയാണ്. HLS പോലുള്ള പ്രോട്ടോക്കോളുകളാണ് അതിൻ്റെ സ്ഥാനം പിടിച്ചിരിക്കുന്നത്.

HTML5 ഉം HLS ഉം ഓപ്പൺ സോഴ്‌സ് ആണ്, നിങ്ങൾക്ക് ഇഷ്ടമുള്ളത് പോലെ പരിഷ്‌ക്കരിക്കാവുന്നതാണ്, അവ ഉപയോഗിക്കാൻ സൌജന്യവുമാണ്. അവ അവരുടെ മുൻഗാമികളേക്കാൾ സുരക്ഷിതവും കൂടുതൽ വിശ്വസനീയവും വേഗതയേറിയതുമാണ്. ഈ ലേഖനത്തിൽ ഞങ്ങൾ ഓൺലൈൻ പ്രക്ഷേപണത്തിൻ്റെ ആശയങ്ങൾ വിശദീകരിക്കാൻ ശ്രമിക്കും, സ്ട്രീമിംഗ് പ്രോട്ടോക്കോളുകളുടെ വിവരണവും HLS ഉപയോഗിക്കുന്നതിനുള്ള ശുപാർശകളും നൽകുക.

എന്താണ് HLS

എച്ച്എൽഎസ് എന്നാൽ എച്ച്ടിടിപി ലൈവ് സ്ട്രീമിംഗ്, ഇൻ്റർനെറ്റ് വഴി മീഡിയ ഡാറ്റ സ്ട്രീം ചെയ്യുന്നതിനുള്ള ഒരു പ്രോട്ടോക്കോൾ. HLS, MP4 ഫോർമാറ്റിലുള്ള വീഡിയോ ഉള്ളടക്കം 10 സെക്കൻഡ് ദൈർഘ്യമുള്ള ചെറിയ ബ്ലോക്കുകളായി മുറിക്കുന്നു. ഈ ചെറിയ ശകലങ്ങൾ എച്ച്ടിടിപി വഴി വിതരണം ചെയ്യുന്നു, ഇത് പ്രോട്ടോക്കോൾ മിക്ക ഉപകരണങ്ങളുമായും ഫയർവാളുകളുമായും പൊരുത്തപ്പെടുത്തുന്നു.

HLS പ്രാഥമികമായി ഓൺലൈൻ പ്രക്ഷേപണങ്ങളുടെ മികച്ച നിലവാരം നൽകുന്നു. പക്ഷേ, ഓൺലൈൻ പ്രക്ഷേപണത്തിനിടയിലെ കാലതാമസം 15-30 സെക്കൻഡ് ആണെന്ന് നിങ്ങൾ കണക്കിലെടുക്കേണ്ടതുണ്ട്. സെർവർ വശത്ത്, ബ്രോഡ്‌കാസ്റ്റ് സ്രഷ്‌ടാവിന് സ്ട്രീം എൻകോഡിംഗ് നിരവധി ഗുണങ്ങൾക്ക് നൽകാനാകും. പ്ലെയർ പിന്നീട് ഒരു പ്രത്യേക നിമിഷത്തിൽ ഇൻ്റർനെറ്റ് ചാനലിൻ്റെ വീതിയെ അടിസ്ഥാനമാക്കി ഒപ്റ്റിമൽ ഗുണനിലവാരം ചലനാത്മകമായി അഭ്യർത്ഥിക്കുന്നു. അതനുസരിച്ച്, ശകലങ്ങളുടെ ഗുണനിലവാരം വ്യത്യാസപ്പെടാം.

ഉദാഹരണത്തിന്, ഒരു മൊബൈൽ ഫോൺ എച്ച്ഡി നിലവാരത്തിൽ ഒരു വീഡിയോ പ്ലേ ചെയ്യുന്നു, ഒരു മിനിറ്റിനുശേഷം കാഴ്ചക്കാരൻ മോശം സ്വീകരണത്തിൻ്റെ ഒരു പ്രദേശത്ത് സ്വയം കണ്ടെത്തുന്നു. പ്ലെയർ കണക്ഷൻ ഗുണനിലവാരത്തിൽ കുറവ് കണ്ടെത്തുമ്പോൾ, അത് താഴ്ന്ന നിലവാരത്തിലുള്ള വീഡിയോ ഭാഗങ്ങൾ അഭ്യർത്ഥിക്കുന്നു. ഇത് ബഫറിംഗ്, ഫ്രീസിംഗ്, മറ്റ് പ്രശ്നങ്ങൾ എന്നിവ കുറയ്ക്കുന്നു.

എച്ച്എൽഎസ് സൃഷ്ടിച്ചതിൻ്റെ ചരിത്രം

2009-ലെ വേനൽക്കാലത്ത് ഐഫോൺ 3-നൊപ്പം എച്ച്എൽഎസ് ആദ്യം ആപ്പിൾ പുറത്തിറക്കി. മുമ്പത്തെ ഐഫോൺ മോഡലുകൾ ചിലപ്പോൾ വൈഫൈ നെറ്റ്‌വർക്കുകൾക്കും മൊബൈൽ ഡാറ്റാ കൈമാറ്റത്തിനും ഇടയിൽ മാറിയതിനാൽ ഓൺലൈൻ പ്രക്ഷേപണത്തിൽ പ്രശ്‌നങ്ങൾ നേരിട്ടിരുന്നു.

HLS പുറത്തിറങ്ങുന്നതിന് മുമ്പ്, ആപ്പിളിൻ്റെ പ്രധാന സ്ട്രീമിംഗ് മീഡിയ പ്രോട്ടോക്കോൾ Quicktime Streaming Server ആയിരുന്നു. ഒരു നല്ല സേവനം, പക്ഷേ ഡാറ്റാ ട്രാൻസ്മിഷനായി അത് നിലവാരമില്ലാത്ത പോർട്ടുകൾ ഉപയോഗിച്ചതിനാൽ, അതിൻ്റെ RTSP പ്രോട്ടോക്കോൾ ഇടയ്ക്കിടെ ഫയർവാളുകൾ തടഞ്ഞു. വേഗത കുറഞ്ഞ ഇൻ്റർനെറ്റുമായി ചേർന്ന്, ഇത് ഈ പ്രോട്ടോക്കോൾ ഉപേക്ഷിക്കുന്നതിലേക്ക് നയിച്ചു. എന്നാൽ അതിൻ്റെ നിർവഹണത്തിൽ നിന്ന് പഠിച്ച പാഠങ്ങൾ എച്ച്എൽഎസ് വികസിപ്പിക്കുന്നതിൽ വളരെ ഉപയോഗപ്രദമായിരുന്നു.

HLS സ്ട്രീം ഈച്ചയിൽ സൃഷ്ടിക്കപ്പെടുകയും HTTP സെർവറിൽ സംഭരിക്കുകയും ചെയ്യുന്നു. വീഡിയോ ഫയലുകൾ, മുകളിൽ സൂചിപ്പിച്ചതുപോലെ, .ts - MPEG2 ട്രാൻസ്പോർട്ട് സ്ട്രീം വിപുലീകരണത്തോടുകൂടിയ ചെറിയ ശകലങ്ങളായി തിരിച്ചിരിക്കുന്നു.

HTTP സെർവർ .M3U8 (മാനിഫെസ്‌റ്റ് എന്നും വിളിക്കുന്നു) എന്ന വിപുലീകരണത്തോടുകൂടിയ ഒരു പ്ലേലിസ്റ്റ് ഫയലും സൃഷ്‌ടിക്കുന്നു, അത് എല്ലാ വീഡിയോ ഭാഗങ്ങളും സൂചികയിലാക്കാൻ സഹായിക്കുന്നു. ഈ പ്ലേലിസ്റ്റ് ഫയൽ നിലവിലുള്ള ഓരോ പ്രക്ഷേപണ ഗുണങ്ങൾക്കുമുള്ള അധിക സൂചിക ഫയലുകളിലേക്ക് പോയിൻ്റ് ചെയ്യുന്നു. ഒരു ഗുണനിലവാരം ഉപയോഗിച്ച് പ്രക്ഷേപണം ചെയ്യാൻ നിങ്ങൾ തീരുമാനിച്ചാലും, ഒരു "മാനിഫെസ്റ്റോ" സൃഷ്ടിക്കപ്പെടും.

ഇൻ്റർനെറ്റിലെ ഡാറ്റാ ട്രാൻസ്മിഷൻ വേഗതയുടെ അപചയം അല്ലെങ്കിൽ മെച്ചപ്പെടുത്തൽ ഉപയോക്താവിൻ്റെ പ്ലേയർ തിരിച്ചറിയണം. അത്തരം ഒരു ഇവൻ്റ് സംഭവിക്കുമ്പോൾ, ഏത് വീഡിയോ നിലവാരത്തിലേക്ക് മാറണമെന്ന് നിർണ്ണയിക്കാൻ പ്ലെയർ മാനിഫെസ്റ്റ് ഫയൽ ആക്സസ് ചെയ്യുന്നു. കാഴ്ചക്കാരൻ നിർത്തിയ വീഡിയോയുടെ ഭാഗം ലോഡ് ചെയ്യാൻ പ്ലെയർ പിന്നീട് ഒരു ഗുണനിലവാര-നിർദ്ദിഷ്ട സൂചിക ഫയൽ അഭ്യർത്ഥിക്കുന്നു. ഈ മുഴുവൻ പ്രക്രിയയും ഉപയോക്താവിന് അദൃശ്യമാണ്. HLS പ്രോട്ടോക്കോൾ അടച്ച അടിക്കുറിപ്പും പിന്തുണയ്ക്കുന്നു,

സ്ട്രീമിംഗ് പ്രോട്ടോക്കോളുകളുടെ അവലോകനം

മുമ്പ് സൃഷ്ടിച്ച ഓരോ പ്രോട്ടോക്കോളുകളും മീഡിയ സ്ട്രീമിംഗിൽ ചില നവീകരണങ്ങൾ നടപ്പിലാക്കുന്നതിനെ പ്രതിനിധീകരിക്കുന്നു. HD-DVD, Blu-Ray, Betamax വേഴ്സസ് VHS എന്നിങ്ങനെയുള്ള "ഫോർമാറ്റ് യുദ്ധങ്ങളും" ഉണ്ടായിരുന്നു. ഓൺലൈൻ ബ്രോഡ്‌കാസ്റ്റിംഗിൽ HLS ആണ് മുൻനിരയിലുള്ളത്, എന്നാൽ ഇത് എല്ലായ്‌പ്പോഴും അങ്ങനെയായിരുന്നില്ല, ഭാവിയിൽ ഇത് അങ്ങനെ തന്നെ തുടരുമെന്നത് ഒരു വസ്തുതയല്ല.

RTMP അല്ലെങ്കിൽ റിയൽ-ടൈം മെസേജിംഗ് പ്രോട്ടോക്കോൾ, ഒരു തത്സമയ ഡാറ്റ സ്ട്രീമിംഗ് പ്രോട്ടോക്കോൾ. ഓഡിയോ, വീഡിയോ ഉള്ളടക്കം നൽകുന്നതിനായി 2000-ത്തിൻ്റെ മധ്യത്തിലാണ് മാക്രോമീഡിയ സൃഷ്ടിക്കപ്പെട്ടത്. ഇതിനെ പലപ്പോഴും ഫ്ലാഷ് എന്ന് വിളിക്കുന്നു. മാക്രോമീഡിയ പിന്നീട് Adobe Inc-മായി ലയിച്ചു, അത് RTMP ഒരു സെമി-ഓപ്പൺ പ്രോട്ടോക്കോൾ ആയി വികസിപ്പിക്കുന്നത് തുടരുന്നു.

കഴിഞ്ഞ ദശകത്തിൽ, ഇൻ്റർനെറ്റ് വഴിയുള്ള പ്രക്ഷേപണത്തിൻ്റെ പ്രബലമായ രീതിയാണ് RTMP. HLS ൻ്റെ വരവോടെ മാത്രമാണ് അതിൻ്റെ പങ്ക് കുറയാൻ തുടങ്ങിയത്. ഇന്ന്, മിക്ക ഓൺലൈൻ വീഡിയോ പ്ലാറ്റ്‌ഫോമുകളും ഇൻകമിംഗ് RTMP സ്ട്രീമിൽ പ്രവർത്തിക്കുന്നു. മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, നിങ്ങൾ RTMP-യിൽ പ്രക്ഷേപണം ചെയ്യുന്നു, അത് ഓൺലൈൻ വീഡിയോ പ്ലാറ്റ്‌ഫോം HLS-ൽ എൻകോഡ് ചെയ്യുകയും അന്തിമ കാഴ്ചക്കാർക്ക് കൈമാറുകയും ചെയ്യുന്നു. ശരിയാണ്, പല CDN ഓപ്പറേറ്റർമാരും RTMP പിന്തുണ ഉപേക്ഷിക്കാൻ തുടങ്ങിയിരിക്കുന്നു - തെളിവ്

അഡോബ് വികസിപ്പിച്ച അടുത്ത തലമുറ സ്ട്രീമിംഗ് പ്രോട്ടോക്കോളിനെ വിളിക്കുന്നത് HDS - HTTP ഡൈനാമിക് സ്ട്രീമിംഗ് എന്നാണ്. ഇത് ഫ്ലാഷ് പ്ലേബാക്ക് പ്ലഗിനുമായി പൊരുത്തപ്പെടുന്നു, എന്നാൽ ഇതിൻ്റെ ഉപയോഗത്തിൻ്റെ ആവൃത്തി സാധാരണ എച്ച്എൽഎസിനേക്കാൾ വളരെ കുറവാണ്.

ഫ്ലാഷിനെ പിന്തുണയ്ക്കുന്ന ഉപകരണങ്ങൾക്കും ബ്രൗസറുകൾക്കും, എച്ച്ഡിഎസ് ആണ് ഏറ്റവും മികച്ച ചോയ്സ്. ഇത് പ്രക്ഷേപണ സമയത്ത് കുറഞ്ഞ കാലതാമസം നൽകുന്നു, എച്ച്എൽഎസ് പോലെ, ഇത് മീഡിയ ഫയലുകളെ ചെറിയ ശകലങ്ങളായി വിഭജിക്കുന്നു, എൻക്രിപ്ഷനും ഡിആർഎമ്മും പിന്തുണയ്ക്കുന്നു.

മൈക്രോസോഫ്റ്റ് സ്മൂത്ത് സ്ട്രീമിംഗ്

മൈക്രോസോഫ്റ്റ് സ്വന്തം ഓൺലൈൻ സ്ട്രീമിംഗ് പ്രോട്ടോക്കോൾ മൈക്രോസോഫ്റ്റ് സ്മൂത്ത് സ്ട്രീമിംഗ് സൃഷ്ടിച്ചു. സാധ്യമായ ഏറ്റവും മികച്ച ഗുണനിലവാരത്തിൽ ഉള്ളടക്കം നൽകുന്നതിന് MSS അഡാപ്റ്റീവ് ബിറ്റ്റേറ്റും ഉപയോഗിക്കുന്നു.

അഡാപ്റ്റീവ് ബിറ്റ്റേറ്റ് ബ്രോഡ്കാസ്റ്റിംഗ് 2008-ൽ അവതരിപ്പിച്ചു. 2008 സമ്മർ ഒളിമ്പിക്‌സ് സംപ്രേക്ഷണം ചെയ്യാൻ MSS ഉപയോഗിച്ചു. ഇത്തരത്തിലുള്ള പ്രക്ഷേപണത്തിൻ്റെ പ്രധാന ഉപയോക്താവ് XBox One പ്ലാറ്റ്ഫോമാണ്. അതേ സമയം, ഇന്ന് ഏറ്റവും ജനപ്രിയമായ പ്രോട്ടോക്കോളുകളിൽ ഒന്നാണ് എംഎസ്എസ്.

MPEG-DASH

സ്ട്രീമിംഗ് പ്രോട്ടോക്കോളുകളുടെ മേഖലയിലെ ഏറ്റവും പുതിയ സുപ്രധാന പരിഹാരങ്ങളിലൊന്നാണ് MPEG-DASH, ഇവിടെ DASH എന്നത് HTTP-യിലൂടെയുള്ള ഡൈനാമിക് അഡാപ്റ്റീവ് സ്ട്രീമിംഗിനെ സൂചിപ്പിക്കുന്നു.

MPEG-DASH-ൻ്റെ പ്രയോജനം HTTP വഴിയുള്ള മീഡിയ പ്രക്ഷേപണത്തിനുള്ള ഏകീകൃത അന്താരാഷ്ട്ര നിലവാരമായി അംഗീകരിക്കപ്പെട്ടിരിക്കുന്നു എന്നതാണ്. ഇപ്പോൾ, ഇത് ഇതുവരെ വ്യാപകമല്ല, എല്ലാ പ്രക്ഷേപകരും ഇതിനെ പിന്തുണയ്ക്കുന്നില്ല. എന്നാൽ, എല്ലാ അക്കൗണ്ടുകളിലും, ഏതാനും വർഷങ്ങൾക്കുള്ളിൽ ഈ പ്രത്യേക നിലവാരം ഏറ്റവും ജനപ്രിയമായ ബ്രോഡ്കാസ്റ്റ് പ്രോട്ടോക്കോൾ ആയി മാറും.

MPEG-DASH കോഡെക്കിൻ്റെ തരത്തെ ആശ്രയിക്കുന്നില്ല, ഈ പ്രോട്ടോക്കോൾ ഉപയോഗിച്ച് മീഡിയ അയയ്‌ക്കാൻ നിങ്ങൾക്ക് അവയിലേതെങ്കിലും ഉപയോഗിക്കാം - H.264, HEVC/H.265, VP10

ഓൺലൈൻ പ്രക്ഷേപണത്തിനായി എപ്പോൾ HLS ഉപയോഗിക്കണം

    എല്ലാ സമയത്തും HLS ഉപയോഗിക്കാൻ ഞങ്ങൾ ശുപാർശ ചെയ്യുന്നു. ഏറ്റവും ആധുനികവും വ്യാപകമായി പിന്തുണയ്ക്കുന്നതുമായ മീഡിയ സ്ട്രീമിംഗ് പ്രോട്ടോക്കോൾ ആണ് ഇത്. നിങ്ങൾക്ക് മൊബൈൽ ഉപകരണങ്ങളിലേക്ക് പ്രക്ഷേപണം ചെയ്യണമെങ്കിൽ ഇതില്ലാതെ ചെയ്യാൻ കഴിയില്ല. നേറ്റീവ് HTML5 പ്ലെയർ പിന്തുണയും, തീർച്ചയായും, അഡാപ്റ്റീവ് ബിറ്റ്റേറ്റും ഒപ്റ്റിമൽ വ്യൂവിംഗ് ക്വാളിറ്റി ഉറപ്പാക്കുന്നു.

    പ്രാക്ടീസ് കാണിക്കുന്നത് പോലെ, RTMP-യുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ വീഡിയോയ്ക്കുള്ള ഏറ്റവും മികച്ച ഗതാഗതം HLS ആണ്. ഇതിനുള്ള കാരണങ്ങൾ:

    വളരെ ലളിതമായ പ്രോക്സിയിംഗ്, nginx വഴിയുള്ള കാഷിംഗ്. ഒന്നാമതായി, ക്യാമറ, ഒരു ഉപകരണം എന്ന നിലയിൽ, ഒരു ചട്ടം പോലെ, ഒരേസമയം 10-ലധികം കണക്ഷനുകൾ കൈകാര്യം ചെയ്യാൻ കഴിയില്ല. ഈ അർത്ഥത്തിൽ, പണമടച്ചുള്ള സൊല്യൂഷനുകളിലൂടെ മാത്രമേ RTMP സ്ട്രീമുകളുടെ ഗ്യാരണ്ടീഡ് പ്രോക്സിയിംഗ് സാധ്യമാകൂ, വലിയ ശേഷികൾ ആവശ്യമാണ്. പ്രത്യേക സെർവർ സോഫ്റ്റ്‌വെയർ ആവശ്യമില്ല.

    മുഴുവൻ സെർവർ ഇൻഫ്രാസ്ട്രക്ചറിൻ്റെയും ലളിതവൽക്കരണം. ആശയത്തിൻ്റെ അടിസ്ഥാനത്തിൽ, http വഴി പോർട്ട് 80 വഴി വീഡിയോ കഷണങ്ങളായി അയച്ചു. സ്റ്റാറ്റിക് ഡാറ്റ നൽകുന്നതിന് Nginx തന്നെ ഉത്തരവാദിയായിരിക്കാം. സ്റ്റാറ്റിക് ഫയലുകൾ (വീഡിയോ പീസുകൾ 50 കെബി വീതം) തിരികെ നൽകുന്നത് nginx-ന് വളരെ എളുപ്പമുള്ള കാര്യമാണ്.

    ബ്രൗസറിൽ നിന്ന് നേരിട്ട് മിക്ക മൊബൈൽ ഉപകരണങ്ങൾക്കും ഡെസ്‌ക്‌ടോപ്പുകൾക്കും ടാബ്‌ലെറ്റുകൾക്കുമുള്ള പിന്തുണ.

    തത്വത്തിൽ RTSP വഴി പ്രക്ഷേപണം ചെയ്യുന്നതിനേക്കാൾ വളരെ ലളിതമാണ്. പുഷ് (ഒരു സ്ട്രീം പ്രസിദ്ധീകരിക്കൽ) അല്ലെങ്കിൽ പുൾ (ഒരു സ്ട്രീം സ്വീകരിക്കൽ) പോലുള്ള നടപടിക്രമങ്ങൾ ഇല്ലാത്തതിനാൽ.

    കൂടുതൽ http സൗഹൃദ ഫോർമാറ്റ്.

പോരായ്മകൾ ഇനിപ്പറയുന്നവയാണ്:

    എന്നിരുന്നാലും, എല്ലാ ഉപകരണങ്ങളും ഈ ഫോർമാറ്റിനെ പിന്തുണയ്ക്കുന്നില്ല. 4.2-ൽ താഴെയുള്ള Android പതിപ്പുകൾ H.264 കോഡെക്കിനെയും ഗതാഗതത്തെയും ഔദ്യോഗികമായി പിന്തുണയ്ക്കുന്നില്ല, എന്നാൽ Android-ൽ, ഒരു ബ്രൗസറിന് പകരം, നിങ്ങൾക്ക് കാണുന്നതിന് ഒരു മൂന്നാം കക്ഷി ആപ്ലിക്കേഷൻ ഉപയോഗിക്കാം - ഉദാഹരണത്തിന് MX Player

    ഇതെല്ലാം ക്യാമറയെ ആശ്രയിച്ചിരിക്കുന്നു. ക്യാമറ ബഗ്ഗിയാണെങ്കിൽ, ഉദാഹരണത്തിന് Dlink DCS-3010, മുഴുവൻ സിസ്റ്റവും വളരെ മോശമായി പ്രവർത്തിക്കും (ffmpeg നിരന്തരം വീഴുന്നു). ഉദാഹരണത്തിന്, AXIS M1011-W, HIKVISION DS-2CD2412F-IW ക്യാമറകൾ ഈ കോമ്പിനേഷനിൽ നന്നായി പ്രവർത്തിക്കുന്നു (പരാതികളില്ലാതെ ഒരു മാസം വരെ (ഞാൻ ഇത് കൂടുതൽ കാലം പരീക്ഷിച്ചിട്ടില്ല)). കേബിൾ റൂട്ടിംഗിനും വലിയ പ്രാധാന്യമുണ്ട്. ഈ അർത്ഥത്തിൽ, ഞങ്ങൾ അനുയോജ്യമായ ഓപ്ഷൻ പരിഗണിക്കും.

എന്താണ് എച്ച്എൽഎസ് ഗതാഗതം

h.264 എൻകോഡിംഗിലെ വീഡിയോ സ്ട്രീം (വഴി: പ്രൊഫൈൽ ബേസ്‌ലൈൻ Android ഉപകരണങ്ങൾ മനസ്സിലാക്കുന്നു), *.ts എന്ന വിപുലീകരണത്തോടുകൂടിയ കഷണങ്ങളായി വിഭജിച്ചിരിക്കുന്നു, ഉദാഹരണത്തിന്, 5 സെക്കൻഡ് വീതം, live.m3u8-ൽ ഒരു പ്ലേലിസ്റ്റ് സൃഷ്‌ടിക്കുന്നു. ഈ ഭാഗങ്ങളുടെ തുടർച്ചയായ വിവരണം. പ്ലേലിസ്റ്റിൻ്റെ ദൈർഘ്യം മുൻകൂട്ടി നിശ്ചയിച്ചതാണ്, ഉദാഹരണത്തിന് 10 കഷണങ്ങൾ. വീഡിയോയുടെ 11-ാമത്തെ ഭാഗം ദൃശ്യമാകുമ്പോൾ, ഒരു വീഡിയോ ഭാഗം ഇല്ലാതാക്കി, പ്ലേലിസ്റ്റ് പുനഃസൃഷ്ടിക്കുന്നു. കൂടുതൽ വിശദാംശങ്ങൾ ഡെവലപ്പറുടെ വെബ്സൈറ്റിൽ കാണാം.

സിസ്റ്റം പ്രവർത്തിക്കുന്നതിന്, ഞങ്ങൾ സൈറ്റിൽ കാണാൻ ആഗ്രഹിക്കുന്ന രീതിയിൽ ക്യാമറകളിൽ നിന്ന് ചിത്രം കോൺഫിഗർ ചെയ്യും, ഇമേജ് ഫോർമാറ്റ്, ഇമേജ് നിലവാരം. ഞങ്ങൾ സെർവറിൽ റീകോഡ് ചെയ്യില്ല. അതുകൊണ്ടാണ് ആവശ്യമായ ചിത്രം നിർമ്മിക്കാൻ ക്യാമറ കണ്ടുപിടിച്ചത്. ക്യാമറകൾക്ക് സാധാരണയായി നിരവധി പ്രൊഫൈലുകൾ ഉണ്ട്. നിങ്ങൾക്ക് H.264-നായി ഒരു പ്രൊഫൈൽ, HLS-നും രണ്ടാമത്തേത് MPEG-DASH-നായി MPEG4-നും കോൺഫിഗർ ചെയ്യാം. വിശാലവും ഇടുങ്ങിയതുമായ ഇൻ്റർനെറ്റ് ചാനലിനായി നിങ്ങൾക്ക് വ്യത്യസ്ത ഗുണങ്ങൾ ക്രമീകരിക്കാനും കഴിയും. സ്വയം ചിന്തിക്കുക - സ്വയം തീരുമാനിക്കുക.

പ്രധാനം!വീണ്ടും എൻകോഡ് ചെയ്യേണ്ട ആവശ്യമില്ലാത്ത ഒരു ഇമേജ് ക്യാമറ ഔട്ട്പുട്ട് ചെയ്യണം.

ഉയർന്ന ലോഡിനായി ബ്ലോക്ക് ഡയഗ്രം

ക്യാമറ(rtsp) ----->

-----> ഒരു കണക്ഷൻ FFmpeg(rtsp->hls) -> Nginx(nginx-rtmp-module) ----->

-----> ഒരു വലിയ കാഷെ ഉള്ള ഒരു ഇൻ്റർമീഡിയറ്റ് nginx പ്രോക്സിയിലേക്കുള്ള ഒരു കണക്ഷൻ =====>

=====> നിരവധി JWPlayer(hls) ക്ലയൻ്റുകൾ

ഞങ്ങളുടെ സെർവർ ffmpeg ഉപയോഗിച്ച് ക്യാമറയുമായി ബന്ധിപ്പിക്കുകയും nginx hls ആപ്ലിക്കേഷനിൽ രജിസ്റ്റർ ചെയ്യുകയും ചെയ്യുന്നു. nginx ഒരു പ്രത്യേക ഡയറക്ടറിയിൽ കഷണങ്ങളും പ്ലേലിസ്റ്റും സൃഷ്ടിക്കുന്നു. പിന്നീട് ഈ കഷണങ്ങൾ പ്രോക്സി സെർവറിലേക്ക് അയയ്ക്കുന്നു. JWPlayer ഉപയോഗിച്ച് ക്ലയൻ്റുകൾ പ്രോക്സിയിലേക്ക് കണക്റ്റുചെയ്യുന്നു.

nginx ആപ്ലിക്കേഷൻ സജ്ജീകരിക്കുന്നു

nginx-rtmp-module ഉപയോഗിച്ച് നമുക്ക് nginx നിർമ്മിക്കാം. ഈ നടപടിക്രമം ലേഖനത്തിൽ വിശദമായി വിവരിച്ചിരിക്കുന്നു.

നമുക്ക് നിരവധി ക്യാമറകൾ ഉണ്ടെന്ന് പറയാം, അവയെ സീരിയൽ നമ്പർ കൊണ്ട് ഹരിക്കുക. 2 ക്യാമറകൾക്കുള്ള nginx കോൺഫിഗറേഷൻ ഞാൻ വിവരിക്കും. ലോക്കൽ കാഷെയിൽ ഞങ്ങൾ 5 മിനിറ്റ് സ്റ്റാറ്റിക് ഇമേജുകൾ കാഷെ ചെയ്യുന്നു, ചിത്രം 5 സെക്കൻഡിനുള്ളിൽ ലോഡ് ചെയ്തില്ലെങ്കിൽ, ഞങ്ങൾ ഒരു സ്റ്റാറ്റിക് സ്ക്രീൻസേവർ അയയ്ക്കുന്നു.

# നാനോ /etc/nginx/nginx.conf

നമുക്ക് nginx കോൺഫിഗറേഷൻ എഡിറ്റ് ചെയ്യാം

ഉപയോക്താവ് www - ഡാറ്റ ;

വർക്കർ_പ്രോസസ്സ് ഓട്ടോ;

pid/run/nginx. പിഡ് ; error_log /var/log/nginx/nginx_error. ലോഗ് ഡീബഗ്;

env PATH;

ഇവൻ്റുകൾ ( # multi_accept on ;) http ( access_log / var / log / nginx / access. log ; error_log / var / log / nginx / പിശക് proxy_cache_path / var / www / cache / ലോക്കൽ ലെവലുകൾ = 1 : 2 keys_zone = nginx_local_cache : 1 m inactive = 30 m max_size = 512 M ; proxy_temp_path / var / www / cache / local / tmp ; stat (rtmp_stat all; rtmp_stat_stylesheet stat. xsl;) ലൊക്കേഷൻ / സ്റ്റാറ്റ്. xsl മറ്റൊരു ലൊക്കേഷൻ റൂട്ടിലേക്ക് / etc / nginx ലേക്ക് മാറ്റാം html ; .

cameras_rtmp_applications ഉൾപ്പെടുന്നു. conf ; )) കാഷെക്കായി ഒരു പാത്ത് ഉണ്ടാക്കാം # mkdir /var/www/cache/local കാഷെയുടെ അവകാശങ്ങൾ ശരിയാക്കാം: # chmod -R 755 /var/www/cache/local# chown -R www-data:www-data /var/www/cache/local`ക്യാമറകൾക്കായി നമുക്ക് http ലൊക്കേഷനുകൾ സൃഷ്ടിക്കാം: # നാനോ ക്യാമറകൾ_http_locations.conf; proxy_set_header ഓതറൈസേഷൻ "ബേസിക്" ; error_page 502 504 404 @ fallback_img ;) # പ്ലേലിസ്റ്റ് നൽകുക - /1/hls/live.m3u8 അല്ലെങ്കിൽ /3/hls/live.m3u8 # പ്ലേലിസ്റ്റ് പ്രോക്‌സിയിൽ 10 സെക്കൻഡ് കാഷെ ചെയ്‌തു സ്ഥാനം ~* /hls/ . *\. m3u8 $ ( റീറൈറ്റ് "/(.*)/hls/(.*)$" / hls - $ 1 / $ 2 ബ്രേക്ക് ; # റീറൈറ്റ് അഭ്യർത്ഥന / 1 / hls / to / hls - 1 / root / tmp / ; കാലഹരണപ്പെടുന്നത് 10 ആഡ്_ഹെഡർ കാഷെ - കൺട്രോൾ പബ്ലിക്;# ക്യാമറകളിൽ നിന്ന് ഒരു വീഡിയോ നൽകുക - /1/hls/live-12345678.ts അല്ലെങ്കിൽ /2/hls/live-12345678.ts ലോക്കൽ കമ്പ്യൂട്ടറിൽ # കാഷെ ചെയ്യേണ്ടതില്ല# കഷണം പ്രോക്സിയിൽ 3 മിനിറ്റ് കാഷെ ചെയ്യുന്നു

സ്ഥാനം ~* /hls/ . *\. ts $ ( തിരുത്തിയെഴുതുക "/(.*)/hls/(.*)$" / hls - $ 1 / $ 2 ബ്രേക്ക് ; റൂട്ട് / tmp / ; 3 മീറ്റർ കാലഹരണപ്പെടുന്നു ; add_header Cache - കൺട്രോൾ പബ്ലിക് ;)

ചിത്രമില്ലെങ്കിൽ # ലൊക്കേഷൻ എന്ന് പേരിട്ടു

ലൊക്കേഷൻ @ fallback_img (തിരിച്ചെഴുതുക (. +) / ഫാൾബാക്ക്. jpg ബ്രേക്ക്; റൂട്ട് / etc / nginx / നമ്മുടെ ക്യാമറകൾക്കുള്ള ആപ്ലിക്കേഷനുകൾ ഉപയോഗിച്ച് rtmp സെർവർ കോൺഫിഗറേഷനായി നമുക്ക് ഒരു hls ഫയൽ സൃഷ്ടിക്കാം: # നാനോ ക്യാമറകൾ_rtmp_applications.confചങ്ക്_വലിപ്പം 4000;ആപ്ലിക്കേഷൻ hls_1 ( ലൈവ് ഓൺ ; 10 എം എസ് സമന്വയിപ്പിക്കുക ; exec_static ffmpeg - i rtsp : നമ്മുടെ ക്യാമറകൾക്കുള്ള ആപ്ലിക്കേഷനുകൾ ഉപയോഗിച്ച് rtmp സെർവർ കോൺഫിഗറേഷനായി നമുക്ക് ഒരു hls ഫയൽ സൃഷ്ടിക്കാം: # നാനോ ക്യാമറകൾ_rtmp_applications.conf//അഡ്മിൻ:[ഇമെയിൽ പരിരക്ഷിതം]

:554/live1.sdp -c കോപ്പി -f flv -an rtmp://localhost:1935/hls_1/live 2>>/var/log/nginx/ffmpeg_1.log;

എച്ച്എൽഎസ് ഓൺ;

hls_path /tmp/hls - 1/ ;

#EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:35 #EXT-X-TARGETDURATION:5 #EXTINF:5.224, ലൈവ് - 16602660. ts #EXTINF:5.246, #EXTINFts820.0728 :5.280, ലൈവ് - 17544960. ts #EXTINF:5.251, ലൈവ് - 18020160. ts #EXTINF:5.228, ലൈവ് - 18492750. ts #EXTINF:5.242, ലൈവ് - 1896ts3270.

ക്യാമറകൾ വീഴുന്നതിലെ പ്രശ്നം പരിഹരിക്കുന്നു

ഗ്ലിച്ചി ക്യാമറ മാറ്റുക എന്നതാണ് ഏറ്റവും നല്ല പരിഹാരം. 90% കേസുകളിലും ഇത് സഹായിക്കുന്നു. ഒരു വഴിയുമില്ലെങ്കിൽ നിങ്ങൾ എങ്ങനെയെങ്കിലും മുന്നോട്ട് പോകേണ്ടതുണ്ടെങ്കിൽ, ഇനിപ്പറയുന്ന പരിഹാരം സഹായിക്കും.

ഈ പരിഹാരം രണ്ട് പൂരകങ്ങൾ ഉൾക്കൊള്ളുന്നു:

    ഓരോ ക്യാമറയ്ക്കും ഒരു പ്രത്യേക nginx പ്രോസസ്സും സ്റ്റാറ്റിക് ഡാറ്റ തിരികെ നൽകുന്നതിനുള്ള ഒരു പൊതു പ്രക്രിയയും പ്രവർത്തിപ്പിക്കുക. അതായത്, രണ്ട് ക്യാമറകൾക്ക് rtmp സെർവറുകൾ ഉപയോഗിച്ച് വെവ്വേറെ കോൺഫിഗറുകൾ എഴുതുക, ഒന്ന് http ഉപയോഗിച്ച്. അപ്പോൾ ഗ്ലിച്ചി ക്യാമറ മൊത്തത്തിലുള്ള പ്രക്രിയയെ ബാധിക്കില്ല.

    ക്യാമറയിൽ നിന്നുള്ള സ്ട്രീം അതിൻ്റെ തകരാറുകളുടെ ഫലമായി തടസ്സപ്പെട്ടാൽ (അമിത ചൂടാക്കൽ, മോശം കേസിംഗ്, അപര്യാപ്തമായ PoE പവർ സപ്ലൈ മുതലായവ), ക്യാമറ വീഴും, ffmpeg ചൈൽഡ് പ്രോസസ്സ് പാക്കറ്റുകൾ നിരസിക്കുകയും വീഡിയോ കഷണങ്ങൾ റെക്കോർഡുചെയ്യുന്നത് nginx നിർത്തുകയും ചെയ്യും. . ffmpeg പ്രക്രിയ അവസാനിക്കുമ്പോൾ, ചങ്ക്സ് ഡയറക്ടറിയിൽ നിന്ന് nginx എല്ലാ ഫയലുകളും ഇല്ലാതാക്കും. ക്രോൺ ഉപയോഗിച്ച് ഫോൾഡർ വൃത്തിയാക്കുന്നതിൻ്റെ ഈ നിമിഷം ഞങ്ങൾ കണക്കാക്കുകയും ആവശ്യമായ nginx പ്രോസസ്സ് പുനരാരംഭിക്കുകയും ചെയ്യുന്നു.

ഓരോ ക്യാമറയ്ക്കും, /etc/init.d/ എന്നതിൽ ഒരു എക്‌സിക്യൂട്ടബിൾ സ്‌ക്രിപ്റ്റ് സൃഷ്‌ടിക്കുന്നു, ക്യാമറ_1, camera_2 എന്ന് പേരുള്ള nginx-ൻ്റെ ഒരു പകർപ്പ്

# cp /etc/init.d/nginx /etc/init.d/camera_1 # cp /etc/init.d/nginx /etc/init.d/camera_2 # chmod +x /etc/init.d/camera_1 # chmod +x /etc/init.d/camera_2

nginx സ്റ്റാർട്ടപ്പ് സ്ക്രിപ്റ്റ് എഡിറ്റുചെയ്യുന്നു.

nano/etc/init. d/nginx

DAEMON_OPTS വേരിയബിൾ മാറ്റുക. പ്രധാന nginx ഡെമൺ എല്ലാ സ്റ്റാറ്റിക് ഡാറ്റയും നൽകും. ക്യാമറകളുടെ ഉത്തരവാദിത്തമുള്ള ഡെമണുകളെ ഇത് ആരംഭിക്കുകയും നിർത്തുകയും ചെയ്യും./ init . d / camera_1 സ്റ്റോപ്പ് fi എങ്കിൽ [ - f "/etc/init.d/camera_2" ];

പിന്നെ / etc / init . d/camera_2 stop fi

do_reload ഫംഗ്‌ഷനിലേക്ക് ചേർക്കുക:

[ - f "/etc/init.d/camera_1" ] എങ്കിൽ # ക്യാമറകൾ റീലോഡ് ചെയ്യുക;

പിന്നെ / etc / init . [- f "/etc/init.d/camera_2" ] എങ്കിൽ d / camera_1 fi റീലോഡ് ചെയ്യുക;

പിന്നെ / etc / init . d/camera_2 fi റീലോഡ് ചെയ്യുക

ക്യാമറ 1 ക്യാമറ_1, ക്യാമറ 2 ക്യാമറ_2 എന്നിവയ്‌ക്കായി ഞങ്ങൾ nginx ലോഞ്ച് സ്‌ക്രിപ്റ്റ് എഡിറ്റ് ചെയ്യുന്നു.

# നാനോ /etc/init.d/camera_1

DAEMON_OPTS, DESC വേരിയബിളുകൾ മാറ്റുക

DESC = "CAMERA-1 നുള്ള ക്യാമറ_1" DAEMON_OPTS = "-c /etc/nginx/nginx_1.conf" ഉദാഹരണം പിന്തുടർന്ന് ക്യാമറ 2 camera_2-നുള്ള nginx സ്റ്റാർട്ടപ്പ് സ്ക്രിപ്റ്റ് എഡിറ്റ് ചെയ്യാം.

തിരഞ്ഞ പദം DIR-PROCESS-NAME, ഡയറക്‌ടറി, റീബൂട്ട് ചെയ്യേണ്ട പ്രക്രിയയുടെ പേര് എന്നിവ സ്‌പെയ്‌സ് കൊണ്ട് വേർതിരിച്ച് അവ സൂചിപ്പിക്കുന്നു.

പരീക്ഷ:

# സർവീസ് nginx ആരംഭം # സേവന ക്യാമറ_1 പുനരാരംഭിക്കുന്നു * ക്യാമറയ്‌ക്കായി ക്യാമറ_1 പുനരാരംഭിക്കുന്നു - 1 കോൺഫിഗറേഷൻ nginx # സേവന ക്യാമറ_2 പുനരാരംഭിക്കുന്നു * ക്യാമറയ്‌ക്കായി ക്യാമറ_2 പുനരാരംഭിക്കുന്നു - 2 കോൺഫിഗറേഷൻ nginx

ക്യാമറകൾ റീബൂട്ട് ചെയ്യുന്ന ഒരു സ്ക്രിപ്റ്റ്. ഇത് കഷണങ്ങളുള്ള ഫോൾഡറുകളിലൂടെ കടന്നുപോകുന്നു, *.m3u8 ഫയലുകൾ ഇല്ലാത്തവ തിരയുന്നു. ഫോൾഡറിൽ ഫയലുകളൊന്നും ഇല്ലെങ്കിൽ, അത് DIR-PROCESS-NAME എന്ന ലൈൻ ഉപയോഗിച്ച് പ്രധാന ഡെമണിൻ്റെ കോൺഫിഗറേഷൻ ഉപയോഗിച്ച് അനുബന്ധ ഡെമണിനായി തിരയുന്നു. അത് റീബൂട്ട് ചെയ്യുന്നു.

# nano /script/cameras_reloader.sh

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

#!/bin/bash PATH = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin മാസ്ക് = "*.m3u8" dir = "/tmp/ hls-*" ഫംഗ്‌ഷൻ find_process())( process_str = $(cat /etc/nginx/nginx_0.conf | grep "# DIR-PROCESS-NAME" | grep $1 | cut -d" " -f4) echo $process_str ) ഇതിനായി $dir-ൽ hls_dir; do find_result = $(കണ്ടെത്തുക $hls_dir -name $mask -type f) എങ്കിൽ [ -z $find_result ] ; തുടർന്ന് പ്രോസസ്സ് = $(find_process $hls_dir) സേവനം $പ്രക്രിയ പുനരാരംഭിക്കുക 15 സെക്കൻഡ് ഉറങ്ങിക്കഴിഞ്ഞു

MPEG-DASH-മായി HLS-ൻ്റെ താരതമ്യം

MPEG-4-നുള്ള ഗതാഗതമായി Google സൃഷ്ടിച്ച HLS-ൻ്റെ അനലോഗ് ആണ് MPEG-DASH. ഈ ഗതാഗതം വ്യാപകമല്ല, പ്രായോഗികമായി പിന്തുണയ്ക്കുന്നില്ല. അദ്ദേഹത്തിൻ്റെ പ്രത്യയശാസ്ത്രം ഒന്നുതന്നെയാണ്, സ്ട്രീം കഷണങ്ങളായി തകർക്കുക, കൂടുതൽ കഷണങ്ങൾ മാത്രമേയുള്ളൂ, വീഡിയോയ്ക്ക് പ്രത്യേക കഷണങ്ങൾ, ഓഡിയോയ്ക്ക് പ്രത്യേകം. nginx-rtmp-module-ൽ ഈ ഫോർമാറ്റ് HLS-ന് സമാനമായി ക്രമീകരിച്ചിരിക്കുന്നു.

ശ്രമിക്കുക, പകർത്തുക, ധൈര്യപ്പെടുക!

ലേഖനം നിങ്ങൾക്ക് ഉപയോഗപ്രദമായിരുന്നെങ്കിൽ, ദയവായി പരസ്യത്തിൽ ക്ലിക്കുചെയ്യുക. നന്ദി!

സേവനങ്ങൾ നൽകൽ IP ടെലിവിഷൻഇൻറർനെറ്റിലൂടെയും പ്രാദേശിക കമ്പ്യൂട്ടർ ശൃംഖലകളിലൂടെയും കൂടുതൽ വ്യാപകമായ രൂപങ്ങൾ നേടുന്നു. സിഐഎസ് രാജ്യങ്ങളിൽ വീഡിയോ പ്രക്ഷേപണം ചെയ്യാത്ത വലിയ ദാതാക്കളൊന്നും അവശേഷിക്കുന്നില്ല മൾട്ടികാസ്റ്റ്അവരുടെ പ്രാദേശിക നെറ്റ്‌വർക്കുകളിലേക്ക്, അതായത് സേവനം നൽകുന്നു IPTV. എന്നാൽ നിങ്ങളുടെ പ്രാദേശിക നെറ്റ്‌വർക്കിന് പുറത്ത് ടിവി സേവനങ്ങൾ നൽകുന്നത് ചില ഹാർഡ്‌വെയർ ചെലവുകളും ആവശ്യമായ പ്രക്ഷേപണ നിലവാരം ഉറപ്പാക്കുന്നതിനുള്ള ബുദ്ധിമുട്ടുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു.

HTTP ലൈവ് സ്ട്രീമിംഗ്എന്നും അറിയപ്പെടുന്നു എച്ച്.എൽ.എസ്., ആപ്പിൾ നടപ്പിലാക്കിയ ഒരു ആശയവിനിമയ പ്രോട്ടോക്കോൾ ആണ്. മൊത്തത്തിലുള്ള സ്ട്രീമിനെ ചെറിയ ഡൗൺലോഡ് ഫയലുകളുടെ ഒരു ശ്രേണിയായി തിരിച്ചിരിക്കുന്നു എന്നതാണ് ഇതിൻ്റെ പ്രത്യേകത, ഓരോ ഡൗൺലോഡും ട്രാൻസ്പോർട്ട് സ്ട്രീമിൻ്റെ ഒരു ചെറിയ ശകലം ലോഡ് ചെയ്യുന്നു. ഒരു സ്ട്രീം പ്ലേ ചെയ്യുമ്പോൾ, ലഭ്യമായ ബിറ്റ് റേറ്റുമായി പൊരുത്തപ്പെടാൻ അനുവദിക്കുന്ന, വ്യത്യസ്ത ബിറ്റ് നിരക്കിൽ റെക്കോർഡ് ചെയ്‌ത, ഒരേ മെറ്റീരിയൽ അടങ്ങുന്ന വിവിധ ബദൽ സ്ട്രീമുകളിൽ നിന്ന് ക്ലയൻ്റിന് തിരഞ്ഞെടുക്കാനാകും. ഒരു സ്ട്രീമിംഗ് സെഷൻ്റെ തുടക്കത്തിൽ, ലഭ്യമായ വിവിധ സബ്‌സ്ട്രീമുകൾക്കായി മെറ്റാഡാറ്റ അടങ്ങിയ ഒരു മെച്ചപ്പെടുത്തിയ M3U (m3u8) പ്ലേലിസ്റ്റ് ലോഡുചെയ്‌തു. അഭ്യർത്ഥനകൾ സാധാരണ HTTP പ്രവർത്തനങ്ങൾ മാത്രമേ ഉപയോഗിക്കുന്നുള്ളൂ എന്നതിനാൽ, RTP പോലുള്ള UDP പ്രോട്ടോക്കോളുകൾക്ക് വിരുദ്ധമായി സ്റ്റാൻഡേർഡ് HTTP ട്രാഫിക് അനുവദിക്കുന്ന ഏത് ഫയർവാളും പ്രോക്സിയും മറികടക്കാൻ HTTP ലൈവ് സ്ട്രീമിംഗിന് കഴിയും.

HTTP അടിസ്ഥാനമാക്കിയുള്ളതാണ് HLS. എഇഎസ് ഉപയോഗിച്ചുള്ള ഒരു സ്റ്റാൻഡേർഡ് എൻക്രിപ്ഷൻ മെക്കാനിസവും എച്ച്ടിടിപിഎസ് അല്ലെങ്കിൽ എച്ച്ടിടിപി കുക്കികൾ ഉപയോഗിച്ചുള്ള സുരക്ഷാ കീ വിതരണ രീതിയും എച്ച്എൽഎസ് നിർവചിക്കുന്നു, ഇത് ഒരുമിച്ച് ലളിതമായ പകർപ്പവകാശ സംരക്ഷണ സംവിധാനം നൽകുന്നു.

HLS എങ്ങനെയാണ് പ്രവർത്തിക്കുന്നത്?

ഈ സാങ്കേതികവിദ്യയുടെ ഗുണങ്ങളും ദോഷങ്ങളും എന്താണെന്ന് ഇപ്പോൾ നമുക്ക് കണ്ടെത്താം. നേട്ടങ്ങൾ നിസ്സംശയമായും വ്യക്തവുമാണ്. ഇത് ഒന്നാമതായി, ലൈനിൻ്റെയും സ്വീകരിക്കുന്ന ഉപകരണത്തിൻ്റെയും ഗുണങ്ങളിലേക്കുള്ള ഡാറ്റാ ട്രാൻസ്മിഷൻ വേഗതയുടെ പൊരുത്തപ്പെടുത്തലാണ്, രണ്ടാമതായി, അന്തർനിർമ്മിത പകർപ്പവകാശ സംരക്ഷണ സംവിധാനങ്ങൾ. മൂന്നാമതായി, വീതി നിയന്ത്രണങ്ങളുള്ള റൂട്ടർ ആവശ്യമില്ല മൾട്ടികാസ്റ്റ് സ്ട്രീംമൾട്ടികാസ്റ്റ് ഉപയോഗിച്ചുള്ള ഐപി ടെലിവിഷൻ പ്രക്ഷേപണത്തിൻ്റെ കാര്യത്തിൽ മൾട്ടികാസ്റ്റ് സ്ട്രീമുകൾ വഴി മുഴുവൻ ചാനൽ വീതിയും ആഗിരണം ചെയ്യുന്നത് ഒഴിവാക്കാൻ WI_FI വഴി സഹായിക്കും. ഫംഗ്ഷനുള്ള ഒരു അധിക ഉപകരണത്തിൻ്റെ ആവശ്യമില്ല UDP പ്രോക്സിസബ്‌സ്‌ക്രൈബർമാരുടെ ലോക്കൽ നെറ്റ്‌വർക്കിൽ UDP പ്രോക്‌സി ഫംഗ്‌ഷൻ നിർവ്വഹിക്കുന്ന റൂട്ടറിലോ മറ്റ് ഉപകരണത്തിലോ ഉള്ള ഹാർഡ്‌വെയർ ലോഡിനെ ഇത് ബാധിക്കുമെങ്കിലും, ഒരു മൾട്ടികാസ്റ്റ് സ്ട്രീം എച്ച്ടിടിപിയിലേക്ക് പരിവർത്തനം ചെയ്യുന്നതിന്, മൊബൈൽ ഉപകരണങ്ങൾക്ക് ഇത് പലപ്പോഴും ആവശ്യമാണ്. HLS സ്റ്റാൻഡേർഡ് വളരെ വ്യാപകമായിത്തീർന്നിരിക്കുന്നു, മിക്കവാറും എല്ലാ ആധുനിക വീഡിയോ പ്ലെയറുകളും IPTV സെറ്റ്-ടോപ്പ് ബോക്സുകളും പിന്തുണയ്ക്കുന്നു.

IPTV സെറ്റ്-ടോപ്പ് ബോക്സ്

ഒരു പ്രധാന പോരായ്മ സബ്‌സ്‌ക്രൈബർമാർക്ക് മൾട്ടിമീഡിയ സെറ്റ്-ടോപ്പ് ബോക്സുകളും സ്മാർട്ട് ടിവി സെറ്റ്-ടോപ്പ് ബോക്സുകളും കാലഹരണപ്പെട്ട ഫേംവെയറുകളോ അല്ലെങ്കിൽ എച്ച്എൽഎസ് മാനദണ്ഡങ്ങളെ പിന്തുണയ്ക്കാത്തതോ ശരിയായി പിന്തുണയ്ക്കാത്തതോ ആയ കാലഹരണപ്പെട്ട ഡിസൈനുകളോ ഉള്ളതാണ്. കൂടാതെ, അഭ്യർത്ഥിച്ച വീഡിയോ ശകലത്തിൻ്റെ ദൈർഘ്യത്തേക്കാൾ കുറഞ്ഞ സമയ ഇടവേളകളിൽ ലൈൻ സവിശേഷതകൾ മാറുന്ന സാഹചര്യങ്ങളിൽ സ്ഥിരതയുള്ള പ്രക്ഷേപണത്തിനായി ഗുണനിലവാരം ശരിയായി തിരഞ്ഞെടുക്കാനുള്ള കഴിവില്ലായ്മയാണ് പ്രശ്നങ്ങളിലൊന്ന്.

തത്സമയം ഓൺലൈൻ പ്രക്ഷേപണങ്ങൾ സംഘടിപ്പിക്കുന്നതിനും, വീഡിയോ ഓൺ ഡിമാൻഡ് (വോഡ്), വീഡിയോ സ്ട്രീമുകൾ റെക്കോർഡ് ചെയ്യുന്നതിനും, നിങ്ങൾക്ക് nginx-rtmp-module മൊഡ്യൂളിനൊപ്പം nginx ഉപയോഗിക്കാം.

മീഡിയ സെർവറുകൾ

ഇന്ന് നിരവധി ജനപ്രിയ മീഡിയ സെർവറുകൾ ഉണ്ട്, അവയിലൊന്നിൽ നിങ്ങൾക്ക് കൂടുതൽ വായിക്കാൻ കഴിയും. തത്സമയം ഓൺലൈൻ പ്രക്ഷേപണങ്ങൾ സൃഷ്ടിക്കാൻ മീഡിയ സെർവറുകൾ ആവശ്യമാണ്.

വ്യത്യസ്ത ഫംഗ്‌ഷനുകൾ ഉൾപ്പെടുന്ന പണമടച്ചുള്ളതും സൗജന്യവുമായ മീഡിയ സെർവറുകൾ ഉണ്ട്. ഇന്ന് നമ്മൾ ഒരു സൌജന്യവും നല്ലതുമായ ഒരു പരിഹാരത്തെക്കുറിച്ച് സംസാരിക്കും.

Ngnix-rtmp

ഒരു മീഡിയ സെർവറിൻ്റെ അടിസ്ഥാന പ്രവർത്തനം സ്വതന്ത്ര സോഫ്‌റ്റ്‌വെയർ ഉപയോഗിച്ചും നടപ്പിലാക്കാവുന്നതാണ് - Ngnix-rtmp-module module, നിലവിൽ RTMP, HLS പോലുള്ള സ്ട്രീമിംഗ് പ്രോട്ടോക്കോളുകളെ പിന്തുണയ്ക്കുന്നു.

അതിനാൽ, Ngnix-rtmp (Ngnix വെബ് സെർവർ + Ngnix-rtmp-module മൊഡ്യൂൾ) ഉപയോഗിച്ച്, നിങ്ങൾക്ക് RTMP, HLS എന്നിവ വഴി ഉപയോക്തൃ ഉപകരണങ്ങളിലേക്ക് പ്രക്ഷേപണം സംഘടിപ്പിക്കാൻ കഴിയും. പ്രോട്ടോക്കോളുകളുടെയും അവയെ പിന്തുണയ്ക്കുന്ന ഉപകരണങ്ങളുടെയും ഒരു സംഗ്രഹ പട്ടിക ലേഖനത്തിൽ കാണാം. കൂടാതെ, എൻ്റെ ഭാവി ലേഖനങ്ങളിലൊന്നിൽ, Ngnix-rtmp-module മൊഡ്യൂളിൻ്റെയും മറ്റ് മീഡിയ സെർവറുകളുടെയും പ്രവർത്തനക്ഷമതയുടെ ഒരു താരതമ്യ പട്ടിക തയ്യാറാക്കാൻ ഞാൻ പദ്ധതിയിടുന്നു.

HLS പ്രോട്ടോക്കോൾ വഴിയുള്ള ഓൺലൈൻ പ്രക്ഷേപണം

Nginx-rtmp-module ഉപയോഗിച്ച് HLS പ്രോട്ടോക്കോൾ ഉപയോഗിച്ച് ഒരു അഡാപ്റ്റീവ് ബിറ്റ്റേറ്റ് ഉപയോഗിച്ച് ഒരു ലളിതമായ പ്രക്ഷേപണം എങ്ങനെ സംഘടിപ്പിക്കാമെന്ന് ഇന്ന് നമ്മൾ നോക്കും. ഒന്നാമതായി, ഞങ്ങൾ ഔദ്യോഗിക വെബ്സൈറ്റിൽ നിന്ന് Nginx വെബ് സെർവറിൻ്റെ സോഴ്സ് കോഡുകൾ ഡൗൺലോഡ് ചെയ്യേണ്ടതുണ്ട്. താഴെ നൽകിയിരിക്കുന്ന എല്ലാ കമാൻഡുകളും ലിനക്സിൽ എക്സിക്യൂട്ട് ചെയ്തിട്ടുണ്ട്.

  • wgethttp://nginx.org/download/nginx-1.4.1.tar.gz

ആർക്കൈവിൽ നിന്ന് ഫയലുകൾ എക്‌സ്‌ട്രാക്‌റ്റ് ചെയ്യുക.

  • ടാർ -zxvf nginx-1.4.1.tar.gz

nginx-rtmp-module മൊഡ്യൂളിൻ്റെ ഉറവിട ഫയലുകൾ ഉപയോഗിച്ച് zip ആർക്കൈവ് ഡൗൺലോഡ് ചെയ്യുക, ആർക്കൈവിൽ നിന്ന് ഫയലുകൾ എക്‌സ്‌ട്രാക്‌റ്റ് ചെയ്യുക.

  • wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

ഇപ്പോൾ നമുക്ക് മൊഡ്യൂളിനൊപ്പം nginx കംപൈൽ ചെയ്യേണ്ടതുണ്ട് nginx-rtmp-മൊഡ്യൂൾ , ഇത് ചെയ്യുന്നതിന്, nginx കോൺഫിഗർ ചെയ്യുമ്പോൾ, നിങ്ങൾ ഓപ്ഷനിൽ വ്യക്തമാക്കേണ്ടതുണ്ട് --ആഡ്-മൊഡ്യൂൾ ഉറവിട ഫയലുകളുടെ സ്ഥാനം nginx-rtmp-മൊഡ്യൂൾ , കൂടാതെ നിങ്ങൾ ഒരു അധിക ഓപ്ഷനും വ്യക്തമാക്കണം കൂടെ-http_ssl_module .

./configure --add-module=/home/nginx/nginx-rtmp-module-master --with-http_ssl_module

ഇൻസ്റ്റാൾ ചെയ്യുക

  • എല്ലാം പിശകുകളില്ലാതെ നടന്നാൽ, നിങ്ങൾക്ക് സെർവർ സജ്ജീകരിക്കാൻ ആരംഭിക്കാം. സ്ഥിരസ്ഥിതിയായി, സെർവർ ഡയറക്ടറിയിൽ ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ട്/usr/local/nginx . nginx.conf സെർവർ കോൺഫിഗറേഷൻ ഫയൽ ഡയറക്ടറിയിൽ സ്ഥിതിചെയ്യുന്നു/usr/local/nginx/conf . കോൺഫിഗറേഷൻ ഫയലിൻ്റെ rtmp:സെർവർ വിഭാഗത്തിലേക്ക് നമുക്ക് സൂക്ഷ്മമായി നോക്കാം. rtmp അഭ്യർത്ഥനകൾ സെർവർ സ്വീകരിക്കുന്ന പോർട്ട് ലിസൻ പാരാമീറ്റർ വ്യക്തമാക്കുന്നു.
  • അടുത്തതായി ഞങ്ങൾ ടെസ്റ്റ് ലൈവ് ആപ്ലിക്കേഷൻ സജ്ജീകരിക്കുന്നതിനുള്ള വിഭാഗം തുറക്കുന്നു. ഞങ്ങൾക്ക് ഒരു തത്സമയ സ്ട്രീം ഉണ്ടെന്ന് ഇവിടെ ഞങ്ങൾ സൂചിപ്പിക്കുന്നു - ലൈവ് ഓൺ പാരാമീറ്റർ, ഈ ആപ്ലിക്കേഷൻ്റെ hls പ്രോട്ടോക്കോളിനുള്ള പിന്തുണ ഞങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുന്നു - പാരാമീറ്ററിലെ hls.
  • പരാമീറ്റർ ഉപയോഗിക്കുന്നു hls_path സ്ട്രീമിൻ്റെ കഷണങ്ങൾ (കഷണങ്ങൾ) സ്ഥിതി ചെയ്യുന്ന ഡയറക്ടറി ഞങ്ങൾ സജ്ജമാക്കി. ഓരോ വീഡിയോ സ്ട്രീമിനുമുള്ള കഷണങ്ങൾ (കഷണങ്ങൾ) ഒരു പ്രത്യേക ഡയറക്‌ടറിയിൽ സ്ഥാപിക്കുന്നതിന്, നിങ്ങൾ നിർദ്ദേശം ഉൾപ്പെടുത്തേണ്ടതുണ്ട് hls_നെസ്റ്റഡ് ഓൺ .
  • അടുത്തതായി, പരാമീറ്റർ ഉപയോഗിച്ച് പ്രസിദ്ധീകരിക്കാൻ അനുവദിക്കുക നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ നിന്നും പാരാമീറ്റർ ഉപയോഗിച്ച് സ്ട്രീമുകൾ പ്രസിദ്ധീകരിക്കാൻ ഞങ്ങൾ നിങ്ങളെ അനുവദിക്കുന്നു എല്ലാം പ്രസിദ്ധീകരിക്കാതിരിക്കുക മറ്റുള്ളവരെ വീഡിയോകൾ പ്രസിദ്ധീകരിക്കുന്നതിൽ നിന്ന് ഞങ്ങൾ വിലക്കുന്നു.
  • ഇനി നമുക്ക് വിഭാഗം നോക്കാംhttp:സെർവർ . പരാമീറ്ററിൽ കേൾക്കുക സെർവറിന് ഏത് പോർട്ടിൽ ലഭിക്കുമെന്ന് സൂചിപ്പിക്കേണ്ടത് ആവശ്യമാണ്http അഭ്യർത്ഥിക്കുന്നു. ഞങ്ങൾ പോർട്ട് 8080 വ്യക്തമാക്കുന്നു. കൂടാതെ ഉദാഹരണ കോൺഫിഗറേഷൻ ഫയലിൽ നിന്ന് വിഭാഗം നീക്കുകhttp:server:location/hls . കോൺഫിഗറേഷൻ ഫയലിൻ്റെ എല്ലാ നിർദ്ദേശങ്ങളെയും കുറിച്ചുള്ള കൂടുതൽ വിശദമായ വിവരങ്ങൾ നിങ്ങൾക്ക് ഇവിടെ കാണാൻ കഴിയും:https://github.com/arut/nginx-rtmp-module/wiki/Directives.
  • സെർവർ ആരംഭിക്കാനുള്ള സമയമാണിത്. ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾ ഡയറക്ടറിയിലേക്ക് പോകേണ്ടതുണ്ട് /usr/local/nginx/bin കമാൻഡ് പ്രവർത്തിപ്പിക്കുക ./nginx .

ഇനി ഒരു ഉദാഹരണം നോക്കാം. ഞങ്ങൾ മൂന്ന് വീഡിയോ സ്ട്രീമുകൾ സെർവറിലേക്ക് അയയ്ക്കുന്നു:

  • ടെസ്റ്റ്1 256 kbit/s ബിറ്റ്റേറ്റിനൊപ്പം,
  • ടെസ്റ്റ്2 512 kbit/s ബിറ്റ്റേറ്റിനൊപ്പം,
  • ടെസ്റ്റ്3 1024 കെബിപിഎസ് ബിറ്റ്റേറ്റ്.

HLS പ്രോട്ടോക്കോൾ (ഉപകരണങ്ങൾ: Mac, iPad, iPhone) ഉപയോഗിക്കുന്ന ഒരു ക്ലയൻ്റിന് ഇൻ്റർനെറ്റ് കണക്ഷൻ്റെ ഗുണനിലവാരം അനുസരിച്ച് സ്ട്രീമുകൾക്കിടയിൽ ചലനാത്മകമായി മാറാൻ കഴിയുക എന്നതാണ് ഞങ്ങളുടെ ലക്ഷ്യം. ഇത് ചെയ്യുന്നതിന് നമുക്ക് ഡയറക്ടറിയിൽ ആവശ്യമാണ് /usr/local/nginx/html വിപുലീകരണത്തോടുകൂടിയ ഒരു ഫയൽ സൃഷ്ടിക്കുക m3u8 , ഉദാഹരണത്തിന് playlist.m3u8 , ഇനിപ്പറയുന്ന ഉള്ളടക്കത്തോടൊപ്പം:

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=256000,Resolution=640×480

hls/test1/index.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=512000,Resolution=640×480

hls/test2/index.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1024000,Resolution=640×480

hls/test3/index.m3u8

പ്രക്ഷേപണം കാണുക

വീഡിയോ സ്ട്രീമുകൾ കാണുന്നതിന്, സൈറ്റിൻ്റെ വെബ് പേജിൽ നിങ്ങൾ ഇനിപ്പറയുന്ന കോഡ് ഉൾച്ചേർക്കേണ്ടതുണ്ട്.

- നിങ്ങളുടെ nginx സെർവറിൻ്റെ IP വിലാസം.

[പ്ലേലിസ്റ്റിൻ്റെ പേര്]- മുമ്പത്തെ ഖണ്ഡികയിൽ സൃഷ്ടിച്ച ഫയലിൻ്റെ പേര് (playlist.m3u8).

ഒരു ലളിതമായ nginx.conf കോൺഫിഗറേഷൻ ഫയലിൻ്റെ ഒരു ഉദാഹരണം ചുവടെയുണ്ട്.

തൊഴിലാളി_പ്രക്രിയകൾ 1;

സെർവർ (

1935 കേൾക്കുക;

ആപ്ലിക്കേഷൻ ടെസ്റ്റ് ലൈവ് (

ജീവിക്കുക;

hls ഓൺ;

hls_path /tmp/hls;

hls_nested on;

പ്രസിദ്ധീകരിക്കാൻ അനുവദിക്കുക 10.10.146.148;

എല്ലാം പ്രസിദ്ധീകരിക്കാതിരിക്കുക;

സെർവർ (

കേൾക്കുക 8080;

സെർവർ_നാമം rtmp_test;

ചാർസെറ്റ് utf-8;

സ്ഥാനം/(

റൂട്ട് html;

സൂചിക സൂചിക.html index.htm;

സ്ഥാനം /എച്ച്എൽഎസ് (

തരങ്ങൾ (

ആപ്ലിക്കേഷൻ/vnd.apple.mpegurl m3u8;

അപരനാമം /tmp/hls;

ഉപസംഹാരം

ഈ ലേഖനം എൻ്റെ സഹപ്രവർത്തകനായ എവ്ജെനി പെട്രോവുമായി ചേർന്ന് എഴുതുകയും പ്രസിദ്ധീകരിക്കുകയും ചെയ്തു. വ്യത്യസ്ത പ്രോജക്റ്റുകളിൽ ഞങ്ങൾ ഈ മൊഡ്യൂൾ (Ngnix-rtmp) ഉപയോഗിക്കുന്നു. Ngnix-rtmp, Wowza സെർവറിനെക്കുറിച്ച് ആർക്കെങ്കിലും എന്തെങ്കിലും ചോദ്യങ്ങളുണ്ടെങ്കിൽ, എഴുതുക. നിങ്ങൾക്ക് എന്തെങ്കിലും കോൺഫിഗർ ചെയ്യാനോ മീഡിയ സെർവറുകളെക്കുറിച്ചും മൾട്ടിമീഡിയ സിസ്റ്റങ്ങളെക്കുറിച്ചും ഉപദേശം ലഭിക്കണമെങ്കിൽ, നിങ്ങൾക്ക് എന്നെയും ഞങ്ങളുടെ ടീമിനെയും ഇതുവഴി ബന്ധപ്പെടാം.

സാങ്കേതികമായി തികഞ്ഞ ആപ്ലിക്കേഷനുകൾ സൃഷ്ടിക്കുന്നത് സാധാരണയായി വളരെ ബുദ്ധിമുട്ടുള്ളതും സമയമെടുക്കുന്നതുമായ ജോലിയാണ്. അതേസമയം, ഉപയോഗപ്രദമായ വിവരങ്ങൾ പലപ്പോഴും പല സ്രോതസ്സുകളിൽ ചിതറിക്കിടക്കുന്നു. മറ്റ് കാര്യങ്ങൾക്കൊപ്പം, iOS-നുള്ള വീഡിയോ ആപ്ലിക്കേഷനുകളുടെ വികസനത്തിന് ഇത് ബാധകമാണ്. എച്ച്ടിടിപി ലൈവ് സ്ട്രീമിംഗ് കഴിവുകളുടെ മുഴുവൻ ശ്രേണിയും പ്രാഥമിക ഉറവിടങ്ങളുടെ പട്ടികയും കാര്യക്ഷമമായി ഉപയോഗിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്ന ഏറ്റവും പ്രധാനപ്പെട്ടതും ഉപയോഗപ്രദവുമായ വിവരങ്ങൾ ഈ ലേഖനത്തിൽ അടങ്ങിയിരിക്കുന്നു. ഉയർന്ന നിലവാരമുള്ളതും ഉപയോക്തൃ സൗഹൃദവുമായ വീഡിയോ സേവനങ്ങൾ സൃഷ്ടിക്കാൻ താൽപ്പര്യമുള്ള എല്ലാ വായനക്കാർക്കും ഈ മെറ്റീരിയലുകൾ ഉപയോഗപ്രദമാകും.

വീഡിയോ സേവനങ്ങളുടെ സൗകര്യവും ഇൻ്ററാക്ടിവിറ്റിയും വർദ്ധിപ്പിക്കുന്നത് വേഗത്തിലുള്ള ലോഞ്ച്, റിവൈൻഡ്, ബഫറിംഗിൻ്റെ അഭാവം എന്നിവയിലൂടെയാണ്. മികച്ച ഫലം നേടുന്നതിന്, ഇനിപ്പറയുന്ന പ്രവർത്തനങ്ങൾ നിർദ്ദേശിക്കുന്നു.

  • കുറഞ്ഞ വീഡിയോ നിലവാരത്തിൽ ആരംഭിക്കുക.ഒരു വീഡിയോ ആരംഭിക്കാൻ, കുറഞ്ഞത് ഒരു ചങ്ക് ആവശ്യമാണ്. അതനുസരിച്ച്, ഒരു ചങ്കിൻ്റെ വലുപ്പം ചെറുതാണെങ്കിൽ, വീഡിയോ വേഗത്തിൽ ആരംഭിക്കും. ആരംഭിക്കുന്ന സ്ട്രീമിൻ്റെ ബിറ്റ്റേറ്റ് കുറയ്ക്കുകയും ചങ്കിൻ്റെ ദൈർഘ്യം കുറയ്ക്കുകയും ചെയ്യുന്നത് വേഗത്തിലുള്ള വീഡിയോ ലോഞ്ചിലേക്ക് നയിക്കുന്നു. 4-8 സെക്കൻഡ് ചങ്ക് ദൈർഘ്യവും 200-300 Kbps ആരംഭ ബിറ്റ്റേറ്റും ഞങ്ങൾ ശുപാർശ ചെയ്യുന്നു. അതിനാൽ, വീഡിയോ പ്ലേ ചെയ്യാൻ ആരംഭിക്കുന്നതിന്, ഉപയോക്താവിന് പരമാവധി 300 കെബി ഡൗൺലോഡ് ചെയ്യേണ്ടതുണ്ട്.
  • പ്ലേലിസ്റ്റ് ഒപ്റ്റിമൈസേഷൻ.പ്ലേലിസ്റ്റുകൾക്ക് മൊത്തത്തിലുള്ള ഡാറ്റാ സ്ട്രീമിൻ്റെ ഒരു പ്രധാന ഭാഗം എടുക്കാൻ കഴിയും, പ്രത്യേകിച്ച് ചെറിയ ചങ്ക് വലുപ്പങ്ങളും ദീർഘകാല ഉള്ളടക്കവും (നിരവധി മണിക്കൂറുകൾ). മിക്ക കേസുകളിലും, ഒരു വീഡിയോ പ്ലെയറിലേക്ക് പ്ലേലിസ്റ്റുകൾ കൈമാറുമ്പോൾ, അവ ആർക്കൈവ് ചെയ്യാൻ ശുപാർശ ചെയ്യുന്നു.
  • കീ ഫ്രെയിമുകൾ.ഒരു സെഗ്‌മെൻ്റിന് കുറഞ്ഞത് ഒരു ഐഡിആർ ഫ്രെയിമെങ്കിലും ഉണ്ടായിരിക്കുന്നത് അഭികാമ്യമാണ്, സെഗ്‌മെൻ്റിൻ്റെ തുടക്കത്തിൽ തന്നെ. കൂടാതെ, സെല്ലുലാർ നെറ്റ്‌വർക്കുകളിൽ വീഡിയോ കൈമാറുമ്പോൾ, ഓരോ 3 സെക്കൻഡിലും ഒരു തവണയെങ്കിലും കീ ഫ്രെയിമുകൾ സൃഷ്ടിക്കാൻ ശുപാർശ ചെയ്യുന്നു.
  • ടിഎസ് ഓവർഹെഡ്. HTTP LS ഒരു കണ്ടെയ്‌നറായി MPEG TS ഉപയോഗിക്കുന്നു, അതിനാൽ TS ഓവർഹെഡ് കുറയ്ക്കേണ്ടത് വളരെ പ്രധാനമാണ് (കുറഞ്ഞ വീഡിയോ നിലവാരത്തിൽ പോലും 10% ൽ കുറവായിരിക്കണം). ഈ സാഹചര്യത്തിൽ, ട്രാഫിക് ഡമ്പുകൾ ഉപയോഗിച്ച് യഥാർത്ഥ ബിറ്റ്റേറ്റുകൾ അളക്കുന്നതും ഉപയോഗിച്ച പാക്കറുകൾ (സെഗ്മെൻ്ററുകൾ) ഒപ്റ്റിമൈസ് ചെയ്യുന്നതും മൂല്യവത്താണ്.
  • പ്ലേലിസ്റ്റിലെ ടാർഗെറ്റ് ദൈർഘ്യ പാരാമീറ്റർ.ഈ ക്രമീകരണം സ്റ്റാർട്ടപ്പ് സമയത്തെ ബാധിക്കുന്നു, എന്നാൽ താഴ്ന്ന ക്രമീകരണങ്ങൾ ബഫറിംഗിൻ്റെ സാധ്യത വർദ്ധിപ്പിക്കുന്നതിനാൽ, പ്രത്യേകിച്ച് ഉയർന്ന ലേറ്റൻസി ഉള്ള സെല്ലുലാർ നെറ്റ്‌വർക്കുകളിൽ ഇത് 10 സെക്കൻഡായി സജ്ജീകരിക്കാൻ ആപ്പിൾ ശുപാർശ ചെയ്യുന്നു. 20 സെക്കൻഡിൽ കൂടുതൽ ദൈർഘ്യമുള്ള സെഗ്‌മെൻ്റുകൾ സൃഷ്ടിക്കാനും ശുപാർശ ചെയ്യുന്നില്ല.
  • ഡൈനാമിക് ബിറ്റ്റേറ്റ്. iOS-ൽ നിർമ്മിച്ചിരിക്കുന്ന അഡാപ്റ്റീവ് സ്ട്രീമിംഗ് മെക്കാനിസം, വേരിയൻ്റ് പ്ലേലിസ്റ്റിലെ (പ്ലേലിസ്റ്റിൻ്റെ തന്നെ ട്രാഫിക് കണക്കിലെടുത്ത്) കൃത്യമായി വ്യക്തമാക്കിയ ബിറ്റ്റേറ്റുകളിൽ മികച്ച രീതിയിൽ പ്രവർത്തിക്കുന്നു. ഈ സാഹചര്യത്തിൽ, വ്യത്യസ്ത ബിറ്റ്റേറ്റുകളുള്ള സ്ട്രീമുകൾക്കായി, നിങ്ങൾ പരമാവധി മൂല്യത്തോട് അടുത്ത് ഒരു മൂല്യം വ്യക്തമാക്കേണ്ടതുണ്ട്. അല്ലെങ്കിൽ, നിലവിലെ വീഡിയോ സ്ട്രീം മാറ്റുന്നത് സംബന്ധിച്ച് തെറ്റായ തീരുമാനങ്ങൾ സാധ്യമാണ്. അയൽ ബിറ്റ്റേറ്റുകൾ വേഗതയിൽ 1.5 - 2 മടങ്ങ് വ്യത്യാസപ്പെട്ടിരിക്കണം.
  • ഓഡിയോ മാത്രം സ്ട്രീമുകൾ. HE-AAC ഓഡിയോ കോഡെക് കൂടുതൽ കാര്യക്ഷമവും മിക്ക ഉപകരണങ്ങളും പിന്തുണയ്ക്കുന്നതുമാണ്. ഓഡിയോ മാത്രമുള്ള ചാനലുകളുടെ ഡെലിവറി MPEG എലിമെൻ്ററി സ്ട്രീം ഉപയോഗിച്ച് നടപ്പിലാക്കാൻ ശുപാർശ ചെയ്യുന്നു, അല്ലാതെ MPEG ട്രാൻസ്‌പോർട്ട് സ്ട്രീം അല്ല (പ്രധാനമായും ചെറിയ ഓവർഹെഡ്).

നിങ്ങളുടെ വീഡിയോ പ്ലെയർ വികസിപ്പിച്ചെടുക്കുമ്പോൾ, നിങ്ങൾക്ക് HTTP ലൈവ് സ്ട്രീമിംഗ് ലോഗിൽ (accessLog) നിന്ന് ഉപയോഗപ്രദമായ വിവരങ്ങൾ ലഭിക്കും. ഓട്ടോമാറ്റിക് സ്വിച്ചിംഗ് എങ്ങനെ സംഭവിച്ചു, എന്ത് ബിറ്റ്റേറ്റുകൾ ഉപയോഗിച്ചു തുടങ്ങിയ വിവരങ്ങൾ ഇതിൽ അടങ്ങിയിരിക്കുന്നു. ലോഗിൽ ലഭ്യമായ വിവരങ്ങളെക്കുറിച്ചുള്ള വിശദാംശങ്ങൾ. ഈ ഡാറ്റയെ അടിസ്ഥാനമാക്കി, നിങ്ങളുടെ ഉപയോക്താക്കളിൽ നിന്ന് നിങ്ങൾക്ക് വീഡിയോ അനലിറ്റിക്സ് ഡാറ്റ ശേഖരിക്കാനാകും.

അധിക ശുപാർശകൾ
ഓൺലൈൻ വീഡിയോ പ്രക്ഷേപണങ്ങളുടെ കാര്യത്തിൽ, CDN-ലെ കാലതാമസം കാരണം ബഫറിംഗ് സാധ്യമാണ്, അതുപോലെ തന്നെ പ്ലേലിസ്റ്റ് അപ്‌ഡേറ്റ് സമയം വളരെ കുറവായ സാഹചര്യത്തിലും സെർവറിന് യഥാസമയം സെഗ്‌മെൻ്റുകൾ സൃഷ്ടിക്കാൻ സമയമില്ല. റിവൈൻഡ് മെക്കാനിസം ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിന്, നോൺ-ഇൻ്റേജർ (യഥാർത്ഥ) സെഗ്‌മെൻ്റ് ദൈർഘ്യ മൂല്യങ്ങൾ ഉപയോഗിക്കാൻ ശുപാർശ ചെയ്യുന്നു: അല്ലാത്തപക്ഷം ഒരു പിശക് ശേഖരിക്കപ്പെടാം.

നിങ്ങളുടെ ആപ്ലിക്കേഷൻ വ്യത്യസ്‌ത ഉപകരണങ്ങളിൽ ഉപയോഗിക്കാനാണ് ഉദ്ദേശിക്കുന്നതെങ്കിൽ, വ്യത്യസ്‌ത സ്‌ക്രീൻ റെസല്യൂഷനുകളിൽ നിങ്ങൾക്ക് ലിസ്റ്റിൽ വ്യത്യസ്‌ത വീഡിയോ നിലവാരം വ്യക്തമാക്കാനാകും. ഈ രീതിയിൽ, നിങ്ങൾക്ക് റെറ്റിന ഡിസ്പ്ലേയുള്ള ഐപാഡിലും താരതമ്യേന പഴയ ഐഫോണിലും വ്യത്യസ്ത വീഡിയോകൾ ഔട്ട്പുട്ട് ചെയ്യാൻ കഴിയും.

HTTP ലൈവ് സ്ട്രീമിംഗ് പ്രോട്ടോക്കോൾ തെറ്റ് സഹിഷ്ണുത ഉറപ്പാക്കുന്നതിനുള്ള സംവിധാനങ്ങളും നൽകുന്നു (ബാക്കപ്പ് വീഡിയോ ഉറവിടങ്ങൾ വ്യക്തമാക്കുന്നത്). നിങ്ങളുടെ സേവനങ്ങളുടെ വിശ്വാസ്യത മെച്ചപ്പെടുത്താൻ ഈ ഫീച്ചർ ഉപയോഗപ്രദമാകും.

അറിവിൻ്റെ ഉറവിടങ്ങൾ
വീഡിയോ ആപ്ലിക്കേഷനുകളിൽ HTTP ലൈവ് സ്ട്രീമിംഗ് ഉപയോഗിക്കുന്നതിനുള്ള മെറ്റീരിയലുകളുടെ ഒരു ചെറിയ ലിസ്റ്റ്:
HTTP ലൈവ് സ്ട്രീമിംഗ് ഡ്രാഫ്റ്റ്
HTTP ലൈവ് സ്ട്രീമിംഗ് പതിവായി ചോദിക്കുന്ന ചോദ്യങ്ങൾ
HLS-നുള്ള മികച്ച സമ്പ്രദായങ്ങൾ

അവസാനമായി, WWDC 2012-ൽ നിന്നുള്ള സൗജന്യ സാങ്കേതിക വീഡിയോ സെഷനുകൾ രജിസ്റ്റർ ചെയ്ത Mac/iOS/Safari ഡവലപ്പർമാർക്കായി ലഭ്യമാണെന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്, അതിൽ ധാരാളം ഉപയോഗപ്രദമായ വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു, പ്രത്യേകിച്ചും വീഡിയോയിൽ പ്രവർത്തിക്കുന്നതിനും HTTP ലൈവ് സ്ട്രീമിംഗ് ഉപയോഗിക്കുന്നതിനും.