सामग्री पर जाएं
TubePress — मुफ़्त, स्व-होस्टेड & सक्रिय रूप से अनुरक्षित
मीडिया और ट्रांसकोडिंग

ट्रांसकोडिंग

TubePress किस तरह वितरित FFmpeg वर्कर्स के साथ अपलोड को वेब-तैयार रेंडिशन में बदलता है।

ट्रांसकोडिंग एक अपलोड की गई फ़ाइल को कई वेब-फ्रेंडली MP4 रेंडिशन में बदलती है, जिससे दर्शकों को गुणवत्ता मेनू, तेज़ शुरुआत वाली प्लेबैक और एक समान कोडेक मिलता है, चाहे कुछ भी अपलोड किया गया हो। यह वैकल्पिक अतिरिक्त चीज़ें भी जोड़ती है — वाटरमार्क और इंट्रो/आउट्रो क्लिप — और स्क्रब-प्रीव्यू स्प्राइट भी बनाती है जो प्लेयर उपयोग करता है।

यहाँ सब कुछ /admin/settings?tab=transcode के अंतर्गत कॉन्फ़िगर किया जाता है, जो Formats, Queue, Servers, Watermark, Intros और Timeline सब-टैब में विभाजित है। ट्रांसकोडिंग CMS सर्वर पर ही चल सकती है या समर्पित वर्करों को वितरित की जा सकती है।

ट्रांसकोड क्यों करें

एक रॉ अपलोड किसी भी रिज़ॉल्यूशन, कोडेक या कंटेनर में हो सकती है। ट्रांसकोडिंग इसे +faststart के साथ MP4/H.264 रेंडिशन में मानकीकृत करती है ताकि फ़ाइल पूरी तरह डाउनलोड होने से पहले ही प्लेबैक शुरू हो जाए, और यह कई आकार उत्पन्न करती है (जैसे 720p और 480p) ताकि प्लेयर एक गुणवत्ता चयनकर्ता प्रदान कर सके और छोटी स्क्रीन पर छोटी फ़ाइलें सर्व कर सके। इसी पास में वाटरमार्क और प्री/पोस्ट-रोल क्लिप लागू होते हैं, क्योंकि उन्हें प्रत्येक रेंडिशन में एन्कोड करना होता है।

ट्रांसकोडिंग पाइपलाइन

जब कोई वीडियो प्रोसेस के लिए तैयार होता है, TubePress प्रत्येक आउटपुट के लिए transcode_jobs तालिका में एक जॉब एनक्यू करता है और उन्हें क्रमशः पूरा करता है:

  1. कतार। पूर्ण-रिज़ॉल्यूशन सोर्स रंग के लिए और सोर्स ऊंचाई से नीचे के प्रत्येक सक्रिय फॉर्मेट के लिए एक जॉब बनाई जाती है, साथ ही यदि प्रीव्यू सक्षम हैं तो टाइमलाइन जॉब भी।
  2. पिक अप। एक वर्कर — यह सर्वर या कोई रिमोट वाला — सोर्स रंग से शुरू करते हुए अगली लंबित जॉब लेता है।
  3. डाउनलोड। एक रिमोट वर्कर HTTP पर सोर्स खींचता है (एक सीधा, की-प्रमाणित URL जो हस्ताक्षरित मीडिया लिंक को बायपास करता है)।
  4. ट्रांसकोड। FFmpeg रेंडिशन एन्कोड करता है, कॉन्फ़िगर के अनुसार ट्रिम, वाटरमार्क और इंट्रो लागू करता है, और प्रगति का प्रतिशत रिपोर्ट करता है।
  5. अपलोड और कॉलबैक। परिणाम को चंक्स में वापस अपलोड किया जाता है और एक कॉलबैक जॉब को पूर्ण चिह्नित करता है।

वीडियो की स्थिति इसे ट्रैक करती है: जब जॉब चल रही होती हैं तो यह processing पर रहती है, सोर्स रंग समाप्त होते ही published हो जाती है, और केवल error बनती है यदि सोर्स रंग कभी नहीं बन सकता। प्रकाशन के बाद निचले रेंडिशन भरते रहते हैं।

एम्बेड वीडियो कभी ट्रांसकोड नहीं होते। केवल अपलोड की गई या URL-आधारित फ़ाइलें ही पाइपलाइन में प्रवेश करती हैं; एम्बेड कोड वाला वीडियो सीधे अपने सोर्स से सर्व किया जाता है।

