คุณได้เตรียมไฟล์วิดีโอสำหรับเว็บอย่างถูกต้องแล้ว คุณได้ระบุขนาดและความละเอียดที่ถูกต้องแล้ว คุณยังได้สร้างไฟล์ WebM และ MP4 แยกต่างหากสำหรับเบราว์เซอร์อื่นๆ
คุณยังคงต้องเพิ่มวิดีโอลงในหน้าเว็บเพื่อให้ผู้อื่นเห็น การทำอย่างถูกต้องนั้นต้องเพิ่มองค์ประกอบ HTML 2 รายการ ได้แก่ องค์ประกอบ <video>
และองค์ประกอบ <source>
นอกจากข้อมูลเบื้องต้นเกี่ยวกับแท็กเหล่านี้แล้ว บทความนี้ยังอธิบายถึงแอตทริบิวต์ที่คุณควรเพิ่มลงในแท็กเหล่านั้นเพื่อสร้างประสบการณ์ที่ดีให้แก่ผู้ใช้
ระบุไฟล์เดียว
คุณใช้องค์ประกอบวิดีโอเพียงอย่างเดียวได้ แม้ว่าเราจะไม่แนะนําก็ตาม ใช้แอตทริบิวต์ type
เสมอตามที่แสดงด้านล่าง เบราว์เซอร์จะใช้ข้อมูลนี้เพื่อระบุว่าเล่นไฟล์วิดีโอที่ระบุได้หรือไม่ หากไม่พบ ข้อความที่แนบมาจะแสดงขึ้น
<video src="chrome.webm" type="video/webm">
<p>Your browser cannot play the provided video file.</p>
</video>
ระบุรูปแบบไฟล์หลายรูปแบบ
โปรดทราบว่าจากข้อมูลเบื้องต้นเกี่ยวกับไฟล์สื่อ เบราว์เซอร์บางรุ่นอาจไม่รองรับรูปแบบวิดีโอเดียวกัน องค์ประกอบ <source>
ช่วยให้คุณระบุรูปแบบหลายรูปแบบเป็นรูปแบบสำรองได้ในกรณีที่เบราว์เซอร์ของผู้ใช้ไม่รองรับรูปแบบใดรูปแบบหนึ่ง
ตัวอย่างด้านล่างสร้างวิดีโอแบบฝังที่จะใช้เป็นตัวอย่างในบทความนี้
<video controls>
<source src="https://storage.googleapis.com/web-dev-assets/video-and-source-tags/chrome.webm" type="video/webm">
<source src="https://storage.googleapis.com/web-dev-assets/video-and-source-tags/chrome.mp4" type="video/mp4">
<p>Your browser cannot play the provided video file.</p>
</video>
คุณควรเพิ่มแอตทริบิวต์ type
ลงในเหตุการณ์แท็ก <source>
เสมอ แม้ว่าจะเลือกไม่เพิ่มก็ได้ วิธีนี้ช่วยให้มั่นใจว่าเบราว์เซอร์จะดาวน์โหลดเฉพาะไฟล์ที่เล่นได้
วิธีนี้มีข้อดีมากกว่าการแสดง HTML หรือสคริปต์ฝั่งเซิร์ฟเวอร์ที่แตกต่างกัน โดยเฉพาะอย่างยิ่งบนอุปกรณ์เคลื่อนที่
- คุณระบุรูปแบบได้ตามลำดับที่ต้องการ
- การเปลี่ยนฝั่งไคลเอ็นต์จะช่วยลดเวลาในการตอบสนอง เนื่องจากมีการสร้างคำขอเพียงรายการเดียวเพื่อรับเนื้อหา
- การปล่อยให้เบราว์เซอร์เลือกรูปแบบจะง่าย รวดเร็ว และน่าเชื่อถือกว่าการใช้ฐานข้อมูลการสนับสนุนฝั่งเซิร์ฟเวอร์กับการตรวจหา User Agent
- การระบุประเภทของแหล่งที่มาของไฟล์แต่ละแหล่งจะช่วยปรับปรุงประสิทธิภาพเครือข่าย เนื่องจากเบราว์เซอร์จะเลือกแหล่งที่มาของวิดีโอได้โดยไม่ต้องดาวน์โหลดวิดีโอบางส่วนเพื่อ "สแกนสอดแนม" รูปแบบ
ปัญหาเหล่านี้มีความสำคัญอย่างยิ่งในบริบทของอุปกรณ์เคลื่อนที่ซึ่งมีแบนด์วิดท์และเวลาในการตอบสนองที่มีค่า และผู้ใช้อาจมีความอดทนจำกัด การละเว้นแอตทริบิวต์ type
อาจส่งผลต่อประสิทธิภาพเมื่อมีแหล่งที่มาหลายแห่งที่มีประเภทที่ไม่รองรับ
มีอยู่ 2-3 วิธีที่คุณใช้เจาะลึกรายละเอียดได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของวิดีโอและเสียงบนเว็บได้จากข้อมูลเบื้องต้นเกี่ยวกับสื่อดิจิทัลสำหรับมือโปร นอกจากนี้ คุณยังใช้การแก้ไขข้อบกพร่องจากระยะไกลในเครื่องมือสําหรับนักพัฒนาเว็บเพื่อเปรียบเทียบกิจกรรมในเครือข่ายที่มีแอตทริบิวต์ประเภทและไม่มีแอตทริบิวต์ประเภทได้ด้วย
ระบุเวลาเริ่มต้นและเวลาสิ้นสุด
ประหยัดแบนด์วิดท์และทำให้เว็บไซต์ตอบสนองได้ดีขึ้น: ใช้ส่วนย่อยของสื่อเพื่อเพิ่มเวลาเริ่มต้นและเวลาสิ้นสุดให้กับองค์ประกอบวิดีโอ
หากต้องการใช้ข้อมูลโค้ดของสื่อ ให้เพิ่ม #t=[start_time][,end_time]
ลงใน URL ของสื่อ เช่น หากต้องการเล่นวิดีโอจากวินาทีที่ 5 ถึง 10 ให้ระบุ
<source src="video/chrome.webm#t=5,10" type="video/webm">
คุณระบุเวลาใน<hours>:<minutes>:<seconds>
ได้ด้วย ตัวอย่างเช่น #t=00:01:05
จะเริ่มต้นวิดีโอที่นาทีที่ 1:05 หากต้องการเล่นเฉพาะนาทีแรกของวิดีโอ ให้ระบุ #t=,00:01:00
คุณสามารถใช้ฟีเจอร์นี้เพื่อแสดงหลายมุมมองในวิดีโอเดียวกัน เช่น จุดเริ่มโฆษณาในดีวีดี โดยไม่ต้องเข้ารหัสและแสดงหลายไฟล์
เซิร์ฟเวอร์ของคุณต้องรองรับคำขอช่วงและต้องเปิดใช้ความสามารถดังกล่าว เพื่อให้ฟีเจอร์นี้ทำงานได้ เซิร์ฟเวอร์ส่วนใหญ่จะเปิดใช้คำขอช่วงโดยค่าเริ่มต้น เนื่องจากบริการโฮสติ้งบางบริการปิดใช้ คุณควรยืนยันว่าคำขอช่วงพร้อมใช้งานสำหรับการใช้ Fragment ในเว็บไซต์
แต่คุณดำเนินการนี้ได้ในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของเบราว์เซอร์ เช่น ใน Chrome ตัวเลือกนี้จะอยู่ในแผงเครือข่าย มองหาส่วนหัว Accept-Ranges
และตรวจสอบว่าส่วนหัวดังกล่าวระบุว่า bytes
ในรูปภาพนั้น ฉันวาดกล่องสีแดงไว้รอบส่วนหัวนี้ หากไม่เห็นค่า bytes
คุณจะต้องติดต่อผู้ให้บริการโฮสติ้ง
ใส่ภาพโปสเตอร์
เพิ่มแอตทริบิวต์โปสเตอร์ลงในองค์ประกอบ video
เพื่อให้ผู้ชมเห็นภาพเนื้อหาทันทีที่องค์ประกอบโหลดโดยไม่ต้องดาวน์โหลดวิดีโอหรือเริ่มเล่น
<video poster="poster.jpg" ...>
…
</video>
โปสเตอร์ยังใช้เป็นทางเลือกสำรองได้ในกรณีที่วิดีโอsrc
ใช้งานไม่ได้ หรือในกรณีที่ระบบไม่รองรับรูปแบบวิดีโอที่ระบุ ข้อเสียเพียงอย่างเดียวของภาพโปสเตอร์คือคำขอไฟล์เพิ่มเติม ซึ่งจะกินแบนด์วิดท์บางส่วนและต้องมีการเรนเดอร์
ดูข้อมูลเพิ่มเติมได้ที่เข้ารหัสรูปภาพอย่างมีประสิทธิภาพ
ตรวจสอบว่าวิดีโอไม่ล้นคอนเทนเนอร์
เมื่อองค์ประกอบวิดีโอมีขนาดใหญ่เกินกว่าวิวพอร์ต องค์ประกอบเหล่านั้นอาจแสดงเกินคอนเทนเนอร์ ทำให้ผู้ใช้ไม่เห็นเนื้อหาหรือใช้ตัวควบคุมไม่ได้
คุณควบคุมขนาดวิดีโอได้โดยใช้ CSS หาก CSS ไม่ตอบโจทย์ความต้องการของคุณทั้งหมด ไลบรารีและปลั๊กอิน JavaScript เช่น FitVids สามารถช่วยคุณได้ แม้กระทั่งวิดีโอจาก YouTube และแหล่งที่มาอื่นๆ ทรัพยากรเหล่านี้อาจทำให้ขนาดเพย์โหลดของเครือข่ายเพิ่มขึ้น ซึ่งมีผลเสียต่อรายได้ของคุณและกระเป๋าเงินของผู้ใช้
สำหรับการใช้งานง่ายๆ อย่างเช่นที่ผมกำลังอธิบายอยู่นี้ ให้ใช้คำค้นหาสื่อ CSS เพื่อระบุขนาดขององค์ประกอบตามขนาดวิวพอร์ต โดย max-width:
100%
คือเพื่อนของคุณ
สำหรับเนื้อหาสื่อใน iframe (เช่น วิดีโอ YouTube) ให้ลองใช้แนวทางที่ตอบสนองได้ (เช่น แนวทางที่ John Surdakowski เสนอ)
CSS
.video-container {
position: relative;
padding-bottom: 56.25%;
padding-top: 0;
height: 0;
overflow: hidden;
}
.video-container iframe,
.video-container object,
.video-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
HTML
<div class="video-container">
<iframe
src="//www.youtube.com/embed/l-BA9Ee2XuM"
frameborder="0"
width="560"
height="315"
></iframe>
</div>
เปรียบเทียบตัวอย่างที่ตอบสนองกับเวอร์ชันที่ไม่ตอบสนอง ดังที่คุณเห็น เวอร์ชันที่ไม่ตอบสนองนั้นไม่ใช่ประสบการณ์การใช้งานที่ยอดเยี่ยม
การวางแนวของอุปกรณ์
การวางแนวของอุปกรณ์ไม่ใช่ปัญหาสำหรับจอภาพเดสก์ท็อปหรือแล็ปท็อป แต่มีความสำคัญอย่างยิ่งเมื่อพิจารณาการออกแบบหน้าเว็บสำหรับอุปกรณ์เคลื่อนที่และแท็บเล็ต
Safari บน iPhone สามารถสลับระหว่างแนวตั้งและแนวนอน ได้ดี:
การวางแนวอุปกรณ์ใน iPad และ Chrome ใน Android อาจทำให้เกิดปัญหาได้ ตัวอย่างเช่น หากไม่มีการปรับเปลี่ยนใดๆ วิดีโอที่เล่นบน iPad ในแนวนอนจะมีลักษณะดังนี้
การตั้งค่าวิดีโอเป็น width: 100%
หรือ max-width: 100%
ด้วย CSS ช่วยแก้ปัญหาการจัดวางการวางแนวอุปกรณ์ได้หลายอย่าง
เล่นอัตโนมัติ
แอตทริบิวต์ autoplay
จะควบคุมให้เบราว์เซอร์ดาวน์โหลดและเล่นวิดีโอทันที วิธีการที่แน่ชัดจะขึ้นอยู่กับแพลตฟอร์มและเบราว์เซอร์
Chrome: ขึ้นอยู่กับหลายปัจจัย ซึ่งรวมถึงแต่ไม่จํากัดเพียงการดูบนเดสก์ท็อปและผู้ใช้อุปกรณ์เคลื่อนที่ได้เพิ่มเว็บไซต์หรือแอปของคุณลงในหน้าจอหลักหรือไม่ โปรดดูรายละเอียดที่หัวข้อแนวทางปฏิบัติแนะนำสำหรับการเล่นอัตโนมัติ
Firefox: บล็อกวิดีโอและเสียงทั้งหมด แต่ผู้ใช้สามารถผ่อนปรนข้อจำกัดเหล่านี้สำหรับเว็บไซต์ทั้งหมดหรือเฉพาะบางเว็บไซต์ โปรดดูรายละเอียดที่หัวข้ออนุญาตหรือบล็อกการเล่นสื่ออัตโนมัติใน Firefox
Safari: ที่ผ่านมาต้องใช้ท่าทางสัมผัสของผู้ใช้ แต่ได้ผ่อนปรนข้อกำหนดดังกล่าวในเวอร์ชันล่าสุด โปรดดูรายละเอียดที่หัวข้อนโยบายใหม่สำหรับ <video> ใน iOS
แม้ในแพลตฟอร์มที่เปิดใช้การเล่นอัตโนมัติได้ คุณก็ควรพิจารณาว่าควรเปิดใช้หรือไม่ โดยพิจารณาจากปัจจัยต่อไปนี้
- การใช้อินเทอร์เน็ตอาจทำให้สิ้นเปลืองเงิน
- การเล่นสื่อก่อนที่ผู้ใช้จะต้องการใช้แบนด์วิดท์และ CPU ซึ่งทำให้การแสดงผลหน้าเว็บล่าช้าได้
- ผู้ใช้อาจอยู่ในบริบทที่การเล่นวิดีโอหรือเสียงเป็นการรบกวน
โหลดล่วงหน้า
แอตทริบิวต์ preload
บอกใบ้ให้เบราว์เซอร์ทราบว่าควรโหลดข้อมูลหรือเนื้อหาล่วงหน้าเท่าใด
ค่า | คำอธิบาย |
---|---|
none |
ผู้ใช้อาจเลือกไม่ดูวิดีโอ ดังนั้นอย่าโหลดล่วงหน้า |
metadata |
ควรโหลดข้อมูลเมตา (ระยะเวลา ขนาด แทร็กข้อความ) ไว้ล่วงหน้า แต่ใช้วิดีโอให้น้อยที่สุด |
auto |
การดาวน์โหลดวิดีโอทั้งเรื่องทันทีถือว่าเหมาะสม สตริงว่างจะให้ผลลัพธ์แบบเดียวกัน |
แอตทริบิวต์ preload
มีผลแตกต่างกันในแพลตฟอร์มต่างๆ
เช่น Chrome บัฟเฟอร์วิดีโอ 25 วินาทีบนเดสก์ท็อป แต่ไม่มีบัฟเฟอร์ใน iOS หรือ Android ซึ่งหมายความว่าบนอุปกรณ์เคลื่อนที่อาจมีความล่าช้าในการเริ่มเล่นซึ่งไม่เกิดขึ้นบนเดสก์ท็อป ดูรายละเอียดเพิ่มเติมได้ที่การเล่นแบบเร็วด้วยการโหลดเสียงและวิดีโอล่วงหน้าหรือบล็อกของ Steve Souders
เมื่อคุณทราบวิธีเพิ่มสื่อลงในหน้าเว็บแล้ว ก็ถึงเวลาเรียนรู้เกี่ยวกับการช่วยเหลือพิเศษสื่อ ซึ่งคุณจะเพิ่มคำบรรยายแทนเสียงลงในวิดีโอสำหรับผู้มีความบกพร่องทางการได้ยิน หรือเมื่อเล่นเสียงไม่ได้หากใช้ได้