สตรีมมิ่งสื่อจากภายในหน้า HTML โดยตัวอย่าง


12

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

  • สตรีมมิ่งสื่อจริงๆเดือดลงไปรูปแบบภาชนะและสตรีมมิ่งโปรโตคอล :
    • ข้อมูลเสียงทั้งหมดจะถูกเข้ารหัส (ผ่านตัวแปลงสัญญาณเสียง) ลงในบิตสตรีมเสียง
    • ข้อมูลวิดีโอทั้งหมดจะถูกเข้ารหัส (อีกครั้งผ่านตัวแปลงสัญญาณ) เป็นบิตสตรีมวิดีโอ
    • สตรีมทั้งสองถูกผสาน ( มัลติเพล็กซ์ ) เข้าด้วยกันในคอนเทนเนอร์ซึ่งในที่สุดจะกลายเป็นไฟล์ (เช่น MP4 เป็นต้น)
    • เซิร์ฟเวอร์สื่อพิเศษให้บริการคอนเทนเนอร์นี้ (ไฟล์ MP4 หรือรูปแบบอื่น ๆ ) ไปยังไคลเอนต์ (อาจเป็นเครื่องเล่นวิดีโอ HTML5 ที่ทำงานภายในเบราว์เซอร์ของใครบางคน) ผ่านทางสตรีมโปรโตคอลมาตรฐานบางอย่างเช่น RTSP
      • ในกรณีของเบราว์เซอร์ไคลเอนต์ฉันถือว่าเบราว์เซอร์นั้นมีไคลเอนต์ RTSP ที่จะแสดงต่อผู้ใช้ HTML5 Video Player
  • ฉันสามารถโฮสต์ไฟล์ MP4 จากเว็บเซิร์ฟเวอร์เช่น nginx หรือ httpd แต่เนื่องจากเซิร์ฟเวอร์เหล่านั้นไม่ใช่เซิร์ฟเวอร์ RTSP ดังนั้นจะสามารถดำเนินการตามคำขอ MP4 เป็นคำขอดาวน์โหลดเท่านั้นดังนั้นจึงไม่สามารถสตรีม ไฟล์สื่อ
    • ในทำนองเดียวกันถ้าฉันจะใช้curlเพื่อดึงไฟล์จากเซิร์ฟเวอร์ nginx เนื่องจากทั้งcurlnginx ไม่พูด RTSP ก็จะถือว่าเป็นการดาวน์โหลดไฟล์
  • แต่เมื่อฉันโฮสต์ไฟล์ MP4 จากเซิร์ฟเวอร์สื่อแบบสตรีมมิ่ง (VideoLAN, Red5, Wowza ฯลฯ ) และฉันใช้ไคลเอนต์ RTSP (หรือไคลเอนต์สื่อสตรีมมิ่งที่รองรับ) เพื่อขอกระแสข้อมูลจากเซิร์ฟเวอร์นั้น จากนั้นสตรีมที่เกิดขึ้นจริงจะเกิดขึ้น
    • ดังนั้นแม้ว่า YouTube หรือ Vimeo "วิดีโอ" จะถูกโฮสต์บนหน้า HTML ที่แสดงผ่าน HTTP (S) โดยเซิร์ฟเวอร์ HTTP ฉันคิดว่าเครื่องเล่นวิดีโอฝังตัวในหน้าเหล่านั้น (ซึ่งเป็นที่ที่วิดีโอเล่นจริง) กำลังเริ่มต้นที่สอง การเชื่อมต่อที่ตามมากับเซิร์ฟเวอร์การสตรีมและการสตรีมนั้นเกิดขึ้นผ่าน RTSP หรือโปรโตคอลอื่นที่ไม่ใช่ HTTP

นั่นคือความเข้าใจของฉันและฉันเดาว่าฉันจะถามก่อนว่าสิ่งใดที่ฉันได้กล่าวไว้ข้างต้นไม่ถูกต้องโปรดเริ่มต้นด้วยการแก้ไขฉัน! สมมติว่าฉันถูกต้องมากขึ้นหรือน้อยลง:

