मेरी पिछली पोस्ट में, हमने Amazon CloudWatch SDK के माध्यम से Amazon Interactive Video Service (Amazon IVS) लाइव स्ट्रीम हेल्थ मेट्रिक्स की निगरानी करने पर ध्यान दिया था। स्वास्थ्य निगरानी एक बहुत ही महत्वपूर्ण विषय है जो आपके लाइव स्ट्रीमिंग एप्लिकेशन के प्रदर्शन को बनाए रखने के लिए महत्वपूर्ण है। एक अन्य महत्वपूर्ण तत्व दर्शक विश्लेषण है। इस पोस्ट में, हम स्ट्रीम व्यूअर्स में अंतर्दृष्टि प्रदान करने के कुछ तरीके देखेंगे।
इस पोस्ट का ज्यादातर हिस्सा मेरी पिछली पोस्ट जैसा ही दिखेगा। ऐसा इसलिए है क्योंकि व्यूअर डेटा भी क्लाउडवॉच में संग्रहीत होता है और इसे SDK के माध्यम से पुनर्प्राप्त किया जा सकता है। एक अतिरिक्त तरीका है, जैसा कि हम नीचे देखेंगे, एक लाइव स्ट्रीम के वर्तमान दर्शकों की गिनती प्राप्त करने के लिए जो आपके फ्रंट एंड पर प्रदर्शित की जा सकने वाली गिनती प्राप्त करने का एक आसान तरीका है।
नोट: जबकि यह पोस्ट लाइव स्ट्रीम चैनल दर्शकों पर केंद्रित है, आप अपने Amazon IVS चैट रूम जैसे
ConcurrentChatConnections
औरDelivered
संदेशों के बारे में मैट्रिक्स भी प्राप्त कर सकते हैं। हम उसे इस पोस्ट में शामिल नहीं करेंगे, लेकिन अधिक जानने के लिए आप डॉक्स देख सकते हैं।
यदि आप अपरिष्कृत डेटा प्राप्त किए बिना केवल व्यूअर डेटा पर एक नज़र डालना चाहते हैं, तो आप CloudWatch कंसोल के माध्यम से अपने ConcurrentViews
देख सकते हैं। सबसे पहले, सभी मीट्रिक चुनें, फिर IVS चुनें.
फिर उस पंक्ति में चेकबॉक्स चुनें जिसमें आपके किसी भी Amazon IVS चैनल के लिए ConcurrentViews
शामिल हैं।
स्ट्रीम सत्र के लिए समवर्ती दृश्य खोजने का दूसरा तरीका Amazon IVS कंसोल के माध्यम से है। अपना चैनल चुनें, फिर चैनल विवरण पृष्ठ से एक स्ट्रीम आईडी चुनें।
स्ट्रीम सत्र के विवरण में कई चार्ट होंगे, जिनमें से एक में सत्र के समवर्ती दृश्य होंगे।
इस डेटा को अपने स्वयं के एप्लिकेशन में एकीकृत करने के लिए, आप क्लाउडवॉच एसडीके के माध्यम से डेटा को पुनः प्राप्त कर सकते हैं। इसी तरह स्वास्थ्य मेट्रिक्स के लिए, आपको ConcurrentViews
पुनर्प्राप्त करने के लिए चैनल के ARN
, StartTime
और EndTime
की आवश्यकता होगी।
प्रारंभ और समाप्ति समय बेतरतीब ढंग से चुनने के बजाय, लाइव स्ट्रीम सत्र से प्रारंभ और समाप्ति समय चुनकर गतिशील रूप से इन समयों को प्राप्त करना समझ में आता है। आप Amazon IVS SDK के माध्यम से स्ट्रीम सत्रों की सूची प्राप्त कर सकते हैं (जैसा कि हमने पिछली पोस्ट में देखा था)।
रिमाइंडर: आपको हमेशा
EndTime
आवश्यकता होगी, यहां तक कि वर्तमान में लाइव स्ट्रीम के लिए भी। लाइव स्ट्रीम के लिए, आप मेट्रिक्स को पुनर्प्राप्त करने के लिए एसडीके का उपयोग करते समय हमेशा वर्तमान समय कोEndTime
के रूप में उपयोग कर सकते हैं।
JavaScript (v3) के लिए AWS SDK के माध्यम से इस डेटा को पुनः प्राप्त करने के लिए, आपको @aws-sdk/client-cloudwatch
पैकेज इंस्टॉल करना होगा और क्लाइंट का एक उदाहरण बनाना होगा ( new CloudWatchClient()
)। क्लाइंट उदाहरण बनने के बाद, आवश्यक इनपुट के लिए कुछ चर सेट करें।
const startTime = new Date('2023-02-10T14:00:00.000Z'); const endTime = new Date('2023-02-10T14:30:00.000Z'); const arn = process.env.DEMO_CHANNEL_ARN;
अगला, एक इनपुट ऑब्जेक्ट बनाएँ। इनपुट ऑब्जेक्ट में StartTime
, EndTime
, और MetricDataQueries
की एक सरणी होगी। क्वेरी सरणी में एक एकल ऑब्जेक्ट होगा जो MetricName
( ConcurrentViews
), Namespace
( AWS/IVS
), और फ़िल्टर किए जाने Dimensions
(चैनल का नाम, इस मामले में) निर्दिष्ट करता है।
const getMetricDataInput = { StartTime: startTime, EndTime: endTime, MetricDataQueries: [{ Id: "concurrentviews", MetricStat: { Metric: { MetricName: "ConcurrentViews", Namespace: "AWS/IVS", Dimensions: [{ Name: "Channel", Value: arn.split("/")[1] }] }, Period: 5, Stat: "Average", } }], MaxDatapoints: 100 };
अब अनुरोध भेजें और परिणाम लॉग करें।
const getMetricDataRequest = new GetMetricDataCommand(getMetricDataInput); let metrics = await cloudWatchClient.send(getMetricDataRequest); console.log(metrics);
जो आउटपुट उत्पन्न करता है जो निम्न जैसा दिखता है (संक्षिप्तता के लिए बाहरी एसडीके मेटाडेटा हटा दिया गया है):
{ "MetricDataResults": [ { "Id": "concurrentviews", "Label": "ConcurrentViews", "Timestamps": [ "2023-02-10T14:29:00.000Z", "2023-02-10T14:28:00.000Z", "2023-02-10T14:27:00.000Z", "2023-02-10T14:26:00.000Z", "2023-02-10T14:22:00.000Z" ], "Values": [ 3, 3, 3, 3, 10 ], "StatusCode": "PartialData" } ] }
चार्ट बनाने के लिए उपयोगी प्रारूप तैयार करने के लिए आप इस डेटा को फ़िल्टर, सॉर्ट और आउटपुट कर सकते हैं।
const viewMetrics = metrics .MetricDataResults .find((metric) => metric.Id === 'concurrentviews'); const viewValues = viewMetrics.Values.reverse(); const viewData = []; viewMetrics .Timestamps .reverse() .forEach((t, i) => { viewData.push({ timestamp: t, concurrentviews: viewValues[i], }) }); console.log(JSON.stringify(viewData));
जो वस्तुओं की एक सरणी पैदा करता है।
[ { "timestamp": "2023-02-10T14:22:00.000Z", "concurrentviews": "10.00" }, { "timestamp": "2023-02-10T14:26:00.000Z", "concurrentviews": "3.00" }, ... ]
आप इस डेटा का उपयोग हमारी पसंदीदा चार्टिंग लाइब्रेरी (या मेरे जैसा एक सामान्य ऑनलाइन चार्ट जनरेटर) के साथ कर सकते हैं।
पिछली पोस्ट में, हमने क्लाउडवॉच एसडीके के माध्यम से सीधे इमेज जेनरेट करने पर ध्यान दिया था। यह तरीका आपके व्यू मेट्रिक्स पर भी लागू होता है।
const startTime = new Date('2023-02-10T14:00:00.000Z'); const endTime = new Date('2023-02-10T14:25:00.000Z'); const arn = process.env.DEMO_CHANNEL_ARN; const cloudWatchClient = new CloudWatchClient(); const getMetricWidgetImageInput = { MetricWidget: JSON.stringify({ metrics: [ [ "AWS/IVS", "ConcurrentViews", "Channel", arn.split("/")[1] ] ], start: startTime, end: endTime, period: 5, stat: "Average" }) }; const getMetricWidgetImageRequest = new GetMetricWidgetImageCommand(getMetricWidgetImageInput); const metricImage = await cloudWatchClient.send(getMetricWidgetImageRequest);
जो कुंजी MetricWidgetImage
के साथ एक ऑब्जेक्ट लौटाता है जिसमें एक सरणी बफ़र ( Uint8Array
) होता है जिसमें चार्ट छवि होती है।
{ "MetricWidgetImage": { "0": 137, "1": 80, "2": 78, ... } }
इस सरणी बफर को बेस 64 स्ट्रिंग में बदलने के लिए:
const buffer = Buffer.from(metricImage.MetricWidgetImage); console.log(buffer.toString('base64'));
जो हमें देता है:
iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAACXBIWXMA...
ऐसा दिखने वाली छवि में परिवर्तित किया जा सकता है:
जैसा कि ऊपर उल्लेख किया गया है, आप AWS SDK में Amazon IVS क्लाइंट मॉड्यूल के माध्यम से किसी चैनल पर सक्रिय लाइव स्ट्रीम के लिए वर्तमान दृश्य सत्रों की गिनती आसानी से प्राप्त कर सकते हैं। इसके लिए GetStream
मेथड का इस्तेमाल करें।
import { GetStreamCommand, IvsClient } from "@aws-sdk/client-ivs"; const client = new IvsClient(); const getStreamCommandInput = { channelArn: process.env.DEMO_CHANNEL_ARN, }; const getStreamRequest = new GetStreamCommand(getStreamCommandInput); const getStreamResponse = await client.send(getStreamRequest); console.log(getStreamResponse);
जो निम्न जैसा आउटपुट उत्पन्न करता है।
{ "stream": { "channelArn": "arn:aws:ivs:us-east-1:[redacted]:channel/[redacted]", "health": "HEALTHY", "playbackUrl": "https://[redacted].us-east-1.playback.live-video.net/api/video/v1/us-east-1.[redacted].channel.x4aGUUxIp5Vw.m3u8", "startTime": "2023-02-10T15:46:36.000Z", "state": "LIVE", "streamId": "st-[redacted]", "viewerCount": 5 } }
प्रॉपर्टी viewerCount
पर ध्यान दें, जो वर्तमान लाइव स्ट्रीम के व्यू सेशन की लाइव काउंट है।
इस पोस्ट में, हमने सीखा कि कैसे CloudWatch और Amazon IVS SDK के माध्यम से हमारे Amazon IVS लाइव स्ट्रीम के लिए व्यू डेटा को पुनः प्राप्त किया जाए। अधिक जानने के लिए, दस्तावेज़ देखें।
ताज