- รองรับการเล่นแบบออฟไลน์โดยมีใบอนุญาตถาวรและ Widevine L1 ใน Android
- ตอนนี้ Chrome จะปิดใช้แทร็กวิดีโอเมื่อวิดีโอ MSE เล่นอยู่เบื้องหลังเพื่อเพิ่มประสิทธิภาพ
- นักพัฒนาเว็บปรับแต่งช่วงที่ค้นหาได้ในสตรีมแบบสด MSE แบบสดได้
- ตอนนี้ Chrome รองรับ FLAC ใน MP4 พร้อม MSE แล้ว
- วิดีโอจะแสดงแบบเต็มหน้าจอเมื่อหมุนอุปกรณ์
ใบอนุญาตถาวรสำหรับ Android
ใบอนุญาตถาวรในส่วนขยายสื่อที่เข้ารหัส (EME) หมายถึงจะคงใบอนุญาตไว้ในอุปกรณ์ได้เพื่อให้แอปพลิเคชันโหลดใบอนุญาตลงในหน่วยความจำได้โดยไม่ต้องส่งคำขอใบอนุญาตอีกรายการไปยังเซิร์ฟเวอร์ วิธีนี้คือวิธีที่ EME รองรับการเล่นแบบออฟไลน์
จนถึงปัจจุบัน ChromeOS เป็นแพลตฟอร์มเดียวที่รองรับใบอนุญาตถาวร เรื่องนี้ไม่จริงอีกต่อไป เล่นเนื้อหาที่มีการคุ้มครองผ่าน EME ขณะที่อุปกรณ์ออฟไลน์ก็เล่นใน Android ได้เช่นกัน
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.
});
คุณลองใช้ใบอนุญาตถาวรด้วยตนเองได้โดยดูที่ Sample Media PWA และทำตามขั้นตอนต่อไปนี้
- ไปที่ https://biograf-155113.appspot.com/ttt/episode-2/
- คลิก "ทำให้ใช้งานแบบออฟไลน์ได้" และรอให้วิดีโอดาวน์โหลด
- เปิดโหมดบนเครื่องบิน
- คลิกปุ่ม "เล่น" แล้วเพลิดเพลินไปกับวิดีโอได้เลย
Widevine L1 สำหรับ Android
คุณอาจทราบแล้วว่าอุปกรณ์ Android ทั้งหมดต้องรองรับ Widevine ความปลอดภัยระดับ 3 (widevine L3) อย่างไรก็ตาม มีอุปกรณ์อีกจำนวนมากที่รองรับระดับการรักษาความปลอดภัยสูงสุดด้วย ซึ่งก็คือ widevine Security ระดับ 1 ซึ่งใช้การประมวลผลเนื้อหา วิทยาการเข้ารหัส และการควบคุมทั้งหมดภายในสภาพแวดล้อมการดำเนินการที่เชื่อถือได้ (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 ต่างๆ อย่างไร
Intent to Ship | Chromestatus Tracker | ข้อบกพร่อง Chromium
FLAC ใน MP4 สำหรับ MSE
การเล่นสื่อตามปกติรองรับรูปแบบการเขียนโค้ดเสียง FLAC แบบไม่สูญเสียข้อมูลตั้งแต่ Chrome 56 หลังจากนั้นไม่นานก็มีการเพิ่ม FLAC ในการรองรับ ISO-BMFF (หรือ FLAC ใน MP4) และตอนนี้ FLAC ใน MP4 พร้อมใช้งานแล้วใน Chrome 62 สำหรับส่วนขยายแหล่งที่มาของสื่อ (MSE)
หากต้องการทราบข้อมูลนี้ นักพัฒนา Firefox คือผู้ที่พัฒนาและนำการรองรับ FLAC ในข้อกำหนดการห่อหุ้ม MP4 มาใช้ โดย BBC ได้ทดลองนำรูปแบบดังกล่าวไปใช้กับ MSE คุณสามารถอ่านโพสต์ "Delivering Radio 3 Concert Sound" ของ BBC เพื่อดูข้อมูลเพิ่มเติม
ต่อไปนี้คือวิธีที่คุณสามารถตรวจสอบว่า MSE สนับสนุน FLAC ใน MP4 หรือไม่
if (MediaSource.isTypeSupported('audio/mp4; codecs="flac"')) {
// TODO: Fetch data and feed it to a media source.
}
หากต้องการดูตัวอย่างแบบเต็ม โปรดดูตัวอย่างอย่างเป็นทางการของเรา
Intent to Ship | Chromestatus Tracker | ข้อบกพร่อง Chromium
วิดีโออัตโนมัติจะแสดงแบบเต็มหน้าจอเมื่อมีการหมุนอุปกรณ์
หากคุณหมุนอุปกรณ์ให้อยู่ในแนวนอนขณะที่วิดีโอกำลังเล่นในวิวพอร์ต การเล่นจะสลับเป็นโหมดเต็มหน้าจอโดยอัตโนมัติ การหมุนอุปกรณ์เป็นแนวตั้ง จะทำให้วิดีโอกลับไปเป็นโหมดหน้าต่าง ดูรายละเอียดเพิ่มเติมได้ในบทความที่ผ่านมา