เครื่องเล่นสื่อแบบสตรีมมิ่งทำงานในหน้า HTML และให้บริการโดยเซิร์ฟเวอร์ HTML สร้างการเชื่อมต่อสตรีมมิ่ง (RTSP ฯลฯ ) อย่างไรกับเซิร์ฟเวอร์สื่อสตรีมมิ่ง (ให้บริการคำขอ RTSP)


4
ทำไมต้องลงคะแนน? นี้ไม่ได้ล่อเป็นในหัวข้อแน่นอนแสดงให้เห็นว่าการวิจัยและเป็นSSCCE
smeeb


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

ทีนี้หลังจากอ่านความคิดเห็นเกี่ยวกับคำตอบที่ถูกลบไปแล้วฉันคิดว่าในที่สุดฉันก็ตัดสินใจว่าคุณกำลังถามว่า:“ การหางานทำได้อย่างไรด้วยการสตรีม HTTP? คุณไม่สามารถแปลการประทับเวลาเป็นตำแหน่งไบต์ภายในไฟล์ได้!” บางทีคุณควรชี้แจงคำถามเกี่ยวกับสิ่งนั้น
Daniel B

คำตอบ:


7

เครื่องเล่นสื่อแบบสตรีมมิ่งทำงานในหน้า HTML และให้บริการโดยเซิร์ฟเวอร์ HTML สร้างการเชื่อมต่อสตรีมมิ่ง (RTSP ฯลฯ ) อย่างไรกับเซิร์ฟเวอร์สื่อสตรีมมิ่ง (ให้บริการคำขอ RTSP)

แอปพลิเคชันทั่วไป

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

ดูเหมือนว่าRTSPเป็นโปรโตคอลstatefulและใช้ UDP มากกว่า TCP เมื่อสตรีมมิ่งและใช้เป็นอุปกรณ์เซิร์ฟเวอร์ (เช่นกล้อง IP) ที่เชื่อมต่อกับเครือข่าย TCP / IP และส่งกระแสข้อมูลผ่าน UDP ฯลฯ จากนั้นคุณเชื่อมต่อกับฟีดเหล่านี้ (เซิร์ฟเวอร์) เป็นไคลเอนต์ในเครือข่ายเดียวกันและคุณสามารถออกคำร้องขอ RTSPเพื่อใช้ประโยชน์ได้


คำสั่งพิธีสาร

ในขณะเดียวกันก็คล้ายกับ HTTP แต่ RTSP จะกำหนดลำดับการควบคุมที่เป็นประโยชน์ในการควบคุมการเล่นมัลติมีเดีย ในขณะที่ HTTP ไม่มีสถานะ RTSP มีสถานะ ตัวระบุจะใช้เมื่อต้องการติดตามเซสชันที่เกิดขึ้นพร้อมกัน เช่นเดียวกับ HTTP RTSP ใช้ TCP เพื่อรักษาการเชื่อมต่อแบบ end-to-end และในขณะที่ข้อความควบคุม RTSP ส่วนใหญ่จะถูกส่งโดยไคลเอนต์ไปยังเซิร์ฟเวอร์คำสั่งบางคำสั่งจะไปในทิศทางอื่น

นำเสนอที่นี่เป็นคำขอ RTSP พื้นฐาน คำขอ HTTP ทั่วไปบางอย่างเช่นคำขอ OPTIONS ก็มีให้เช่นกัน หมายเลขพอร์ตเลเยอร์การขนส่งที่เป็นค่าเริ่มต้นคือ 554 [3] สำหรับทั้ง TCP และ UDP ซึ่งมักจะไม่ค่อยใช้สำหรับการร้องขอการควบคุม

แหล่ง


ไร้สัญชาติ

