การอัปเดตสื่อใน Chrome 62

François Beaufort
François Beaufort

ใบอนุญาตถาวรสำหรับ Android

ใบอนุญาตถาวรใน Encrypted Media Extensions (EME) หมายความว่าใบอนุญาตจะคงอยู่ในอุปกรณ์เพื่อให้แอปพลิเคชันโหลดใบอนุญาตลงในหน่วยความจำได้โดยไม่ต้องส่งคำขอใบอนุญาตไปยังเซิร์ฟเวอร์อีก นี่เป็นวิธีที่ EME รองรับการเล่นแบบออฟไลน์

ก่อนหน้านี้ ChromeOS เป็นแพลตฟอร์มเดียวที่รองรับใบอนุญาตถาวร ไม่เป็นความจริงอีกต่อไป ตอนนี้ Android เล่นเนื้อหาที่ได้รับการคุ้มครองผ่าน EME ได้ขณะออฟไลน์แล้ว

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

// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
  // User will be able to watch encrypted content while being offline when
  // license is stored locally on device and loaded later.
})
.catch(error => {
  // Persistent licenses are not supported on this platform yet.
});

คุณสามารถลองใช้ใบอนุญาตถาวรด้วยตนเองได้โดยดูตัวอย่าง PWA ของสื่อและทำตามขั้นตอนต่อไปนี้

  1. ไปที่ https://biograf-155113.appspot.com/ttt/episode-2/
  2. คลิก "ทำให้ใช้งานแบบออฟไลน์ได้" แล้วรอให้วิดีโอดาวน์โหลด
  3. เปิดโหมดบนเครื่องบิน
  4. คลิกปุ่ม "เล่น" แล้วเพลิดเพลินไปกับวิดีโอ

Widevine L1 สำหรับ Android

ดังที่คุณอาจทราบแล้ว อุปกรณ์ Android ทั้งหมดต้องรองรับ Widevine Security Level 3 (Widevine L3) อย่างไรก็ตาม อุปกรณ์จำนวนมากรองรับการรักษาความปลอดภัยในระดับสูงสุดด้วย ซึ่งก็คือ การรักษาความปลอดภัยระดับ 1 ของ Widevine ที่การประมวลผลเนื้อหา การเข้ารหัส และการควบคุมทั้งหมดจะดำเนินการภายในสภาพแวดล้อมการดำเนินการที่เชื่อถือได้ (TEE)

ข่าวดี ตอนนี้ Chrome สำหรับ Android รองรับ Widevine L1 แล้วเพื่อให้เล่นสื่อได้อย่างปลอดภัยที่สุด โปรดทราบว่า ChromeOS รองรับฟีเจอร์นี้อยู่แล้ว

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

// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
  // User will be able to watch encrypted content in the most secure way.
})
.catch(error => {
  // Widevine L1 is not supported on this platform yet.
});

Shaka Player ซึ่งเป็นไลบรารี JavaScript สำหรับรูปแบบสื่อแบบปรับเปลี่ยนได้ (เช่น DASH และ HLS) มีเวอร์ชันเดโมให้คุณลองใช้ Widevine L1

  1. ไปที่ https://shaka-player-demo.appspot.com/demo/ แล้วคลิก "อนุญาต" เมื่อได้รับข้อความแจ้ง
  2. เลือก "Angel One (มัลติโค้ด หลายภาษา Widevine)"
  3. ป้อน HW_SECURE_ALL ในช่อง "ความเสถียรของวิดีโอ" ของส่วน "การกําหนดค่า"
  4. คลิกปุ่ม "โหลด" แล้วเพลิดเพลินไปกับวิดีโอ

การเพิ่มประสิทธิภาพแทร็กวิดีโอที่เล่นอยู่เบื้องหลัง (MSE เท่านั้น)

ทีม Chrome พยายามหาวิธีใหม่ๆ ในการปรับปรุงอายุการใช้งานแบตเตอรี่อยู่เสมอ และ Chrome 62 ก็ไม่ใช่ข้อยกเว้น

ตอนนี้ Chrome จะปิดใช้แทร็กวิดีโอเมื่อเล่นวิดีโอในเบื้องหลัง (เช่น ในแท็บที่มองไม่เห็น) หากวิดีโอใช้ส่วนขยายแหล่งที่มาของสื่อ (MSE) ดูข้อมูลเพิ่มเติมได้ที่บทความก่อนหน้า

ปรับแต่งช่วงที่สามารถกรอในสตรีม MSE แบบสด

