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

Trình theo dõi Chromestatus | Lỗi Chromium

EME: Truy vấn hỗ trợ lược đồ mã hoá

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

Để tránh phải xác định nền tảng mà họ đang sử dụng để kiểm tra nhãn "đã biết" hỗ trợ lược đồ mã hoá, khoá encryptionScheme mới sẽ được thêm vào MediaKeySystemMediaCapability từ điển để cho phép các trang web chỉ định có thể dùng lược đồ mã hoá nào 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' Mã hoá mẫu phụ NAL video và mẫu đầy đủ của chế độ AES-CTR.
  • 'cbcs' Mã hoá một phần mẫu NAL video ở chế độ AES-CBC.

Nếu bạn không chỉ định chính sách này, hệ thống sẽ chỉ ra rằng mọi giao thức mã hoá đều được chấp nhận. Ghi chú rằng Xoá khoá luôn hỗ trợ lược đồ 'cenc'.

Ví dụ bên dưới cho thấy cách truy vấn hai cấu hình với các cấu hình khác nhau các giao thức mã hoá. Trong trường hợp này, chỉ một tài khoả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ỉ có một cấu hình có hai phương thức mã hoá khác nhau các giao thức được truy vấn. Trong trường hợp đó, Chrome sẽ loại bỏ mọi đối tượng chức năng nó không thể hỗ trợ, vì vậy cấu hình được tích luỹ có thể chứa một 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 | Trình theo dõi trạng thái Chrome | Lỗi Chromium

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

Ngày nay, HDCP là một yêu cầu phổ biến trong chính sách để truyền trực tuyến độ phân giải cao nội dung được bảo vệ. Những 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 phát trực tuyến nội dung có độ phân giải thấp. Chúng tôi rất tiếc khi biết rằng Chính sách về DHU Mục đích của Check API là giải quyết.

API đề xuất này cho phép các nhà phát triển web truy vấn xem có một chính sách HDCP nhất định hay không có thể được thực thi để có thể bắt đầu quá trình phát ở độ phân giải tối ưu cho trải nghiệm người dùng tốt nhất. Nó 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 phải tạo MediaKeySession hoặc tìm nạp một giấy phép thực. Không bắt buộc phải có MediaKeys được đính kèm 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à một giá trị hợp lệ. Nếu có HDCP ở phiên bản đã chỉ định, thì lời hứa được phân giải với MediaKeyStatus'usable'. Nếu không thì lời hứa giải quyết với 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á không hỗ trợ 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, sau đây là cách hoạt động của API này. Hãy xem mẫu chính thức để dùng thử tất cả các phiên bản của 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ó cho bản dùng thử theo nguyên gốc

Để nhận phản hồi của nhà phát triển web, trước đây chúng tôi đã thêm Chính sách dành cho HDCP Kiểm tra tính năng API trong 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 | Trình theo dõi trạng thái Chrome | Lỗi Chromium

Tuân thủ MSE PTS/DTS

Các phạm vi và giá trị thời lượng được lưu vào vùng đệm hiện được báo cáo bằng Dấu thời gian trình bày (PTS) thay vì bằng khoảng thời gian Giải mã dấu thời gian (DTS) trong mục Nội dung đa phương tiện Tiện ích nguồn (MSE).

Khi MSE còn mới, việc triển khai của Chrome đã được thử nghiệm so với WebM và MP3, một số trong đó không có sự khác biệt giữa PTS và DTS. và 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 đúng thứ tự so với luồng thời gian giải mã (cho như H.264 chẳng hạn) khiến DTS và PTS khác nhau. Điều đó khiến Chrome sẽ báo cáo (thường chỉ là một chút) phạm vi và thời lượng vùng đệm khác nhau hơn dự kiến. Hành vi mới này sẽ được triển khai từng bước trong Chrome 69 và triển khai MSE theo quy cách MSE.

PTS/DTS
PTS/DTS

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

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

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

Xử lý ý định đối với lượt 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 người dùng sơ cấp điện thoại thông minh. Để đạt được mục tiêu đó, video không nhất thiết xuất hiện cùng với một số lượt xem nội dung nghe nhìn vì vậy, nếu người dùng cố gắng mở một video đã tải xuống, họ sẽ không có ứng dụng nào để xử lý ý định đó.

Để khắc phục vấn đề này, Chrome 69 trên Android Go hiện lắng nghe ý đị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, cần vị trí của các ứng dụng xem bị thiếu.

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

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

Lỗi Chromium

Xoá nhãn "bị trì hoãn" sự kiện cho các phần tử truyền thông bằng MSE

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

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

Ý định ngừng sử dụng và xoá | Trình theo dõi trạng thái Chrome | Lỗi Chromium