โปรโตคอลไร้สัญชาติไม่ต้องการให้เซิร์ฟเวอร์เก็บข้อมูลเซสชันหรือสถานะเกี่ยวกับพันธมิตรการสื่อสารแต่ละรายในช่วงระยะเวลาของการร้องขอหลายครั้ง ในทางตรงกันข้ามโปรโตคอลที่ต้องรักษาของรัฐภายในบนเซิร์ฟเวอร์เป็นที่รู้จักกัน statefulโปรโตคอล

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

แหล่ง


การไหลแบบลอจิคัล

วิธีที่ฉันเข้าใจการไหลของสื่อสตรีมมิ่งในรูปแบบนี้คือ:

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

โปรดดูส่วนสตรีมเทคโนโลยีด้านล่างสำหรับการเปรียบเทียบทั่วไปของ HTTP กับ RTSP


นอกจากนี้

ใน10 เหตุผลด้านล่างทำไมคุณไม่ควรโฮสต์วิดีโอของคุณเองฉันได้อ้างถึงส่วนต่าง ๆ ที่จะช่วยตอบคำถามของคุณในแบบ "ทั่วไป" โดยไม่เจาะจงเกินไป

โดยพื้นฐานแล้วมันบอกว่าเว็บไซต์ที่มีการควบคุมเครื่องเล่นสื่อฝังตัวจะ:

  • (1)ตรวจสอบการตั้งค่าเว็บเบราว์เซอร์ของลูกค้าตาม "การเชื่อมต่อและคำขอ" จากลูกค้าและ
  • (2)สิ่งนี้จะตั้งค่าตัวแปลงสัญญาณและการตั้งค่าการตรวจจับฝั่งไคลเอ็นต์อื่น ๆ ให้เป็นค่าพารามิเตอร์ที่ใช้งานได้จากนั้น
  • (3) มันจะสตรีมวิดีโอโดยตรงจากเซิร์ฟเวอร์การสตรีมที่คุณโฮสต์ไฟล์วิดีโอและเสียงโดยอ้างอิงจากรหัสเพิ่มเติมในการกำหนดค่าเครื่องเล่นสื่อฝังตัวของคุณซึ่งชี้ไปที่ URL ของไฟล์สื่อบนเซิร์ฟเวอร์ที่โฮสต์

เทคโนโลยีสตรีมมิ่ง

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

โปรโตคอล HTTP

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

ประโยชน์ที่ได้รับโดยใช้ HTTP

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

ข้อเสียบางประการ

การสตรีมมิ่ง HTTP ใช้ TCP / IP (Transmission Control Protocol และ Internet Protocol) เพื่อให้แน่ใจว่ามีการส่งไฟล์ที่เชื่อถือได้ กระบวนการนี้ตรวจสอบหาแพ็คเก็ตที่หายไปและขอให้ส่งซ้ำ สิ่งนี้กลายเป็นปัญหาในสถานการณ์จำลองการสตรีมเมื่อคุณต้องการให้ข้อมูลถูกเพิกเฉยหากข้อมูลสูญหายในการส่งดังนั้นไฟล์ไดนามิกจะเล่นต่อไป HTTP ไม่สามารถตรวจจับความเร็วของโมเด็มได้ดังนั้นผู้ดูแลเซิร์ฟเวอร์ต้องสร้างไฟล์ด้วยอัตราการบีบอัดข้อมูลที่แตกต่างกันไปยังผู้ใช้เซิร์ฟเวอร์ที่มีการเชื่อมต่อที่แตกต่างกัน ไม่แนะนำให้ใช้สตรีมไฟล์จากเซิร์ฟเวอร์ HTTP สำหรับสถานการณ์ที่มีความต้องการสูง

โปรโตคอล RTSP