रेंडिशन और फॉर्मेट

आउटपुट फॉर्मेट Formats टैब पर पूरी तरह से संपादन योग्य हैं और video_formats तालिका में संग्रहीत हैं। प्रत्येक फॉर्मेट में एक नाम, एक फ़ाइल पोस्टफिक्स (उदाहरण _720p.mp4), एक लक्ष्य रिज़ॉल्यूशन, रॉ FFmpeg विकल्प, एक keep aspect ratio फ्लैग और एक सक्रिय टॉगल होता है। अंतर्निहित डिफ़ॉल्ट हैं:

फॉर्मेटरिज़ॉल्यूशन
720p1280 × 720
480p854 × 480
360p640 × 360

दो नियम गुणवत्ता को सुनिश्चित रखते हैं। TubePress कभी अपस्केल नहीं करता: सोर्स ऊंचाई पर या उससे ऊपर का कोई भी फॉर्मेट छोड़ दिया जाता है। और मूल उच्चतम गुणवत्ता हमेशा बनाए रखी जाती है — यदि वाटरमार्क या ट्रिम सक्रिय है तो इसे पूर्ण-रिज़ॉल्यूशन सोर्स रेंडिशन (कतार में तारे के साथ दिखाया गया) में पुनः एन्कोड किया जाता है, अन्यथा सोर्स फ़ाइल को यथावत सर्व किया जाता है। एक Trim start विकल्प (0–300 सेकंड) प्रत्येक वीडियो के पहले सेकंड हटा सकता है; वाटरमार्क की तरह, यह सोर्स सहित प्रत्येक फॉर्मेट पर लागू होता है।

जॉब कतार

Queue टैब (/admin/settings?tab=transcode&sub=queue) जॉब को वीडियो के अनुसार समूहित करता है और आपको All / Pending / Processing / Completed / Failed द्वारा फ़िल्टर करने देता है। प्रत्येक वीडियो प्रति रंग एक बैज दिखाता है — तारांकित सोर्स रंग, फिर प्रत्येक रिज़ॉल्यूशन, फिर TIMELINE — जॉब स्थिति के अनुसार रंगीन:

pending
कतारबद्ध, एक मुक्त वर्कर की प्रतीक्षा में।
processing
सक्रिय, एक लाइव चरण (डाउनलोडिंग, ट्रांसकोडिंग या अपलोडिंग) और प्रतिशत के साथ।
completed
रेंडिशन उत्पन्न और संग्रहीत।
failed
अभी के लिए रिट्राई समाप्त; ऑटो-रिकवरी अभी भी लागू है (नीचे देखें)।

प्रति-वीडियो कंसोल (टर्मिनल आइकॉन) लाइव जॉब सूची, प्रत्येक रंग को संभालने वाला वर्कर, बीता हुआ समय और कोई भी त्रुटि संदेश स्ट्रीम करता है। एक Retry failed jobs बटन एक क्लिक में वर्तमान में विफल सब कुछ पुनः-कतारबद्ध करता है।

रिमोट ट्रांसकोड सर्वर

ट्रांसकोडिंग CPU-गहन है, इसलिए आप इसे वेब सर्वर से हटा सकते हैं। Servers टैब पर, This Server यह निर्धारित करता है कि स्थानीय रूप से एक साथ कितने FFmpeg जॉब चलेंगे (1–4, या केवल रिमोट वर्कर उपयोग करने के लिए 0) और आपको FFmpeg पाथ ओवरराइड करने देता है। नीचे आप रिमोट वर्कर पंजीकृत करते हैं; जॉब स्वचालित रूप से कम-लोड वाले को वितरित होती हैं, और प्रत्येक में एक max concurrent jobs सीमा होती है (एक अच्छा नियम है दो CPU कोर पर एक जॉब)।

  1. सर्वर जोड़ें। Add Server पर क्लिक करें, इसे एक नाम और http://YOUR-IP:8090 जैसा URL दें, और सेव करें। एक API कुंजी और स्टार्ट कमांड तुरंत दिखाई देते हैं।
  2. FFmpeg + PHP इंस्टॉल करें। वर्कर बॉक्स पर sudo apt install ffmpeg php-cli php-curl चलाएं।
  3. वर्कर डिप्लॉय करें। transcode-worker.php डाउनलोड करें (/api/transcode-worker-download से या एक अस्थायी wget लिंक से), इसे अपलोड करें, और sudo ufw allow 8090/tcp से पोर्ट खोलें।
  4. शुरू करें। अपनी कुंजी के साथ वर्कर चलाएं:
