Bản cập nhật về nội dung nghe nhìn trong Chrome 69

François Beaufort
François Beaufort

Bộ giải mã video AV1

Công cụ theo dõi Chromestatus | Lỗi Chromium

EME: Truy vấn hỗ trợ giao thức mã hoá

Một số nền tảng hoặc hệ thống chính chỉ hỗ trợ chế độ CENC, trong khi những nền tảng hoặc hệ thống khác chỉ hỗ trợ chế độ CBCS. Một số nhà quảng cáo khác vẫn có thể hỗ trợ cả hai. Hai cơ chế mã hoá này không tương thích với nhau, vì vậy, nhà phát triển web phải có khả năng đưa ra lựa chọn thông minh về nội dung sẽ phân phát.

Để tránh phải xác định họ đang sử dụng nền tảng nào để kiểm tra xem trang web có hỗ trợ giao thức mã hoá "đã biết" hay không, khoá encryptionScheme mới sẽ được thêm vào trong từ điển MediaKeySystemMediaCapability để cho phép các trang web chỉ định giao thức mã hoá nào có thể được sử dụng trong Tiện ích phương tiện đã mã hoá (EME).

Khoá encryptionScheme mới có thể là một trong hai giá trị:

  • 'cenc' Chế độ AES-CTR mẫu đầy đủ và mã hoá mẫu phụ NAL video.
  • 'cbcs' Mã hoá một phần mẫu NAL cho video ở chế độ AES-CBC.

Nếu không được chỉ định, thì tức là mọi lược đồ mã hoá đều được chấp nhận. Lưu ý rằng Clear Key (Xoá khoá) luôn hỗ trợ lược đồ 'cenc'.

Ví dụ bên dưới cho biết cách truy vấn 2 cấu hình bằng các giao thức mã hoá khác nhau. Trong trường hợp này, chỉ một thành phần được chọn.

await navigator.requestMediaKeySystemAccess('org.w3.clearkey', [
    {
      label: 'configuration using the "cenc" encryption scheme',
      videoCapabilities: [{
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cenc'
      }],
      audioCapabilities: [{
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cenc'
      }],
      initDataTypes: ['keyids']
    },
    {
      label: 'configuration using the "cbcs" encryption scheme',
      videoCapabilities: [{
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cbcs'
      }],
      audioCapabilities: [{
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cbcs'
      }],
      initDataTypes: ['keyids']
    },
  ]);

Trong ví dụ bên dưới, chỉ một cấu hình có hai giao thức mã hóa khác nhau được truy vấn. Trong trường hợp đó, Chrome sẽ loại bỏ mọi đối tượng chức năng mà Chrome không hỗ trợ, vì vậy, cấu hình tích luỹ có thể chứa một giao thức mã hoá hoặc cả hai.

await navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{
    videoCapabilities: [
      { // A video capability using the "cenc" encryption scheme
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cenc'
      },
      { // A video capability using the "cbcs" encryption scheme
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cbcs'
      },
    ],
    audioCapabilities: [
      { // An audio capability using the "cenc" encryption scheme
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cenc'
      },
      { // An audio capability using the "cbcs" encryption scheme
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cbcs'
      },
    ],
    initDataTypes: ['keyids']
  }]);

Ý định triển khai | Công cụ theo dõi trạng thái Chrome | Lỗi Chromium

EME: Kiểm tra chính sách HDCP

Hiện nay, HDCP là một yêu cầu phổ biến của chính sách để truyền trực tuyến nội dung được bảo vệ ở độ phân giải cao. Các nhà phát triển web muốn thực thi chính sách HDCP phải đợi quá trình trao đổi giấy phép hoàn tất hoặc bắt đầu truyền trực tuyến nội dung ở độ phân giải thấp. Đây là một tình huống đáng buồn mà API Kiểm tra chính sách HDCP hướng đến giải quyết.

API được đề xuất này cho phép nhà phát triển web truy vấn xem có thể thực thi một chính sách HDCP nhất định hay không để có thể bắt đầu phát ở độ phân giải tối ưu nhằm mang lại trải nghiệm người dùng tốt nhất. Chính sách này bao gồm một phương thức đơn giản để truy vấn trạng thái của một khoá giả định được liên kết với chính sách HDCP mà không cần tạo MediaKeySession hoặc tìm nạp giấy phép thực. Phương thức này cũng không yêu cầu đính kèm MediaKeys vào bất kỳ phần tử âm thanh hoặc video nào.

API Kiểm tra chính sách HDCP hoạt động đơn giản bằng cách gọi mediaKeys.getStatusForPolicy() với một đối tượng có khoá minHdcpVersion và giá trị hợp lệ. Nếu HDCP có sẵn ở phiên bản đã chỉ định, thì lời hứa được trả về sẽ phân giải bằng MediaKeyStatus của 'usable'. Nếu không, lời hứa sẽ giải quyết bằng các giá trị lỗi khác của MediaKeyStatus, chẳng hạn như 'output-restricted' hoặc 'output-downscaled'. Nếu hệ thống khoá hoàn toàn không hỗ trợ tính năng Kiểm tra chính sách HDCP (ví dụ: Xoá hệ thống khoá), thì lời hứa sẽ bị từ chối.

Tóm lại, đây là cách hoạt động hiện tại của API. Xem mẫu chính thức để dùng thử tất cả các phiên bản HDCP.

const config = [{
  videoCapabilities: [{
    contentType: 'video/webm; codecs="vp09.00.10.08"',
    robustness: 'SW_SECURE_DECODE' // Widevine L3
  }]
}];

navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(mediaKeySystemAccess => mediaKeySystemAccess.createMediaKeys())
.then(mediaKeys => {

  // Get status for HDCP 2.2
  return mediaKeys.getStatusForPolicy({ minHdcpVersion: '2.2' })
  .then(status => {
    if (status !== 'usable')
      return Promise.reject(status);

    console.log('HDCP 2.2 can be enforced.');
    // TODO: Fetch high resolution protected content...
  });
})
.catch(error => {
  // TODO: Fallback to fetch license or stream low-resolution content...
});

Có thể dùng bản dùng thử theo nguyên gốc

Để nhận ý kiến phản hồi từ các nhà phát triển web, trước đây, chúng tôi đã thêm tính năng API Kiểm tra chính sách HDCP vào Chrome 69 dành cho máy tính (ChromeOS, Linux, Mac và Windows).

Thử nghiệm đã kết thúc thành công vào tháng 11 năm 2018.

Ý định để thử nghiệm | Công cụ theo dõi trạng thái của Chrome | Lỗi Chromium

Tuân thủ MSE PTS/DTS

Phạm vi vùng đệm và giá trị thời lượng hiện được báo cáo theo khoảng thời gian của Dấu thời gian trình bày (PTS), thay vì theo khoảng thời gian của Dấu thời gian giải mã (DTS) trong Tiện ích nguồn nội dung nghe nhìn (MSE).

Khi MSE mới ra mắt, hoạt động triển khai của Chrome đã được thử nghiệm trên WebM và MP3, một số định dạng luồng nội dung đa phương tiện không có sự khác biệt giữa PTS và DTS. Nó hoạt động tốt cho đến khi ISO BMFF (còn gọi là MP4) được thêm vào. Vùng chứa này thường chứa bản trình bày không theo thứ tự so với luồng thời gian giải mã (ví dụ: đối với các bộ mã hoá và giải mã như H.264) khiến DTS và PTS khác nhau. Điều đó khiến Chrome báo cáo (thường chỉ chênh lệch một chút) phạm vi vùng đệm và giá trị thời lượng so với dự kiến. Hành vi mới này sẽ ra mắt dần trong Chrome 69 và giúp quá trình triển khai MSE tuân thủ thông số kỹ thuật MSE.

PTS/DTS
PTS/DTS

Thay đổi này ảnh hưởng đến MediaSource.duration (và do đó là HTMLMediaElement.duration), SourceBuffer.buffered (và do đó, HTMLMediaElement.buffered)SourceBuffer.remove(start, end).

Nếu không chắc chắn phương thức nào được dùng để báo cáo phạm vi và giá trị thời lượng được lưu vào vùng đệm, bạn có thể truy cập trang chrome://media-internals nội bộ rồi tìm "ChunkDemuxer: lưu vào bộ đệm theo PTS" hoặc "ChunkDemuxer: lưu vào bộ đệm do DTS" trong nhật ký.

Ý định triển khai | Lỗi Chromium

Xử lý ý định chế độ xem nội dung nghe nhìn trên Android Go

Android Go là một phiên bản Android gọn nhẹ được thiết kế cho điện thoại thông minh cấp thấp. Do đó, không nhất thiết phải đi kèm với một số ứng dụng xem nội dung nghe nhìn, vì vậy, nếu người dùng cố gắng mở video đã tải xuống, thì họ sẽ không có bất kỳ ứng dụng nào để xử lý ý định đó.

Để khắc phục vấn đề này, Chrome 69 trên Android Go hiện theo dõi ý định xem nội dung nghe nhìn để người dùng có thể xem âm thanh, video và hình ảnh đã tải xuống. Nói cách khác, nó thay thế các ứng dụng xem bị thiếu.

ALT_TEXT_HERE
Trình xử lý ý định nội dung đa phương tiện

Xin lưu ý rằng tính năng này của Chrome được bật trên tất cả các thiết bị Android chạy Android O trở lên có RAM 1 GB trở xuống.

Lỗi Chromium

Xoá các sự kiện "bị trì hoãn" đối với các thành phần nội dung đa phương tiện bằng MSE

Sự kiện "bị trì hoãn" xuất hiện trên phần tử nội dung nghe nhìn nếu quá trình tải dữ liệu nội dung nghe nhìn xuống không tiến hành được trong khoảng 3 giây. Khi sử dụng Tiện ích nguồn nội dung nghe nhìn (MSE), ứng dụng web sẽ quản lý quá trình tải xuống và phần tử nội dung nghe nhìn không biết được tiến trình của quá trình tải xuống đó. Điều này khiến Chrome tăng các sự kiện "bị trì hoãn" vào thời điểm không thích hợp bất cứ khi nào trang web chưa thêm các đoạn dữ liệu nội dung nghe nhìn mới bằng SourceBuffer.appendBuffer() trong 3 giây qua.

Vì các trang web có thể quyết định nối thêm nhiều phần dữ liệu với tần suất thấp, nên đây không phải là tín hiệu hữu ích về tình trạng lưu vào bộ đệm. Việc xoá các sự kiện "bị trì hoãn" cho các thành phần nội dung đa phương tiện bằng MSE sẽ giúp loại bỏ sự nhầm lẫn và giúp Chrome phù hợp hơn với thông số kỹ thuật của MSE. Xin lưu ý rằng các thành phần nội dung đa phương tiện không sử dụng MSE sẽ tiếp tục gây ra các sự kiện "bị trì hoãn" như hiện nay.

Ý định không dùng nữa và xoá | Công cụ theo dõi trạng thái Chrome | Lỗi Chromium