RTSP เป็นโปรโตคอลมาตรฐานที่ใช้โดยผู้ให้บริการสตรีมมิ่งเซิร์ฟเวอร์ส่วนใหญ่ เซิร์ฟเวอร์ RTSP ใช้ UDP (User Datagram Protocol) เพื่อถ่ายโอนไฟล์สื่อ UDP ไม่ตรวจสอบอย่างต่อเนื่องว่าไฟล์มาถึงปลายทางแล้ว นี่เป็นข้อได้เปรียบสำหรับแอปพลิเคชั่นสตรีมมิ่งเพราะจะช่วยให้การถ่ายโอนไฟล์ถูกขัดจังหวะตราบเท่าที่ความล่าช้าไม่นานเกินไป ผลลัพธ์ของวิธีนี้คือมีการสูญหายของข้อมูลในบางครั้ง แต่ไฟล์ยังคงเล่นต่อไปหากความล่าช้ามีขนาดเล็ก

แหล่ง


10 เหตุผลทำไมคุณไม่ควรโฮสต์วิดีโอของคุณเอง

เรากำลังพูดถึงการฝังตัวกับวิดีโอที่โฮสต์ในตัว

ขั้นแรกให้คุณอัปโหลดไฟล์วิดีโอของคุณไปยังบริการโฮสต์วิดีโอของบุคคลที่สามเช่น YouTube, Vimeo หรือ Wistia

จากนั้นคุณคัดลอกโค้ดขนาดเล็กที่พวกเขามอบให้คุณและวางลงในโพสต์หรือหน้าของคุณบนเว็บไซต์ WordPress ของคุณเอง วิดีโอจะปรากฏบนเว็บไซต์ของคุณในตำแหน่งที่คุณวางโค้ดฝัง แต่วิดีโอนั้นถูกสตรีมจากเซิร์ฟเวอร์ของโฮสต์วิดีโอซึ่งตรงข้ามกับเว็บเซิร์ฟเวอร์ของคุณซึ่งเป็นที่ตั้งของไซต์ WordPress ของคุณ

4. ไม่มีมาตรฐานรูปแบบไฟล์เดียวสำหรับ Web Video

ข้อมูลจำเพาะฉบับร่างปัจจุบันของ HTML5 ไม่ได้ระบุว่าควรสนับสนุนเบราว์เซอร์รูปแบบวิดีโอใด เป็นผลให้เว็บเบราว์เซอร์หลัก ๆ แยกจากกันโดยแต่ละเว็บสนับสนุนรูปแบบที่แตกต่างกัน Internet Explorer และ Safari จะเล่นวิดีโอ H.264 (MP4) แต่ไม่ใช่ WebM หรือ Ogg Firefox จะเล่นวิดีโอ Ogg หรือ WebM แต่ไม่ใช่ H.264 โชคดีที่ Chrome จะเล่นรูปแบบวิดีโอหลักทั้งหมด แต่ถ้าคุณต้องการให้แน่ใจว่าวิดีโอของคุณจะเล่นบนเว็บเบราว์เซอร์หลัก ๆ ทั้งหมดคุณจะต้องแปลงวิดีโอของคุณเป็นหลายรูปแบบ: .mp4, .ogv และ. webm

5. หวังว่าคุณจะชอบแปลงวิดีโอ มาก.

ผู้ชมส่วนใหญ่ของคุณมีแนวโน้มที่จะดูวิดีโอจากเดสก์ท็อปหรือแล็ปท็อปของพวกเขาด้วยการเชื่อมต่ออินเทอร์เน็ตความเร็วสูง สำหรับคนเหล่านั้นคุณจะต้องการส่งไฟล์คุณภาพระดับ HD ขนาดใหญ่เพื่อให้พวกเขาสามารถดูแบบเต็มหน้าจอได้หากพวกเขาเลือก โดยทั่วไปนี่หมายถึงไฟล์ 1080p หรือ 720p ที่อัตราบิตการสตรีมสูง (5000 - 8000 kbps)

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

6. เครื่องเล่นวิดีโอ

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

