Trong bài đăng trước của tôi, chúng ta đã xem thông qua Amazon CloudWatch SDK. Theo dõi sức khỏe là một chủ đề cực kỳ quan trọng để giữ cho các ứng dụng phát trực tiếp của bạn hoạt động hiệu quả. Một yếu tố quan trọng khác là phân tích người xem. Trong bài đăng này, chúng tôi sẽ xem xét một số cách để cung cấp thông tin chi tiết về người xem luồng. xét việc theo dõi các chỉ số về tình trạng phát trực tiếp của Amazon Interactive Video Service (Amazon IVS) Phần lớn bài đăng này sẽ giống với bài đăng cuối cùng của tôi. Đó là vì dữ liệu người xem cũng được lưu trữ trong CloudWatch và có thể được truy xuất qua SDK. Có một phương pháp bổ sung, như chúng ta sẽ thấy bên dưới, để biết số lượng người xem hiện tại của luồng trực tiếp, đây là một cách hữu ích để biết số lượng có thể hiển thị trên giao diện người dùng của bạn. Mặc dù bài đăng này tập trung vào người xem kênh phát trực tiếp, nhưng bạn cũng có thể truy xuất số liệu về phòng trò chuyện Amazon IVS của mình như và tin nhắn . Chúng tôi sẽ không đề cập đến điều đó trong bài đăng này, nhưng bạn có thể xem để tìm hiểu thêm. Lưu ý: ConcurrentChatConnections Delivered tài liệu Truy xuất Chế độ xem đồng thời qua Bảng điều khiển CloudWatch Nếu bạn chỉ muốn xem qua dữ liệu người xem mà không truy xuất dữ liệu thô, thì bạn có thể xem của mình thông qua bảng điều khiển CloudWatch. Đầu tiên, chọn , sau đó chọn . ConcurrentViews Tất cả số liệu IVS Tiếp theo, chọn . Theo kênh Sau đó chọn hộp kiểm trong hàng chứa cho bất kỳ kênh Amazon IVS nào của bạn. ConcurrentViews Một cách khác để tìm các lượt xem đồng thời cho một phiên phát trực tuyến là thông qua bảng điều khiển Amazon IVS. Chọn kênh của bạn, sau đó chọn từ trang chi tiết kênh. Id luồng Thông tin chi tiết về phiên phát trực tiếp sẽ chứa một số biểu đồ, một trong số đó chứa các cho phiên. chế độ xem Đồng thời Truy xuất Chế độ xem đồng thời qua CloudWatch SDK Để tích hợp dữ liệu này vào ứng dụng của riêng mình, bạn có thể truy xuất dữ liệu qua CloudWatch SDK. Tương tự như chỉ số sức khỏe, bạn sẽ cần của kênh, và để truy xuất . ARN StartTime EndTime ConcurrentViews Thay vì chọn ngẫu nhiên thời gian bắt đầu và kết thúc, bạn nên tự động lấy những thời gian này bằng cách chọn thời gian bắt đầu và kết thúc từ một phiên phát trực tiếp. Bạn có thể truy xuất danh sách các phiên phát trực tuyến qua Amazon IVS SDK (như chúng ta đã thấy trong ). bài đăng trước Bạn sẽ luôn cần có , ngay cả đối với các luồng hiện đang phát trực tiếp. Đối với luồng trực tiếp, bạn luôn có thể sử dụng thời gian hiện tại làm khi sử dụng SDK để truy xuất chỉ số. Lời nhắc: EndTime EndTime Để truy xuất dữ liệu này qua AWS SDK dành cho JavaScript (v3), bạn sẽ cần cài đặt gói và tạo một phiên bản ứng dụng khách ( ). Sau khi phiên bản máy khách được tạo, hãy đặt một số biến cho các đầu vào bắt buộc. @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; Tiếp theo, tạo một đối tượng đầu vào. Đối tượng đầu vào sẽ chứa , và một mảng . Mảng truy vấn sẽ chứa một đối tượng duy nhất chỉ định ( ), ( ) và để lọc theo (tên kênh, trong trường hợp này). 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 }; Bây giờ hãy gửi yêu cầu và ghi lại kết quả. const getMetricDataRequest = new GetMetricDataCommand(getMetricDataInput); let metrics = await cloudWatchClient.send(getMetricDataRequest); console.log(metrics); Cái nào tạo ra đầu ra giống như sau (siêu dữ liệu SDK không liên quan đã bị xóa để cho ngắn gọn): { "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" } ] } Bạn có thể lọc, sắp xếp và xuất dữ liệu này để tạo định dạng hữu ích cho việc tạo biểu đồ. 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)); Mà tạo ra một mảng các đối tượng. [ { "timestamp": "2023-02-10T14:22:00.000Z", "concurrentviews": "10.00" }, { "timestamp": "2023-02-10T14:26:00.000Z", "concurrentviews": "3.00" }, ... ] Bạn có thể sử dụng dữ liệu này với thư viện biểu đồ yêu thích của chúng tôi (hoặc một trình tạo biểu đồ trực tuyến chung như tôi đã làm). Tạo hình ảnh biểu đồ với CloudWatch SDK Trong bài đăng trước, chúng tôi đã xem xét việc tạo hình ảnh trực tiếp qua CloudWatch SDK. Cách tiếp cận này cũng áp dụng cho số liệu lượt xem của bạn. 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); Trả về một đối tượng có khóa chứa bộ đệm mảng ( ) chứa hình ảnh biểu đồ. MetricWidgetImage Uint8Array { "MetricWidgetImage": { "0": 137, "1": 80, "2": 78, ... } } Để chuyển đổi bộ đệm mảng này thành chuỗi base64: const buffer = Buffer.from(metricImage.MetricWidgetImage); console.log(buffer.toString('base64')); Điều này mang lại cho chúng tôi: iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAACXBIWXMA... Điều đó có thể được chuyển đổi thành một hình ảnh trông giống như vậy: Truy xuất các phiên xem trực tiếp hiện tại cho một kênh Như đã đề cập ở trên, bạn có thể dễ dàng nhận được số lượng phiên xem hiện tại cho luồng trực tiếp đang hoạt động trên một kênh thông qua mô-đun máy khách Amazon IVS trong AWS SDK. Đối với điều này, hãy sử dụng phương thức . 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); Mà tạo ra đầu ra như sau. { "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 } } Lưu ý thuộc tính là số phiên xem trực tiếp cho luồng trực tiếp hiện tại. viewerCount Bản tóm tắt Trong bài đăng này, chúng ta đã tìm hiểu cách truy xuất dữ liệu chế độ xem cho các luồng trực tiếp Amazon IVS của mình qua CloudWatch và Amazon IVS SDK. Để tìm hiểu thêm, hãy xem . tài liệu Vương miện