php transcode-worker.php --port=8090 --key=YOUR_API_KEY
  1. सत्यापित करें। Check पर क्लिक करें; एक स्वस्थ वर्कर अपने पहचाने गए एन्कोडर और लाइव CPU/GPU उपयोग के साथ Online रिपोर्ट करता है।

GPU त्वरण (NVIDIA, AMD, Intel या Apple) स्वचालित रूप से पहचाना और उपयोग किया जाता है। वर्कर सोर्स खींचता है, ट्रांसकोड करता है, प्रगति रिपोर्ट करता है और परिणाम CMS को वापस चंक्स में अपलोड करता है — चंक्ड अपलोड ही है जो प्रत्येक अनुरोध को Cloudflare की 100 MB सीमा के अंतर्गत रखता है। अनुपस्थित होस्ट के लिए सेटअप गाइड में एक systemd यूनिट शामिल है ताकि वर्कर बूट पर पुनः शुरू हो।

प्रोडक्शन में वर्कर को सुरक्षित करें। वर्कर अपने पोर्ट पर सादा HTTP बोलता है। इसके सामने HTTPS के साथ Nginx लगाएं, और पोर्ट को अपने CMS सर्वर तक प्रतिबंधित करें।

मॉनिटरिंग और रिट्राई

सिस्टम इस तरह बनाया गया है कि कोई वीडियो कभी चुपचाप नहीं छोड़ा जाता। एक विफल एन्कोड स्वचालित रूप से बढ़ते बैक-ऑफ के साथ पुनः प्रयास किया जाता है — लगभग आधे मिनट से कुछ घंटों तक — क्योंकि अधिकांश विफलताएं अस्थायी होती हैं (एक धीमा या अस्थिर CDN)। इससे आगे, एक घंटे की रिकवरी टास्क किसी भी जॉब को जो अभी भी विफल चिह्नित है पुनः-कतारबद्ध करती है, इसलिए यह तब तक प्रयास करती रहती है जब तक रेंडिशन नहीं मिल जाता। कोई मैनुअल क्लिक आवश्यक नहीं है, हालांकि Retry failed jobs बटन वहां है यदि आप इसे जबरदस्ती करना चाहते हैं।

यदि सोर्स रंग स्वयं स्थायी रूप से विफल हो जाता है, तो उसकी आश्रित सब-फॉर्मेट जॉब रद्द कर दी जाती हैं (वे सोर्स के बिना आगे नहीं बढ़ सकतीं) और वीडियो error चिह्नित हो जाता है; रिकवरी अभी भी इसे वापस लाने का प्रयास करेगी। जब सोर्स रंग अंततः पूर्ण होता है, वीडियो स्वतः प्रकाशित हो जाता है।

आवश्यकताएं

FFmpeg जहां भी ट्रांसकोडिंग चलती है वहां उपलब्ध होना चाहिए:

  • स्थानीय प्रोसेसिंग: CMS सर्वर पर FFmpeg इंस्टॉल करें (sudo apt install ffmpeg)। Transcode पृष्ठ एक बार उपस्थित होने पर पहचाना गया संस्करण दिखाता है।
  • रिमोट प्रोसेसिंग: प्रत्येक वर्कर को FFmpeg के साथ php-cli और php-curl, कम से कम 2 CPU कोर और 2 GB RAM, और एक खुला वर्कर पोर्ट चाहिए।
FFmpeg नहीं, ट्रांसकोडिंग नहीं। यदि FFmpeg स्थानीय रूप से अनुपस्थित है और कोई रिमोट सर्वर ऑनलाइन नहीं है, तो ट्रांसकोडिंग टॉगल सक्षम नहीं किया जा सकता — पहले FFmpeg इंस्टॉल करें या वर्कर जोड़ें।

अगले कदम

अभी भी अटके हैं?

अपने डैशबोर्ड से टिकट खोलें और हमारी टीम आपकी मदद करेगी।

लाइव डेमो आज़माएं → TubePress डाउनलोड करें →