MediaStream (hay getUserMedia)

Một phần của tài liệu Nghiên cứu hệ thống truyền thông đa phương tiện thời gian thực trên cơ sở giải pháp kỹ thuật WEBRTC (Trang 39 - 42)

CHƢƠNG 2 GIẢI PHÁP KỸ THUẬT WEBRTC

2.5.1.MediaStream (hay getUserMedia)

2.5. CÁC API CƠ BẢN

2.5.1.MediaStream (hay getUserMedia)

Điều quan trọng đối với truyền thông RTC là chất lƣợng cuộc gọi tốt và độ trễ thời gian hợp lý. Chất lƣợng cuộc gọi tốt đòi hỏi khi lấy đƣợc audio và

video từ client phải xử lý và mã hóa một cách tối ƣu. WebRTC cung cấp APIs lấy và xử lý audio và video một cách tốt nhất.

Một MediaStream đại diện cho sự đồng bộ dữ liệu âm thanh và hình ảnh. MediaStream đƣợc khởi tạo bằng cách gọi hàm getUserMedia(). Sau khi một kết nối WebRTC tới một máy tính khác đƣợc thiết lập, chúng ta có khả năng truy cập vào stream của máy tính đó. Mỗi peer sẽ có một local media stream riêng [9].

Hình 2.8. Audio và Video trong WebRTC

Một MediaStream đƣợc tạo ra bởi hàm navigator.getUserMedia(). Mỗi MediaStream sẽ có input/output. Input sẽ lấy những dữ liệu âm thanh và hình ảnh của local và output dùng để hiển thị lên view hoặc đƣợc RTCPeerConnection sử dụng. Mỗi MediaStream đều có một cái nhãn, chẳng hạn nhƣ “Xk7EuLhsuHKbnjLWkW4yYGNJJ8ONsgwHBvLQ” [2].

Phƣơng thức getUserMedia có 3 tham số: + Một constraints object

+ Một hàm callback khi success + Một hàm callback khi failure

một mảng dữ liệu media stream. Nếu khơng lấy đƣợc audio hoặc video thì nó sẽ trả về một mảng rỗng.

Constraints dùng để cấu hình audio hay video sẽ đƣợc dùng, camera trƣớc hoặc camera sau, frame rate, chiều dài và chiều rộng.

Để truy cập vào camera và microphone ta sử dụng đoạn mã sau:

navigator.getUserMedia = navigator.getUserMedia ||

navigator.webkitGetUserMedia || navigator.mozGetUserMedia;

var constraints = { audio: false, video: true }; // constraints dùng để config audio/ video sẽ được sử dụng

var video = document.querySelector("video"); function successCallback(stream) { video.src = window.URL.createObjectURL(stream); } function errorCallback(error){ console.log("getUserMedia lỗi “); }

navigator.getUserMedia(constraints, successCallback, errorCallback);

Phƣơng thức getUserMedia() là một hàm dùng để lấy âm thanh và video từ những nền tảng cơ bản. Sau đó, media thu đƣợc tự động tối ƣu hóa, mã hóa và giải mã bằng cơng cụ “The WebRTC audio and video engines” rồi chuyển đến các thiết bị đầu ra. Hiện nay, âm thanh và video khi thu đƣợc từ yêu cầu đƣợc quyền cấp phép của trình duyệt đƣợc mã hóa lần lƣợt theo định dạng Opus và VP8 [3].

Hình 2.9. Trình duyệt hỏi cấp phép chia sẻ sử dụng camera và microphone

Một phần của tài liệu Nghiên cứu hệ thống truyền thông đa phương tiện thời gian thực trên cơ sở giải pháp kỹ thuật WEBRTC (Trang 39 - 42)