24/7 የሚያስተላልፍ ስርዓት በቪዲዮዎች መካከል የሚገናኝ አይደለም፦ በቧንቧ (pipe) የሚመገብ አንድ ffmpeg
ቪዲዮ
ተጠናቋቸውን ቪዲዮዎች በቀንና በሌሊት የሚያጫውት ቀጥታ ማስተላለፊያ ሁለት ቀላል ዲዛይኖች አሉት፣ ሁለቱም አንድ ነገር ያጣሉ። ለእያንዳንዱ ቪዲዮ ffmpeg ማስጀመር በእያንዳንዱ ሽግግር RTMP ግንኙነትን ያቋርጣል። የconcat ዝርዝር በመጀመሪያ አንድ ጊዜ ብቻ ስለሚነበብ፣ አዲስ ቪዲዮ ለቀጣዩ እንደገና ማስጀመር ይጠብቃል።
ዲዛይኑ
እያንዳንዱ ቪዲዮ ወደ ስርዓቱ መጠን እና ፍሬም ሬት በአንድ ጊዜ ወደ MPEG-TS ይቀየራል፤ ቀጥ ያለ ቪዲዮ ከጥቁር ወሰኖች ይልቅ በራሱ ላይ በተደበዘዘ ቅጂ ላይ ይቀመጣል። አንድ ffmpeg ሂደት MPEG-TSን ከመደበኛ ግብዓቱ (standard input) ያነባል እና በቋሚ ቢትሬት (constant bitrate) እንደ ቀጥታ ግብዓት የሚጠበቀውን ሁኔታ ለማሟላት በየሁለት ሰከንዱ ኪፍሬም (keyframe) ያከናውናል። ትንሽ ማቅረቢያ (feeder) ዝግጁ የሆኑትን ፋይሎች በቧንቧው ውስጥ በተከታታይ፣ በእውነተኛ ጊዜ ፍጥነት ይጽፋል፣ በእያንዳንዱ ሽግግር ቀጣዩን ፋይል ይመርጣል፦ በመጀመሪያ ያልተጫወቱ ቪዲዮዎች፣ ከዚያም በዝቅተኛው የቅርብ ጊዜ የተጫወቱት። የffmpeg MPEG-TS አንባቢ እያንዳንዱ ፋይል የጊዜ ማህተሞቹ (timestamps) እንደገና እንደሚጀምሩ ስለሚያየው ያሸጋግራቸዋል፣ ስለዚህ ውጤቱ ያለ ማቋረጥ ይቀጥላል።
ዝርዝር አንድ፦ ከመጀመሪያው ባይት የሚመጣ ፍጥነት
የመጀመሪያው ስሪታችን ሰዓቱን ffmpeg ሲጀምር አስጀምሮ ነበር። የመጀመሪያውን ፋይል ማዘጋጀት ዘጠኝ ሰከንድ ስለወሰደ፣ ማቅረቢያው ዘጠኝ ሰከንድ እንደዘገየ ታስቦ ሁሉንም በአንድ ጊዜ ላከ። ሰዓቱን የመጀመሪያው ባይት ሲጻፍ ማስጀመር ችግሩን ፈትቷል፦ 53 ሰከንድ የሚወስድ ማሽከርከር 53 ሰከንድ ስርጭ አመርትቷል።
ዝርዝር ሁለት፦ በመገናኛው ላይ ያለው ኦዲዮ
በሽግግር ጊዜ፣ ቀጣዩ ፋይል ኦዲዮ ከቀዳሚው ፋይል ኦዲዮ መጨረሻ 17 ሚሊሰከንድ በፊት ጀምሮ ነበር። ኢንኮደሩ ግብዓቱ "ወደ ኋላ በጊዜ" እንደሄደ አስጠንቅቋል፣ ማክሰሩ (muxer) ደግሞ የጊዜ ማህተምን አስተካክሏል። በaresample=async=1:min_hard_comp=0.01:first_pts=0 ማስተካከያ (resampling) ማድረግ እንደዚህ ያሉትን መደራረቦች ኢንኮደሩ ከማየቱ በፊት ይቆርጣቸዋል ወይም ይሞላቸዋል። በአንድ ደቂቃ ትንሽ በላይ የሚወስድ ማሽከርከር ላይ በአምስት ሽግግሮች፣ በተቀበሉት ስርጭ ውስጥ ያሉት ሁሉም የኦዲዮ እና የቪዲዮ የጊዜ ማህተሞች (timestamps) ጨምረዋል፣ ስርጩም ያለ ምንም ስህተት ተቀርጾ (decoded) ተቀብሏል።
ዝርዝር ሶስት፦ አንዳንድ ማስጠንቀቂያዎች መደበኛ ናቸው
እያንዳንዱ ፋይል የMPEG-TS ቆጣሪዎቹን እና ሰዓቱን እንደገና ስለሚጀምር፣ ffmpeg በእያንዳንዱ ሽግግር "Packet corrupt" እና "timestamp discontinuity" ይዘግባል። እነዚህ መስመሮች የሚጠበቁ ናቸው፣ እና እውነተኛ ስህተቶች እንዲታዩ ለማድረግ ከሎግ (log) ውጭ እናደርጋቸዋለን።
የክትትል ስርዓት
ffmpeg ከወጣ ወይም ሂደቱ ለአንድ ደቂቃ ከቆመ፣ ስትሪሙ እየጨመሩ በሚሄዱ ማቆዪያዎች እንደገና ይጀምራል፤ ደጋጋሚ ከሆኑ ውድቀቶች በኋላ መልእክት ይላካል። በፈተናችን ማሸጊያውን (encoder) በእጅ ገደልነው፤ ስትሪሙ ሰባት ሰከንድ በኋላ ተመለሰ፣ እና በሂደት ውስጥ የተጨመረ ቪዲዮ ያለ እንደገና መገናኘት ወደ ዙር ውስጥ ገባ። እንደገና መጀመር አጭር እንደገና መገናኘት ስለሆነ፣ የYouTube ስርጭት በራስ-ሰር እንዲጀምር እና በራስ-ሰር እንዳይቆም አድርገው ያስቀምጡ። የስትሪም ቁልፍ በእያንዳንዱ የሎግ መስመር ውስጥ ተሸፍኗል፣ የffmpeg ራሱን ጨምሮ። Studio ይህን ቀጥታ ማስተዋወቂያ እንደ systemd አገልግሎት ያቀርባል።