- ตอนนี้ Android รองรับการเล่นแบบออฟไลน์ด้วยใบอนุญาตถาวรและ Widevine L1 แล้ว
- ตอนนี้ Chrome ปิดใช้แทร็กวิดีโอเมื่อเล่นวิดีโอ MSE ในเบื้องหลังเพื่อเพิ่มประสิทธิภาพ
- นักพัฒนาเว็บสามารถปรับแต่งช่วงที่สามารถกรอในสตรีม MSE แบบสด
- ตอนนี้ Chrome รองรับ FLAC ใน MP4 ด้วย MSE แล้ว
- วิดีโอจะแสดงแบบเต็มหน้าจอเมื่อหมุนอุปกรณ์
ใบอนุญาตถาวรสำหรับ 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 ของสื่อและทำตามขั้นตอนต่อไปนี้
- ไปที่ https://biograf-155113.appspot.com/ttt/episode-2/
- คลิก "ทำให้ใช้งานแบบออฟไลน์ได้" แล้วรอให้วิดีโอดาวน์โหลด
- เปิดโหมดบนเครื่องบิน
- คลิกปุ่ม "เล่น" แล้วเพลิดเพลินกับวิดีโอได้เลย!
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 ดังนี้
- ไปที่ https://shaka-player-demo.appspot.com/demo/ แล้วคลิก "อนุญาต" เมื่อได้รับข้อความแจ้ง
- เลือก "Angel One (มัลติโค้ด หลายภาษา Widevine)"
- ป้อน
HW_SECURE_ALL
ในช่อง "ความเสถียรของวิดีโอ" ของส่วน "การกําหนดค่า" - คลิกปุ่ม "โหลด" แล้วเพลิดเพลินไปกับวิดีโอ
การเพิ่มประสิทธิภาพแทร็กวิดีโอพื้นหลัง (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
วิดีโอจะเปลี่ยนเป็นโหมดเต็มหน้าจอโดยอัตโนมัติเมื่อหมุนอุปกรณ์
หากคุณหมุนอุปกรณ์เป็นแนวนอนขณะที่วิดีโอเล่นอยู่ในวิวพอร์ต ระบบจะเปลี่ยนการเล่นเป็นโหมดเต็มหน้าจอโดยอัตโนมัติ การหันอุปกรณ์เป็นแนวตั้งจะทำให้วิดีโอกลับไปอยู่ในโหมดหน้าต่าง ดูรายละเอียดเพิ่มเติมได้ในบทความที่ผ่านมา