7. รหัสที่ยุ่งยาก [หรือรหัสย่อ]

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

<video poster="movie.jpg" controls>
<source src="movie.webm" type='video/webm; codecs="vp8.0, vorbis"'/>
<source src="movie.ogg" type='video/ogg; codecs="theora, vorbis"'/>
<source src="movie.mp4" type='video/mp4; codecs="avc1.4D401E, mp4a.40.2"'/>
<p>This is fallback content</p>
</video>

ดังนั้นทางออกที่ดีที่สุดสำหรับการเพิ่มวิดีโอในเว็บไซต์ของคุณคืออะไร

เพียงใช้บริการโฮสต์วิดีโอบุคคลที่สามจากนั้นเพียงฝังวิดีโอของคุณลงในโพสต์หรือหน้า WordPress ของคุณ

ขั้นตอนที่หนึ่ง:อัปโหลดวิดีโอของคุณไปยังหนึ่งในบริการโฮสต์วิดีโอยอดนิยมและเป็นที่นิยมเช่น Vimeo PRO

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


เมื่อผู้คนดูหน้าของคุณวิดีโอจะปรากฏในตำแหน่งที่คุณวาง URL แต่ไฟล์วิดีโอนั้นจะถูกสตรีมจากเซิร์ฟเวอร์ของโฮสต์วิดีโอซึ่งตรงข้ามกับเซิร์ฟเวอร์ของคุณซึ่งเป็นที่ตั้งของไซต์ WordPress ของคุณ

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

แหล่ง


ขอบคุณ @PIMP_JUICE_IT (+1) - คำถามติดตามสองสามข้อถ้าคุณไม่รังเกียจเนื่องจากความสับสนเล็กน้อยในการใช้วลี " เครื่องเล่นวิดีโอฝังตัว ": เมื่อคุณพูดว่า " โดยพื้นฐานแล้วมันบอกว่าเว็บไซต์ที่ฝังตัวอยู่ เครื่องเล่นวิดีโอและเสียงจะ ... "คุณหมายถึงอะไรโดยผู้เล่นฝังตัว? สำหรับฉันเสียง / วิดีโอสามารถให้บริการจากเว็บเซิร์ฟเวอร์ (โดยใช้ MPEG-DASH หรือคล้ายกัน) หรือสตรีมมิ่งเซิร์ฟเวอร์ที่พูดอะไรบางอย่างเช่น RTSP และอีกครั้งสำหรับฉันผู้เล่นคือโครงสร้างฝั่งไคลเอ็นต์ที่เล่น / นำเสนอเสียง / วิดีโอแก่มนุษย์
smeeb

ดังนั้นเมื่อคุณพูดถึงเว็บไซต์ (เซิร์ฟเวอร์) ที่มีผู้เล่นมันค่อนข้างสับสน คุณช่วยอธิบายได้ไหม
smeeb

4

ฉันจะปฏิบัติตามคำถามของคุณว่าจะเกิดอะไรขึ้นเมื่อวิดีโอแสดงในเบราว์เซอร์ ตัวแบบนั้นกว้างใหญ่ดังนั้นฉันจะได้สัมผัสกับสิ่งที่เกี่ยวข้องเท่านั้น

HTML5 ได้แนะนำ<VIDEO>แท็กที่แก้ไขปัญหาการรวมวิดีโอที่แสดงในเบราว์เซอร์ขณะที่ใช้งาน JavaScript และ CSS <OBJECT>แท็กก่อนหน้านี้ต้องการซอฟต์แวร์ภายนอกและรวมเข้ากับหน้าเว็บได้ไม่ดี แท็กใหม่ที่จำเป็นต้องใช้เบราว์เซอร์จึงจะกลายเป็นเครื่องเล่นวิดีโอได้แม้ว่าจะไม่มีการกำหนดมาตรฐาน ผลที่ได้คือการกระจายตัวของมาตรฐานทั้งหมดซึ่งเป็นทางออกเดียวคือเซิร์ฟเวอร์วิดีโอจะให้บริการวิดีโอหลายรูปแบบและแหล่งที่มาทางเลือกทั้งหมดเหล่านี้จะระบุไว้ใน<VIDEO>แท็กซึ่งเบราว์เซอร์จะเลือกหนึ่งที่รองรับ

