हमने पीट टीवी कैसे किया

आप इस बारे में जान सकते हैं कि इंटरनेट टीवी चैनल का तकनीकी कार्यान्वयन कैसे हुआ, टीम ने किन कार्यों का सामना किया और इस लेख में विकास प्रक्रिया में किन उपकरणों और सेवाओं ने हमारी मदद की।


पीट टीवी एक सांस्कृतिक और मानवशास्त्रीय इंटरनेट परियोजना है जिसकी स्थापना किरिल किसल्याकोव ने की थी। यह एक लेखक की परियोजना है, क्रमशः, विषयों के चयन, पात्रों की पसंद और सामग्री की प्रस्तुति दोनों के लिए एक स्पष्ट व्यक्तिपरक दृष्टिकोण के साथ। चैनल में कला और शिक्षा, साहित्य और कविता, विज्ञान और प्रौद्योगिकी, संगीत और इतिहास, गैर-राजनीतिक समाचार और एक छोटे वीडियो प्रारूप में दिलचस्प तथ्यों के मुद्दों की एक विस्तृत श्रृंखला शामिल है।
फुटेज पीट टीवी सामग्री के संचय के साथ बाहर आता है। प्रत्येक अंक 3 से 15 मिनट तक चलने वाला एक छोटा वीडियो है, जिसे वीडियो आर्ट की शैली में बनाया गया है।

संकल्पना


कुछ मुद्दे लोगों के मोनोलॉग या संवाद हैं, कभी-कभी उन्हें दर्शक को संबोधित किया जाता है, और कभी-कभी वे एक-दूसरे के साथ संवाद करते हैं, इस तथ्य पर ध्यान नहीं देते हैं कि उन्हें गोली मार दी जा रही है। दस्तावेजी कार्यक्रमों के प्रारूप में समस्याएँ हैं, और साक्षात्कार के प्रारूप में मुद्दे हैं। कभी-कभी साक्षात्कारकर्ता फ्रेम में हो सकता है, वार्ताकार की तरह, और कभी-कभी वह दिखाई नहीं दे सकता है और दर्शक केवल एक आवाज सुनता है सवाल पूछ रहा है। सभी मुद्दों को एक विशिष्ट विषय के साथ कार्यक्रमों की श्रेणियों में विभाजित किया गया है।

आज, चैनल में ऐसे भाग हैं:


नृविज्ञान के दृष्टिकोण से, सबसे दिलचस्प मुद्दे कचरा में पोर्ट्रेट और ब्रदर्स हैं । इसलिए, मुद्दों की पहली श्रेणी में एक व्यक्ति कहता है कि वह क्या कहना चाहता है, और दूसरे में - वह क्या कह सकता है। दोनों प्रारूप अक्सर आपको किसी व्यक्ति को 5 मिनट में अधिक कहने की अनुमति देते हैं, जैसा कि वह खुद सुझाता है।

चैनल के दर्शक वे लोग हैं जो न केवल और न ही इतने सांस्कृतिक मुद्दों में रुचि रखते हैं क्योंकि विचार की ट्रेन का पालन करने का अवसर, संदर्भ और समय से फाड़ा, किसी भी युग में और दुनिया में कहीं भी प्रासंगिक है, इसलिए पीट पर वीडियो एक परिचालन क्रॉनिकल नहीं हैं सांस्कृतिक जीवन में क्या होता है, और लेखक की टीम या आमंत्रित पात्रों के विचार में अचानक क्या आता है, इसकी समीक्षा की जाती है। कभी-कभी, कहानियां अतीत से या भविष्य से हो सकती हैं, इससे उनकी प्रासंगिकता प्रभावित नहीं होती है।

Ation कार्यान्वयन


जब हमने परियोजना के आईटी भाग को विकसित करना शुरू किया, तो हमारे पास कई कार्य थे:



आज, परीक्षणों और प्रयोगों के परिणामस्वरूप, हम अपनी राय में, परियोजना की वास्तुकला (एक पूर्ण आकार की छवि यहां देखी जा सकती है ) में सबसे इष्टतम आए:



