paint-brush
Cách theo dõi Phân tích người xem phát trực tiếp với Amazon IVStừ tác giả@amazonivs
382 lượt đọc
382 lượt đọc

Cách theo dõi Phân tích người xem phát trực tiếp với Amazon IVS

từ tác giả Amazon Interactive Video Service (IVS) 6m2023/04/05
Read on Terminal Reader

dài quá đọc không nổi

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. Dữ liệu người xem cũng được lưu trữ trong CloudWatch và có thể được truy xuất qua SDK. Như chúng ta sẽ thấy, có một phương pháp bổ sung để biết số lượng người xem hiện tại của luồng trực tiếp.
featured image - Cách theo dõi Phân tích người xem phát trực tiếp với Amazon IVS
Amazon Interactive Video Service (IVS)  HackerNoon profile picture
0-item
1-item

Trong bài đăng trước của tôi, chúng ta đã xem 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) 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.


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.


Lưu ý: 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ư ConcurrentChatConnections và tin nhắn Delivered . 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ài liệu để tìm hiểu thêm.

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 ConcurrentViews của mình thông qua bảng điều khiển CloudWatch. Đầu tiên, chọn Tất cả số liệu , sau đó chọn IVS .

Tiếp theo, chọn Theo kênh .

Sau đó chọn hộp kiểm trong hàng chứa ConcurrentViews cho bất kỳ kênh Amazon IVS nào của bạn.

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 Id luồng từ trang chi tiết kênh.

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 chế độ xem Đồng thời cho phiên.

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 ARN của kênh, StartTimeEndTime để truy xuất 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 ).


Lời nhắc: Bạn sẽ luôn cần có EndTime , 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 EndTime khi sử dụng SDK để truy xuất chỉ số.


Để 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 @aws-sdk/client-cloudwatch và tạo một phiên bản ứng dụng khách ( new CloudWatchClient() ). 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.


 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 StartTime , EndTime và một mảng MetricDataQueries . Mảng truy vấn sẽ chứa một đối tượng duy nhất chỉ định MetricName ( ConcurrentViews ), Namespace ( AWS/IVS ) và Dimensions để lọc theo (tên kênh, trong trường hợp này).

 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 MetricWidgetImage chứa bộ đệm mảng ( Uint8Array ) chứa hình ảnh biểu đồ.

 { "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 viewerCount là số phiên xem trực tiếp cho luồng trực tiếp hiện tại.

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