ตัวอย่างของแท็กที่มีหลายแหล่ง:

<video width=320 height=240 controls poster=image.jpg>
   <source src="movie.mpd">
   <source src="movie.webm">
   Your browser does not support the video tag.
</video>

<VIDEO>แท็กตัวเองเป็นโปรโตคอลที่ไม่เชื่อเรื่องพระเจ้าเพื่อให้สามารถใช้โปรโตคอลใด ๆ ที่ได้รับการสนับสนุนจากเบราว์เซอร์รวมทั้ง RTSP การสนับสนุนโพรโทคอล MPEG-DASH (Dynamic Adaptive Streaming ผ่าน HTTP) ได้กลายเป็นสิ่งที่ครอบคลุมมากเมื่อเร็ว ๆ นี้ดังนั้นจึงจะเล่นบนอุปกรณ์และเบราว์เซอร์ส่วนใหญ่ที่เป็นแบบดั้งเดิมหรือใช้ HTML5 ซึ่งหมายความว่าไม่จำเป็นต้องใช้ปลั๊กอินเพิ่มเติม เห็นนี้อุปกรณ์และเบราว์เซอร์แผนภูมิความเข้ากันได้ ดูบทความ Mozilla นี้สำหรับการเตรียมเซิร์ฟเวอร์ของคุณสำหรับการให้บริการ MPEG-DASH DASH ทำงานผ่าน HTTP ดังนั้นสิ่งนี้จะทำงานตราบใดที่เซิร์ฟเวอร์ HTTP ของคุณรองรับการร้องขอช่วงไบต์และตั้งค่าเพื่อให้บริการไฟล์mimetype="application/dash+xml". mp4 ด้วย

ปฏิสัมพันธ์ปกติระหว่างไคลเอนต์และเซิร์ฟเวอร์มีลักษณะคล้ายกับต่อไปนี้ สำหรับ HTML5 VIDEO เบราว์เซอร์ก็เป็นเครื่องเล่นเช่นกันแม้ว่าอาจเปิดการเชื่อมต่อใหม่เพื่อเล่น

ภาพ

การเชื่อมต่อเริ่มต้นจะส่งเมทาดาทาที่ไคลเอ็นต์ใช้เพื่อแสดงวิดีโอ หากใช้โปรโตคอล RTSP เพื่อรับข้อมูลเมตานั้นการเชื่อมต่อ RTP จะถูกสร้างขึ้นในภายหลังสำหรับการถ่ายโอนข้อมูลวิดีโอ + เสียง โปรโตคอล RTCP ใช้เพื่อถ่ายโอนคำสั่งเพิ่มเติมไปยังเซิร์ฟเวอร์

RTP, RTCP และ RTSP ทั้งหมดทำงานบนพอร์ตที่ต่างกัน โดยปกติเมื่อ RTP อยู่บนพอร์ต N, RTCP อยู่บนพอร์ต N + 1 เซสชัน RTP อาจมีหลายสตรีมที่จะรวมกันในตอนท้ายของผู้รับ ตัวอย่างเช่นเสียงและวิดีโออาจอยู่ในช่องทางแยก

เพื่อให้ไม่มีใครถูกล็อคเนื้อหาของคุณคุณควรจัดให้มีทั้งตัวแปลงสัญญาณที่ปลอดค่าลิขสิทธิ์ webM หรือ Theora และวิดีโอ H.264 และทั้ง Vorbis และ MP3 audio (พูดง่าย ๆ ยากที่จะทำ)