आइए देखें कि यह सब कैसे काम करता है और हमने ऐसा क्यों किया।

खिलाड़ी


परियोजना के लिए, इसका अपना HTML5 / JS प्लेयर विकसित किया गया था जो मुख्य वीडियो प्रारूपों का समर्थन करता है:

प्रत्येक प्रारूप के लिए, हम विभिन्न प्रस्तावों के साथ 4 वीडियो विकल्प बनाते हैं:

आंकड़ों के मुताबिक, HD और SD रिज़ॉल्यूशन वाले mp4 फॉर्मेट में सबसे ज्यादा व्यू वीडियो फाइल्स पर होते हैं।

Publishing वीडियो तैयार करना और प्रकाशित करना


कई संपादकों से मिलकर एक टीम रिलीज़ पर काम करती है। संपादक अलग-अलग शहरों में स्थित हैं और दूर से काम करते हैं। उनमें से प्रत्येक में एन्कोडिंग सर्वर (मीडिया एन्कोडिंग सर्वर) तक एफ़टीपी पहुंच है। मूल (कच्ची) वीडियो फ़ाइल के साथ, संपादक सर्वर पर एक टेक्स्ट फाइल भी जारी करता है जिसमें विमोचन और वीडियो के लिए एक पोस्टर होता है, जो मुख्य पृष्ठ पर प्रदर्शित होता है। FTP के माध्यम से सर्वर पर वीडियो अपलोड होने के बाद, स्वचालित वीडियो एन्कोडिंग की प्रक्रिया शुरू होती है:

  1. कोडिंग सर्वर पर, विशेष रूप से डिज़ाइन किए गए प्रोग्राम का उपयोग करके, वीडियो को विभिन्न प्रारूपों और प्रस्तावों में परिवर्तित किया जाता है।
  2. वीडियो एन्कोडिंग पूरा होने के बाद, प्रोग्राम वीडियो को Rackspace CDN समापन बिंदु पर डाउनलोड करना शुरू करता है, जहां से बाद में फाइलें स्थानीय CDN सर्वर पर जाती हैं।
  3. डाउनलोड पूरा होने के बाद, वेब एप्लिकेशन को एक नया रिलीज़ जोड़ने के लिए अनुरोध भेजा जाता है।
  4. जब एक वेब एप्लिकेशन द्वारा कॉल प्राप्त होता है, तो डेटाबेस में वीडियो जानकारी जोड़ने की प्रक्रिया की जाती है और रिलीज साइट पर जाती है।


वीडियो परिवर्तित करने के लिए एक कार्यक्रम बनाने की प्रक्रिया में, एक अलग पुस्तकालय में परिवर्तित करने के लिए जिम्मेदार कोड आवंटित करने का निर्णय लिया गया था। पुस्तकालय को X.Media.Encoding कहा जाता है और इसे nuget रिपॉजिटरी से स्वतंत्र रूप से डाउनलोड किया जा सकता है

The बादलों के लिए संक्रमण


जब हमने विकास शुरू किया, तो साइट को एक नियमित समर्पित सर्वर पर तैनात किया गया था, और सबसे पहले, यह पर्याप्त था। हालांकि, समय के साथ, यह स्पष्ट हो गया कि एक नियमित सर्वर में कई कमियां हैं:
  1. सबसे पहले, यह संबंधित वीडियो फ़ाइलों - रिलीज की डाउनलोड गति खराब थी
  2. दूसरी समस्या इस तथ्य से संबंधित थी कि संसाधन अनिवार्य रूप से पीक लोड मोड में काम करता है - नई रिलीज जारी होने पर आगंतुकों की गतिविधि अधिकतम होती है, और रिलीज के बीच न्यूनतम होती है। इस प्रकार, आपको या तो एक अधिक शक्तिशाली सर्वर खरीदने की आवश्यकता है, जिसके संसाधन ज्यादातर समय बेकार हो जाएंगे, या स्वचालित स्केलिंग का समर्थन करने वाले प्लेटफॉर्म पर स्विच करेंगे।


