Skip to main content
0

Deal with HTML Video Player

สรุปสั้น ๆ

สร้างหน้าเว็บที่มีวิดีโอใครว่ายาก ? เดี๋ยววันนี้เราจะมาพาทุกคนไปสร้างแบบขั้นกว่า ไม่ใช่แค่เอาวิดีโอมาแปะแล้วจบแบบเดิม ๆ แต่สามารถมีลูกเล่นได้มากกว่านั้น ถ้าอยากรู้ว่ามีลูกเล่นอะไร จะต่างจากการแปะวิดีโอเฉย ๆ ยัง ลองขยับเมาส์แล้วค่อย ๆ เลื่อนลงไปพบคำตอบกันเลยคร้าบ

เขียนโดย
Pachara Chaicharoen
MidLevel Software Developer

บทความนี้ตีพิมพ์ และ เผยแพร่เมื่อ 12 สิงหาคม 2566

ใครที่ต้องการทำเว็บที่มีวิดีโอ ซึ่งคนที่เคยเขียนเว็บที่มีพื้นฐานเป็น HTML ไม่ว่าจะเป็น React, Vue อื่น ๆ มาก็อาจจะรู้จัก <video> กันอยู่แล้ว รวมถึงบางคนน่าจะเคยใช้เพื่อใส่วิดีโอลงในหน้าเว็บแล้วด้วย

แต่ถ้าอยากให้ตัว <video> ทำได้มากกว่าแค่การแสดงวิดีโอเฉย ๆ ก็อาจเจอปัญหาว่าจะทำเพิ่มยังไงดี ?

บางคนก็อาจจะบอกว่าหา Library ที่ตอบโจทย์มาใช้เลยน่าจะง่ายกว่ารึเปล่า ? คำตอบคือใช่เลยครับ แต่ว่าบางครั้งเราอาจจะเจอกับสถานการณ์ที่ว่าเราอยากได้การทำงานบางอย่างที่ตัว Library ที่ใช้อยู่ไม่มี ซึ่งบาง Library ที่มี Base เป็น <video> เราก็จะสามารถปรับแต่ง Config ให้สามารถทำงานที่ตรงกับที่เราต้องการได้ และสำหรับใครที่เพิ่งเริ่มต้นเขียนเว็บ HTML อยากได้ความรู้ในการขึ้น Video Player บนหน้าเว็บ เราไปดูพร้อม ๆ กันเลย

วิธีใส่วิดีโอ

วิธีสุดเบสิคที่ทุกคนรู้ก็คงจะเป็นการใส่ Attribute src ตามด้วยลิงก์วิดีโอลงไป

<video
  controls
  autoplay src="https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4"
/>

หรืออีกวิธีคือการใส่ <source> ลงไปวิธีนี้จะแตกต่างจากแบบแรกคือในบาง Device หรือ Browser อาจไม่สามารถรองรับการ Render ไฟล์วิดีโอบาง Type ได้ การประกาศแบบนี้จะทำให้สามารถใส่ลิงก์ที่อยู่ของ Video ได้หลายที่ ถ้า src แรกไม่สามารถเล่นได้ก็จะลองอันถัดไปไปเรื่อย ๆ จนเจออันที่สามารถใช้งานได้ เป็นการลดความเสี่ยงที่ถ้าใส่ลิงก์วิดีโอไฟล์เดียวอาจจะไม่สามารถใช้ได้นั่นเอง

<video
  controls
>
  <source
    src="https://archive.org/download/ElephantsDream/ed_hd.ogv"
    type="video/ogg" />
  <source
    src="https://archive.org/download/ElephantsDream/ed_hd.avi"
    type="video/avi" />
  <source
    src="https://archive.org/download/ElephantsDream/ed_1024_512kb.mp4"
    type="video/mp4" />
</video>

สำหรับเรื่องไฟล์ไหนรองรับกับ Browser ไหนได้บ้างสามารถไปดูได้ที่นี่เลย

https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Video_codecs#common_codecs

Attributes

Attribute โดยทั่วไปของ Tag ใน HTML Element ที่ใช้กำหนดคุณสมบัติของ <video> เช่น src ใช้สำหรับกำหนดที่อยู่ของไฟล์ Video ตามตัวอย่าง

<video
  controls
  autoplay src="https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4"
/>

ตัวอย่าง Attributes ของ <video>

  • src : string > กำหนดที่อยู่ของไฟล์ Video,
  • autoplay : boolean > การกำหนดว่าถ้าวิดีโอพร้อมเล่นจะเล่นทันทีหรือไม่
  • controls : boolean > การแสดงแถบควบคุม
  • loop : boolean > การเล่นซ้ำเมื่อวิดีโอสิ้นสุด
  • poster : string > ที่อยู่ของไฟล์ Image ที่จะแสดงถ้าวิดีโอโหลดหรือหยุดเล่น

Attributes อื่น ๆ : https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video#attributes

Events

เหตุการณ์ที่เกิดขึ้นใน Video Player ซึ่งเราสามารถดักฟัง Event เหล่านี้เพื่อให้มีการทำงานบางอย่างที่เราต้องการใน Event นั้น ๆ ได้ เช่นถ้าเราอยากให้มี Function ทำงานในแต่ละช่วงเวลาที่ Video กำลังเล่นอยู่ก็จะมี Event ชื่อ “timeupdate”