นี่คือสิ่งที่เกิดขึ้นในรายละเอียดสำหรับ RTSP:

  1. ไคลเอนต์สร้างการเชื่อมต่อ TCP กับเซิร์ฟเวอร์โดยทั่วไปแล้วบนพอร์ต TCP 554 ซึ่งเป็นพอร์ตที่รู้จักกันดีสำหรับ RTSP

  2. จากนั้นไคลเอ็นต์จะเริ่มต้นออกชุดคำสั่งส่วนหัว RTSP ที่มีรูปแบบคล้ายกับ HTTP ซึ่งแต่ละเซิร์ฟเวอร์ได้รับการยอมรับ ภายในคำสั่ง RTSP เหล่านี้ลูกค้าจะอธิบายถึงรายละเอียดเซิร์ฟเวอร์ของข้อกำหนดเซสชันเช่นรุ่นของ RTSP ที่รองรับการขนส่งที่จะใช้สำหรับการไหลของข้อมูลและข้อมูลพอร์ต UDP หรือ TCP ใด ๆ ที่เกี่ยวข้อง ข้อมูลนี้ถูกส่งผ่านโดยใช้ส่วนหัวของ DESCRIBE และ SETUP และมีการเพิ่มในการตอบกลับของเซิร์ฟเวอร์ด้วย Session ID ที่ไคลเอนต์และอุปกรณ์พร็อกซีชั่วคราวใด ๆ สามารถใช้เพื่อระบุกระแสในการแลกเปลี่ยนเพิ่มเติม

  3. เมื่อการเจรจาของพารามิเตอร์การขนส่งเสร็จสมบูรณ์แล้วลูกค้าจะออกคำสั่ง PLAY เพื่อสั่งให้เซิร์ฟเวอร์เริ่มส่งกระแสข้อมูล RTP

  4. เมื่อลูกค้าตัดสินใจที่จะปิดการสตรีมคำสั่ง TEARDOWN จะถูกออกพร้อมกับ Session ID ที่สั่งให้เซิร์ฟเวอร์หยุดการส่ง RTP ที่เชื่อมโยงกับ ID นั้น

อ่านเพิ่มเติม :


1

นี่คือคำตอบที่รวดเร็วและสกปรก

มีความแตกต่างระหว่างการเล่นวิดีโอบนเว็บและการสตรีมวิดีโอแบบเรียลไทม์

การเล่นจะกระทำโดยผู้เล่นที่รวมอยู่ในหน้าเว็บ (อาจใช้แฟลช, JS หรือวัตถุวิดีโอ html5) ไคลเอนต์ (เบราว์เซอร์) ดาวน์โหลดโปรแกรมเล่นนี้และเรียกใช้ ในทางกลับกันผู้เล่นดึงวิดีโอจาก URL ดาวน์โหลดอย่างง่าย อันที่จริงแล้วแม้กับ Youtube ก็มีโปรแกรมที่อนุญาตให้คุณเข้าถึงไฟล์วิดีโอที่โฮสต์โดยตรงและดาวน์โหลดได้เช่นเดียวกับที่คุณทำกับไฟล์ใด ๆ เนื่องจากระบบใช้ลิงก์ดาวน์โหลดเก่าปกติจึงไม่จำเป็นต้องมีโปรโตคอลการสตรีมที่ซับซ้อนเช่น RTSP

การสตรีมแบบเรียลไทม์ (พูดจากเว็บแคม) นั้นเป็นเรื่องที่ดีกว่า Flash มีฟังก์ชันนี้ในตัว แต่ไม่ควรใช้อีกต่อไป วิดีโอ HTML5 ไม่รองรับการสตรีมแบบเรียลไทม์ แต่ผู้คนสามารถ "หลอกลวง" ได้ด้วยการทำให้เซิร์ฟเวอร์โฮสต์ของไฟล์เปลี่ยนไฟล์วิดีโอที่มันเสนอมาอย่างต่อเนื่อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.