प्रारंभ में, मुद्दों की डाउनलोड गति के साथ समस्याओं को हल करने के लिए, हमने कंपनी CDN.UA की सेवाओं का उपयोग करने का निर्णय लिया, जो यूक्रेन में सामग्री वितरण सेवाएं प्रदान करता है। वैसे, वहाँ के लोग बहुत पेशेवर हैं और हमारी परियोजना के लिए उन्होंने अपने सर्वर पर कुछ विशिष्ट सेटिंग्स भी बनाई हैं, जो हमें फ्लैश प्लेयर का उपयोग करने के बजाय अपने स्वयं के एचटीएमएल -5 खिलाड़ी को वीडियो अपलोड करने की अनुमति देता है, जो उन्होंने मूल रूप से प्रस्तावित किया था। इस स्तर पर, यूक्रेनी दर्शकों के लिए, समस्याओं को देखना लगभग पूरी तरह से गायब हो गया। लेकिन जो लोग जॉर्जिया, इजरायल और अन्य देशों से रिलीज देखते थे, उनके लिए देखने में देरी नहीं हुई। इसलिए, अगला कदम वीडियो को अंतर्राष्ट्रीय सामग्री वितरण नेटवर्क में स्थानांतरित करने का निर्णय लिया गया। चुनाव रैकपैक सीडीएन पर गिर गया, जो अकामाई के दुनिया के सबसे बड़े नेटवर्क का उपयोग करता है :


एक नए प्लेटफ़ॉर्म पर जाने के संबंध में, हमें वीडियो डाउनलोड कार्यक्रम को थोड़ा अपडेट करना पड़ा। इसलिए, यदि हमने सीडीएन.यूए के लिए एफ़टीपी के माध्यम से वीडियो अपलोड किया है, तो अब हम इसका उपयोग रैकस्पेस पर अपलोड करने के लिए करते हैं
ओपनस्टैक एसडीके:
using net.openstack.Core.Domain; using net.openstack.Providers.Rackspace; using NLog; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using X.Media.Encoding; .... public bool Upload(string path) { const string container = "Video"; const string region = "DFW"; try { var cloudIdentity = new CloudIdentity { Username = _settings.StorageUserName, Password = _settings.StoragePassword }; var contentType = ContentTypeManager.GetContentType(Path.GetExtension(path)); var name = Path.GetFileName(path); _logger.Info(String.Format("Upload: {0} \t with content type: [{1}]", Path.GetFileName(path), contentType)); using (var stream = File.OpenRead(path)) { var cloudFilesProvider = new CloudFilesProvider(cloudIdentity, region, null, null); cloudFilesProvider.CreateObject(container, stream, name, contentType); _logger.Info(String.Format("Uploaded: {0}", path)); } } catch (Exception ex) { _logger.WarnException(String.Format("Error while uploading: {0}", path), ex); return false; } return true; } 



वीडियो सामग्री सीडीएन में स्थानांतरित होने के बाद, यह साइट की बारी थी। अब वेब सर्वर पर लोड वीडियो लोड करते समय शुरू में लोड की तुलना में काफी छोटा है, लेकिन यह देखते हुए कि आगंतुकों की आमद पहले की तरह असमान थी, साइट को क्लाउड प्लेटफ़ॉर्म पर स्थानांतरित करने का निर्णय लिया गया। अब साइट Microsoft Azure में WebSites सेवा में तैनात है। आगंतुकों की संख्या में अचानक वृद्धि के मामले में साइट लोड संतुलन और संसाधनों के स्वचालित स्केलिंग का समर्थन करती है।

दिलचस्प बिंदुओं में से, मैं यह नोट करना चाहता हूं कि साइट में दो डिस्प्ले मोड हैं - रात और दिन, जो स्वचालित रूप से बदलते हैं, दिन के समय के आधार पर।

Support परियोजना विकास और समर्थन प्रक्रिया


