การอัปเดตสื่อใน 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 แล้วเพื่อให้เล่นสื่อได้อย่างปลอดภัยที่สุด โปรดทราบว่า Chrome OS รองรับฟีเจอร์นี้อยู่แล้ว

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 ได้อย่างมีประสิทธิภาพมากขึ้นด้วยส่วนขยายแหล่งที่มาของสื่อ (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 ต่างๆ อย่างไร

ความตั้งใจที่จะจัดส่ง | Chromestatus เครื่องมือติดตาม | ข้อบกพร่องของ 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

ต่อไปนี้คือวิธีที่คุณสามารถตรวจสอบว่า FLAC ใน MP4 ได้รับการสนับสนุนสำหรับ MSE หรือไม่

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

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

ความตั้งใจที่จะจัดส่ง | Chromestatus เครื่องมือติดตาม | ข้อบกพร่องของ Chromium

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

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