คุณอาจทราบอยู่แล้วว่าแอตทริบิวต์ seekable มีช่วงของทรัพยากรสื่อที่เบราว์เซอร์สามารถกรอไปดูได้ โดยปกติแล้วจะมีช่วงเวลาเดียวที่เริ่มต้นที่ 0 และสิ้นสุดที่ระยะเวลาของทรัพยากรสื่อ อย่างไรก็ตาม หากไม่มีระยะเวลา เช่น สตรีมแบบสด ช่วงเวลาอาจเปลี่ยนแปลงอย่างต่อเนื่อง

ข่าวดีคือตอนนี้คุณปรับแต่งseekableตรรกะช่วงด้วย Media Source Extensions (MSE) ได้อย่างมีประสิทธิภาพมากขึ้นโดยระบุหรือนำช่วงแบบเลื่อนดูได้ช่วงเดียวที่รวมกับช่วงที่มีบัฟเฟอร์ไว้ในปัจจุบันออก ผลที่ได้คือช่วงที่มีการเลือกดูได้เพียงช่วงเดียวซึ่งเหมาะกับทั้ง 2 รายการ เมื่อระยะเวลาของแหล่งที่มาของสื่อคือ +Infinity

ในโค้ดด้านล่าง แหล่งที่มาของสื่อจะแนบอยู่กับองค์ประกอบสื่อแล้ว และมีเฉพาะกลุ่ม init เท่านั้น

const mediaSource = new MediaSource();
...

mediaSource.duration = +Infinity;
// Seekable time ranges: { }
// Buffered time ranges: { }

mediaSource.setLiveSeekableRange(1 /* start */, 4 /* end */);
// Seekable time ranges: { [1.000, 4.000) }
// Buffered time ranges: { }

// Let's append a media segment that starts at 3 seconds and ends at 6.
mediaSource.sourceBuffers[0].appendBuffer(someData);
// Seekable time ranges: { [1.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }

mediaSource.clearLiveSeekableRange();
// Seekable time ranges: { [0.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }

มีหลายกรณีที่ไม่ได้กล่าวถึงข้างต้น เราจึงขอแนะนำให้ลองใช้ตัวอย่างอย่างเป็นทางการเพื่อดูว่าช่วงเวลาที่บัฟเฟอร์ไว้และช่วงเวลาที่กรอได้ตอบสนองต่อเหตุการณ์ MSE ต่างๆ อย่างไร

Intent to Ship | เครื่องมือติดตามสถานะ Chrome | ข้อบกพร่องของ Chromium

FLAC ใน MP4 สำหรับ MSE

การเล่นสื่อแบบปกติรองรับรูปแบบการเข้ารหัสเสียงแบบไม่สูญเสียรายละเอียด FLAC ตั้งแต่ Chrome 56 และเพิ่มการรองรับ FLAC ใน ISO-BMFF (หรือที่เรียกว่า FLAC ใน MP4) ตามมาในไม่ช้า ตอนนี้ FLAC ใน MP4 พร้อมใช้งานใน Chrome 62 สำหรับส่วนขยายแหล่งที่มาของสื่อ (MSE) แล้ว

โปรดทราบว่าทีม Firefox เป็นผู้พัฒนาและติดตั้งใช้งานข้อกำหนดเฉพาะในการรวมข้อมูล FLAC ไว้ใน MP4 และ BBC กำลังทดลองใช้ข้อกำหนดดังกล่าวกับ MSE อ่านข้อมูลเพิ่มเติมได้ในโพสต์"การส่งเสียงคอนเสิร์ตของ Radio 3" ของ BBC

วิธีตรวจสอบว่า MSE รองรับ FLAC ใน MP4 หรือไม่มีดังนี้

if (MediaSource.isTypeSupported('audio/mp4; codecs="flac"')) {
  // TODO: Fetch data and feed it to a media source.
}

หากต้องการดูตัวอย่างแบบเต็ม โปรดดูตัวอย่างอย่างเป็นทางการ

Intent to Ship | เครื่องมือติดตามสถานะ Chrome | ข้อบกพร่องของ Chromium

วิดีโอจะเปลี่ยนเป็นโหมดเต็มหน้าจอโดยอัตโนมัติเมื่อหมุนอุปกรณ์

หากคุณหมุนอุปกรณ์เป็นแนวนอนขณะที่วิดีโอเล่นอยู่ในวิวพอร์ต ระบบจะเปลี่ยนการเล่นเป็นโหมดเต็มหน้าจอโดยอัตโนมัติ การหันอุปกรณ์เป็นแนวตั้งจะทำให้วิดีโอกลับไปอยู่ในโหมดหน้าต่าง ดูรายละเอียดเพิ่มเติมได้ในบทความที่ผ่านมา