यद्यपि परियोजना विकास टीम छोटी है (शुरू में 4 लोग थे, अब केवल 2 लोग सक्रिय रूप से कोड लिखने में शामिल हैं), यह परियोजना के विकास और प्रकाशन प्रक्रिया को यथासंभव अनुकूलित करने का निर्णय लिया गया था। हम एक निजी बिटबकेट रिपॉजिटरी में प्रोजेक्ट के सोर्स कोड को स्टोर करते हैं। प्रोजेक्ट, जैसा कि पहले ही उल्लेख किया गया है, Azure वेबसाइट सेवा पर होस्ट किया गया है। और जो हमें बहुत खुश करता है, यह सेवा आपको प्रोजेक्ट की स्वचालित तैनाती की प्रक्रिया को GitHub और Bitbucket से कॉन्फ़िगर करने की अनुमति देती है (वास्तव में, स्रोतों की संख्या बहुत बड़ी है, और ड्रॉपबॉक्स से प्रकाशन भी समर्थित है)। Azure में, हमारे पास दो वेबसाइट हैं:




जब एक नई प्रतिबद्धता संबंधित ब्रंच में आती है, तो परियोजना का एक स्वचालित निर्माण होता है, और इसके सफल समापन के मामले में - साइट के एक नए संस्करण का प्रकाशन। यदि, किसी कारण से, परियोजना को सफलतापूर्वक क्लाउड वातावरण में नहीं बनाया गया था, तो हम हमेशा तैनाती लॉग को देखकर इसके कारण का पता लगा सकते हैं:


हालांकि, सभी समय के लिए यह सुविधा क्लाउड में परियोजना की प्रारंभिक तैनाती के दौरान केवल एक बार हमारे लिए उपयोगी थी।

मोबाइल ग्राहक


परियोजना की शुरुआत के लगभग एक साल बाद, हमने महसूस किया कि कई दर्शकों के लिए न केवल कंप्यूटर से रिलीज़ देखना, बल्कि अपने स्मार्टफ़ोन का उपयोग करना अधिक सुविधाजनक होगा। मोबाइल ग्राहक बनाने का निर्णय लिया गया। हमने तीन मुख्य मोबाइल प्लेटफ़ॉर्म के लिए मोबाइल क्लाइंट के तीन संस्करण बनाए हैं:


मोबाइल ग्राहकों का तर्क यथासंभव सरल है। एक्सएमएल-प्रारूप में, वे साइट से उपलब्ध कार्यक्रमों और वीडियो रिलीज के बारे में जानकारी प्राप्त करते हैं। इसके अलावा, सीडीएन में स्थित वीडियो फ़ाइल का यूआरएल मोबाइल क्लाइंट को प्रेषित किया जाता है, जहां से वह बाद में वीडियो डाउनलोड करता है।

इसके अलावा, इस परियोजना में एक "आंतरिक आवाज" है। वह उन लोगों से संवाद करता है जिन्होंने अपने स्मार्टफोन में पीट टीवी मोबाइल एप्लिकेशन इंस्टॉल किया है। कभी-कभी उपयोगकर्ताओं को रिलीज़ घोषणाएं मिलती हैं, और कभी-कभी केवल दिलचस्प विचार और अभिव्यक्ति। एज़्योर मोबाइल सर्विसेज पर आधारित एक "आंतरिक आवाज़" काम करती है। चूंकि, अभी जारी की गई मोबाइल सेवाओं की "आंतरिक आवाज" के निर्माण के समय, तर्क जावास्क्रिप्ट में लिखा गया था। बाद में, C # में मोबाइल सेवाओं के तर्क को लिखने के लिए क्षमता को जोड़ा गया था, लेकिन चूंकि सब कुछ अच्छी तरह से काम करता है, इसलिए मुझे स्टील से इस कोड को फिर से लिखना होगा।

दिलचस्प बात यह है कि इस समय, लगभग आधे वीडियो दृश्य मोबाइल एप्लिकेशन के माध्यम से हैं।

उपयोगी जानकारी




नोट्स

Source: https://habr.com/ru/post/In185038/


All Articles