सादा रियलटाइम सर्वर (एसआरएस) फॉर आरटीएमपी स्ट्रीमिंग | मूल, AI द्वारा अनुवादित
SRS (Simple Realtime Server) का उपयोग करके RTMP स्ट्रीमिंग के लिए एक एज सर्वर डिप्लॉय करने में डाइव करें, जिसमें rtmp.conf
फ़ाइल को समझने और इसे प्रभावी रूप से कॉन्फ़िगर करने पर ध्यान केंद्रित किया गया है। SRS एक शक्तिशाली, उच्च प्रदर्शन मीडिया सर्वर है जो वास्तविक समय स्ट्रीमिंग प्रोटोकॉल जैसे RTMP, HLS और HTTP-FLV के लिए डिज़ाइन किया गया है। यह विशेष रूप से स्केलेबिलिटी की आवश्यकता वाले सीनारियो के लिए उपयुक्त है, जैसे कि कंटेंट डिलीवरी नेटवर्क (CDNs), जहां एक एज सर्वर स्ट्रीम्स को कई क्लाइंट्स तक प्रभावी रूप से वितरित कर सकता है जबकि कंटेंट को एक ऑरिजिन सर्वर से फेट्च करता है। मैं आपको कदम-दर-कदम प्रक्रिया के साथ ले जाऊंगा, एज डिप्लॉयमेंट की अवधारणा को समझाऊंगा और rtmp.conf
जैसे कॉन्फ़िगरेशन के साथ काम करने की स्पष्टता लाऊंगा।
SRS और एज डिप्लॉयमेंट क्या है?
SRS एक ओपन-सोर्स सर्वर है जो वास्तविक समय मीडिया स्ट्रीमिंग के लिए बनाया गया है, जिसमें सरलता और दक्षता पर ध्यान केंद्रित किया गया है। यह RTMP (Real-Time Messaging Protocol) के लिए निम्न लैटेंसी लाइव स्ट्रीमिंग का समर्थन करता है, साथ ही अन्य प्रोटोकॉल जैसे HLS और WebRTC भी। SRS में, एक “एज” सर्वर क्लाइंट्स (दर्शकों या प्रकाशकों) और एक “ऑरिजिन” सर्वर (जहां स्ट्रीम उत्पन्न होता है) के बीच एक मध्यस्थ के रूप में कार्य करता है। एज केवल क्लाइंट्स द्वारा अनुरोध किए जाने पर ऑरिजिन से स्ट्रीम्स को फेट्च करता है, जिससे ऑरिजिन पर लोड कम हो जाता है और स्केलेबिल वितरण को संभव बनाता है—इसको लाइव स्ट्रीम्स के लिए एक CDN की कैशिंग लेयर के रूप में सोचें।
SRS का उपयोग करके एक एज सर्वर डिप्लॉय करने में तब उपयोगी है जब आपको:
- एक बड़ी संख्या में दर्शकों को सेवा देना है बिना ऑरिजिन को ओवरव्हेल्म करने।
- प्रकाशकों को एज पर स्ट्रीम पुश करने की अनुमति देना, जो फिर उन्हें ऑरिजिन पर फॉरवर्ड करता है।
- महंगे ऑरिजिन सर्वरों पर बैंडविड्थ उपयोग को कम करने के लिए सस्ते एज नोड्स का लाभ उठाना।
कदम-दर-कदम: SRS के साथ RTMP के लिए एज सर्वर डिप्लॉय करना
यहाँ SRS को एक एज सर्वर के रूप में RTMP स्ट्रीमिंग के लिए सेटअप करने का तरीका है। मैं मानता हूँ कि आप एक लिनक्स सिस्टम (जैसे Ubuntu) पर काम कर रहे हैं, क्योंकि SRS को ऐसे वातावरणों के लिए ऑप्टिमाइज़ किया गया है।
1. SRS इंस्टॉल करें
पहले, आपको अपने मशीन पर SRS चलाना होगा:
- SRS डाउनलोड करें: आधिकारिक GitHub रिपोजिटरी (github.com/ossrs/srs) से सबसे नया स्टेबल वर्जन ले लें। आज, 26 फरवरी 2025, आप आम तौर पर रिपो को क्लोन करेंगे:
git clone https://github.com/ossrs/srs.git cd srs
- SRS बनाएं: SRS एक सरल बनावट प्रक्रिया का उपयोग करता है
./configure
औरmake
के साथ:./configure make
यह सर्वर को
objs
डायरेक्टरी में कॉम्पाइल करता है (जैसे,objs/srs
). - बाइनरी को टेस्ट करें: इसे डिफ़ॉल्ट कॉन्फ़िग के साथ चलाएं ताकि यह काम करता है:
./objs/srs -c conf/srs.conf
डिफ़ॉल्ट रूप से, यह RTMP के लिए पोर्ट 1935 पर सुनता है। कंसोल आउटपुट को पुष्टि के लिए चेक करें।
2. एज अवधारणा को समझें
SRS में, एक एज सर्वर “रिमोट” मोड में कार्य करता है, अर्थात् यह स्वयं स्ट्रीम्स नहीं बनाता है, बल्कि जब एक क्लाइंट अनुरोध करता है तो ऑरिजिन सर्वर से उन्हें फेट्च करता है (प्लेबैक के लिए) या स्ट्रीम्स को ऑरिजिन पर पुश करता है (पब्लिशिंग के लिए)। यह ऑन-डिमांड फेट्चिंग ही है जो एज सर्वरों को RTMP वितरण को स्केल करने में दक्ष बनाता है।
- ऑरिजिन सर्वर: स्ट्रीम का स्रोत (जैसे, जहां एक एन्कोडर जैसे OBS एक RTMP स्ट्रीम पुश करता है).
- एज सर्वर: एक रिले जो क्लाइंट्स से कनेक्ट होता है, केवल जब आवश्यक होता है तो ऑरिजिन से फेट्च करता है।
इस उदाहरण के लिए, मान लीजिए कि आपके पास एक ऑरिजिन सर्वर पहले से ही SRS पर चल रहा है 192.168.1.100:1935
(इसको अपने वास्तविक ऑरिजिन IP से बदलें).
3. एज सर्वर को कॉन्फ़िगर करें
SRS कॉन्फ़िगरेशन फ़ाइलों का उपयोग करता है अपनी व्यवहार को परिभाषित करने के लिए। डिफ़ॉल्ट srs.conf
एक अच्छा शुरुआती बिंदु है, लेकिन एज डिप्लॉयमेंट के लिए, आप एक विशेष कॉन्फ़िग बनाएँगे—इसको edge.conf
कहें। यहाँ यह कैसे सेटअप किया जाता है:
edge.conf
बनाएं:cd conf nano edge.conf
- एज कॉन्फ़िगरेशन जोड़ें:
यहाँ एक न्यूनतम
edge.conf
है RTMP एज डिप्लॉयमेंट के लिए:listen 1935; max_connections 1000; srs_log_tank file; srs_log_file ./objs/edge.log; vhost __defaultVhost__ { cluster { mode remote; origin 192.168.1.100:1935; } }
listen 1935
: एज RTMP कनेक्शंस के लिए पोर्ट 1935 पर सुनता है।max_connections 1000
: समांतर कनेक्शंस को सीमित करता है (अपने सर्वर की क्षमता के अनुसार समायोजित करें).srs_log_file
: डिबगिंग के लिए एक फ़ाइल में लॉग करता है।vhost __defaultVhost__
: डिफ़ॉल्ट वर्चुअल होस्ट कॉन्फ़िगरेशन।cluster { mode remote; origin 192.168.1.100:1935; }
: इस सर्वर को एक एज (mode remote
) के रूप में सेट करता है और इसे ऑरिजिन सर्वर पर डायरेक्ट करता है।
- सेव और एक्सिट करें: नैनो में Ctrl+O, Enter, Ctrl+X.
4. एज सर्वर को शुरू करें
अपने एज कॉन्फ़िग के साथ SRS चलाएं:
./objs/srs -c conf/edge.conf
लॉग (./objs/edge.log
) को चेक करें ताकि यह चल रहा है और ऑरिजिन से कनेक्ट है।
5. सेटअप को टेस्ट करें
- एक स्ट्रीम पब्लिश करें: एक टूल जैसे OBS या FFmpeg का उपयोग करें ऑरिजिन सर्वर पर एक RTMP स्ट्रीम पुश करने के लिए:
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://192.168.1.100/live/livestream
यहाँ,
live
एक ऐप नाम है, औरlivestream
एक स्ट्रीम की है। - एज से प्ले करें: VLC या किसी अन्य RTMP क्लाइंट का उपयोग करें एज से स्ट्रीम को प्ले करने के लिए:
rtmp://<edge-server-ip>/live/livestream
<edge-server-ip>
को अपने एज सर्वर के IP से बदलें (जैसे,192.168.1.101
). एज ऑरिजिन से स्ट्रीम को फेट्च करेगा और आपको इसे सर्व करेगा।
6. rtmp.conf
का अन्वेषण
SRS डिफ़ॉल्ट रूप से एक rtmp.conf
फ़ाइल के साथ नहीं आता, लेकिन आप ट्यूटोरियल या कस्टम सेटअप में इसके संदर्भों से मिल सकते हैं। यह एक नामकरण परंपरा है एक RTMP-विशिष्ट कॉन्फ़िगरेशन फ़ाइल के लिए। उदाहरण के लिए, SRS दस्तावेज़ (ossrs.net) एक सैंपल rtmp.conf
प्रदान करता है वास्तविक समय RTMP स्ट्रीमिंग के लिए:
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
tcp_nodelay on;
min_latency on;
play {
gop_cache off;
queue_length 10;
}
publish {
mr off;
}
}
- उद्देश्य: यह कॉन्फ़िगरेशन एक ऑरिजिन सर्वर पर निम्न लैटेंसी RTMP स्ट्रीमिंग के लिए ऑप्टिमाइज़ किया गया है, नहीं एक एज। एज डिप्लॉयमेंट के लिए, आप इसे कदम 3 से
cluster
ब्लॉक जोड़कर अनुकूलित कर सकते हैं। - मुख्य सेटिंग्स:
tcp_nodelay on
: नैगल्स के एल्गोरिथम को डिसएबल करके लैटेंसी को कम करता है।min_latency on
: लैटेंसी को बफरिंग के ऊपर प्राथमिकता देता है।gop_cache off
: वास्तविक समय प्लेबैक के लिए ग्रुप ऑफ पिक्चर्स की कैशिंग को डिसएबल करता है।mr off
: पब्लिशिंग में देरी को रोकने के लिए “मर्ज रीड” को डिसएबल करता है।
एक एज के लिए, आप इसे cluster
सेटिंग्स के साथ मिलाकर उपयोग करेंगे, नहीं इसे अकेले।
और समझाने: एज मैकेनिक्स और RTMP
- एज कैसे काम करता है: जब एक क्लाइंट
rtmp://<edge-ip>/live/livestream
अनुरोध करता है, तो एज चेक करता है कि क्या उसे स्ट्रीम है। अगर नहीं, तो यह इसे ऑरिजिन (192.168.1.100:1935
) से फेट्च करता है और इसे स्थानीय रूप से कैश करता है अन्य क्लाइंट्स को सर्व करने के लिए। अगर एक प्रकाशक एज पर पुश करता है, तो यह स्ट्रीम को ऑरिजिन पर फॉरवर्ड करता है। - RTMP विशेषताएं: RTMP एक निम्न लैटेंसी प्रोटोकॉल है जो लाइव स्ट्रीमिंग के लिए आदर्श है। SRS RTMP को दक्षता से संभालता है, विशेषताओं जैसे एब्सोल्यूट टाइम कोडिंग (ATC) का समर्थन करता है सर्वरों के बीच सिंक्रोनाइज़ेशन के लिए, हालांकि यह एज मोड में डिफ़ॉल्ट रूप से ऑफ़ है जब तक कि इसे स्पष्ट रूप से नहीं किया गया है।
- स्केलेबिलिटी: एक ही ऑरिजिन पर इंटरनेट करने के लिए कई एजज जोड़ें हजारों क्लाइंट्स को संभालने के लिए। SRS फेलओवर का समर्थन करता है कई ऑरिजिन्स को सूचीबद्ध करके (जैसे,
origin 192.168.1.100:1935 192.168.1.200:1935;
).
टिप्स और ट्रबलशूटिंग
- फायरवॉल: दोनों ऑरिजिन और एज सर्वरों पर पोर्ट 1935 खुला हो।
- लॉग: ऑरिजिन से कनेक्शन विफलताओं जैसे त्रुटियों के लिए
edge.log
चेक करें। - लैटेंसी: एज कम लैटेंसी जोड़ता है (आम तौर पर <1s) अगर ऑरिजिन भी निम्न लैटेंसी है।
- कई एज: समान कॉन्फ़िग के साथ अतिरिक्त एज डिप्लॉय करें,
listen
पोर्ट या IPs को आवश्यकता के अनुसार समायोजित करें।
समापन
SRS एज सर्वर के साथ RTMP डिप्लॉय करना एक बार आप ऑरिजिन-एज संबंध को समझ लेते हैं, सरल है। edge.conf
एज को स्ट्रीम्स को डायनामिक रूप से फेट्च या पुश करने के लिए सेटअप करता है, जबकि एक rtmp.conf
-शैली कॉन्फ़िगरेशन RTMP प्रदर्शन को फाइन-ट्यून करने के लिए आवश्यक हो सकता है। इस सेटअप के साथ, आप लाइव स्ट्रीमिंग को प्रभावी रूप से स्केल करने के लिए तैयार हैं—कुछ दर्शकों या एक वैश्विक दर्शकों के लिए। इसे और अधिक ट्यून करना चाहते हैं या HLS को RTMP के साथ एकीकृत करना चाहते हैं? बस मुझे बताएं!