const video = document.querySelector("video");

video.addEventListener("timeupdate", handleEvent);

function handleEvent() {
  console.log('playing');
}

โค้ดด้านบนคือการเลือก Element Video มาเก็บไว้ในตัวแปรชื่อ video แล้ว addEventListener “timeupdate” ลงไป ซึ่งจะทำให้เมื่อมีการเปลี่ยนแปลงเวลาของ video จะมีการเรียกใช้ Function ชื่อ handleEvent ซึ่งจะ log คำว่า ‘playing’ ออกมา

 

ตัวอย่าง Event ของ <video>

  • play > วิดีโอเริ่มเล่น
  • timeupdate > เวลาเล่นของวิดีโอมีการเปลี่ยนแปลง
  • seeked > การเลือกเวลาวิดีโอสำเร็จ
  • pause > วิดีโอหยุด
  • ended > วิดีโอเล่นจนจบ

Events อื่น ๆ : 

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video#events

Instance Methods

ชุดคำสั่งที่สั่งให้ Video Player ทำ Action บางอย่าง เช่น play() จะเป็นการสั่งให้ Video Player เริ่มเล่น

const video = document.querySelector("video");
video.play();

โค้ดด้านบนคือการเลือก Element Video มาเก็บไว้ในตัวแปรชื่อ video แล้ว สั่งให้ Video Player เริ่มเล่น

ตัวอย่าง Event ของ <video>

  • play() > เล่นวิดีโอ
  • load() > Reset วิดีโอ
  • pause() > หยุดวิดีโอ

 

Events อื่น ๆ : 

https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement#instance_methods

Instance Properties

คุณสมบัติ / ข้อมูลภายใน Video Player เช่น currentTime จะเป็นเวลาปัจจุบันของวิดีโอ

const video = document.querySelector("video");

video.addEventListener("timeupdate", handleEvent)

function handleEvent(){
    console.log(video.currentTime) 
}

โค้ดนี้จะเริ่มรวมการทำงานมากขึ้นคือการเลือก Element Video มาเก็บไว้ในตัวแปรชื่อ video แล้วเพิ่มการดักฟัง Event timeupdate เพื่อให้ log เวลาปัจจุบันของวิดีโอ เราก็จะรู้ว่าตอนที่วิดีโอกำลังเล่นอยู่ถึงวินาทีที่เท่าไหร่แล้ว

 

ตัวอย่าง Instance properties ของ <video>

  • currentTime > เวลาปัจจุบันของวิดีโอ
  • duration > เวลาทั้งหมดของวิดีโอ
  • ended > วิดีโออยู่ในจุดสิ้นสุดหรือไม่
  • volume > ระดับเสียงของวิดีโอ
  • autoplay > Video Player ถูกกำหนดให้อัตโนมัติหรือไม่

Instance properties อื่น ๆ :

https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement#instance_properties

หรืออีกตัวอย่างคือการเปลี่ยน Property ของตัว Video Player ให้ autoplay เป็น true เมื่อวิดีโอพร้อมเล่นก็จะเล่นทันทีผ่าน JavaScript ได้

const video = document.querySelector("video");
video.autoplay = true

ปิดท้ายด้วย “อยากได้แบบไหนจะ Config ยังไงดี?”

คำตอบของคำถามนี้สุดท้ายก็ขึ้นอยู่กับการประยุกต์ใช้ตามความต้องการของการทำงาน เช่น อยากให้วิดีโอเล่นจนถึง 50% แล้วให้มีการทำงานบางอย่าง ก็อาจจะหยิบ Event timeupdate มาใช้กับ Properties currentTime และ duration มาคำนวนแล้วเรียกใช้งาน Function

หรืออยากเพิ่มปุ่มภายนอกเพื่อเลื่อนวิดีโอไปยังจุดที่กำหนดก็อาจจะการกำหนดค่า currentTime ไปเป็นจุดที่กำหนด จะเห็นว่าถ้าเรารู้วิธีปรับแต่งตัว Video Player เราก็สามารถนำไปประยุกต์ตามความต้องการได้อีกเยอะ สุดท้ายก็อย่าลืมเข้าไปลองอ่านดูตัว Doc ที่แปะไว้ตามหัวข้อด้านบน ถ้าได้รู้จักตัวเลือกที่มากขึ้นก็อาจจะได้ไอเดียใหม่ ๆ หรือคำตอบที่กำลังหาอยู่ในการสร้างเว็บที่ใช้วิดีโอก็ได้นะ

ระบบฝึกทักษะ การเขียนโปรแกรม

ที่พร้อมตรวจผลงานคุณ 24 ชั่วโมง

  • โจทย์ปัญหากว่า 200 ข้อ ที่รอท้าทายคุณอยู่
  • รองรับ 9 ภาษาโปรแกรมหลัก ไม่ว่าจะ Java, Python, C ก็เขียนได้
  • ใช้งานได้ฟรี ! ครบ 20 ข้อขึ้นไป รับ Certificate ไปเลย !!
เข้าใช้งานระบบ DevLab ฟรี !เรียนรู้เพิ่มเติม

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

2

แนะนำสำหรับคุณ

Close Menu

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

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

  • คุกกี้สำหรับการติดตามทางการตลาด

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

บันทึกการตั้งค่า