FMUSER Wirless ส่งวิดีโอและเสียงได้ง่ายขึ้น!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> แอฟริคานส์
sq.fmuser.org -> แอลเบเนีย
ar.fmuser.org -> ภาษาอาหรับ
hy.fmuser.org -> อาร์เมเนีย
az.fmuser.org -> อาเซอร์ไบจัน
eu.fmuser.org -> บาสก์
be.fmuser.org -> เบลารุส
bg.fmuser.org -> บัลแกเรีย
ca.fmuser.org -> คาตาลัน
zh-CN.fmuser.org -> ภาษาจีน (ประยุกต์)
zh-TW.fmuser.org -> ภาษาจีน (ดั้งเดิม)
hr.fmuser.org -> โครเอเชีย
cs.fmuser.org -> เช็ก
da.fmuser.org -> เดนมาร์ก
nl.fmuser.org -> ดัตช์
et.fmuser.org -> เอสโตเนีย
tl.fmuser.org -> ฟิลิปปินส์
fi.fmuser.org -> ฟินแลนด์
fr.fmuser.org -> ฝรั่งเศส
gl.fmuser.org -> กาลิเซีย
ka.fmuser.org -> จอร์เจีย
de.fmuser.org -> เยอรมัน
el.fmuser.org -> กรีก
ht.fmuser.org -> ชาวเฮติครีโอล
iw.fmuser.org -> ภาษาฮิบรู
hi.fmuser.org -> ภาษาฮินดี
hu.fmuser.org -> ฮังการี
is.fmuser.org -> ไอซ์แลนด์
id.fmuser.org -> ชาวอินโดนีเซีย
ga.fmuser.org -> ไอริช
it.fmuser.org -> อิตาเลี่ยน
ja.fmuser.org -> ภาษาญี่ปุ่น
ko.fmuser.org -> ภาษาเกาหลี
lv.fmuser.org -> ลัตเวีย
lt.fmuser.org -> ลิทัวเนีย
mk.fmuser.org -> มาซิโดเนีย
ms.fmuser.org -> มาเลย์
mt.fmuser.org -> มอลตา
no.fmuser.org -> นอร์เวย์
fa.fmuser.org -> เปอร์เซีย
pl.fmuser.org -> โปแลนด์
pt.fmuser.org -> โปรตุเกส
ro.fmuser.org -> โรมาเนีย
ru.fmuser.org -> รัสเซีย
sr.fmuser.org -> เซอร์เบีย
sk.fmuser.org -> สโลวัก
sl.fmuser.org -> สโลวีเนีย
es.fmuser.org -> สเปน
sw.fmuser.org -> ภาษาสวาฮิลี
sv.fmuser.org -> สวีเดน
th.fmuser.org -> ไทย
tr.fmuser.org -> ตุรกี
uk.fmuser.org -> ยูเครน
ur.fmuser.org -> ภาษาอูรดู
vi.fmuser.org -> เวียดนาม
cy.fmuser.org -> เวลส์
yi.fmuser.org -> ยิดดิช
ไม่กี่วันที่ผ่านมาฉันใช้เวลาศึกษาเทคโนโลยีสตรีมมิงแบบสด HTTP (HLS) และใช้ตัวเข้ารหัส HLS, hlsliveencoder ซึ่งเขียนด้วย C + + หน้าที่ของมันคือจับกล้องและไมโครโฟนการเข้ารหัสวิดีโอ H.264 แบบเรียลไทม์และการเข้ารหัสเสียง aac และตามข้อกำหนดโปรโตคอล HLS สร้างไฟล์ TS มาตรฐานแบบแบ่งส่วนและไฟล์ดัชนี m3u8 ผ่าน hlsliveencoder ของฉันและเซิร์ฟเวอร์ HTTP ของบุคคลที่สาม (เช่น nginx) เราประสบความสำเร็จในการรับรู้สตรีมมิ่ง HTTP แบบสดและผ่านการทดสอบบน iPhone ฉันจะเขียนกำไรบางส่วนที่นี่
1. การวิเคราะห์เทคโนโลยี HLS
HTTP live streaming (HLS) เป็นโปรโตคอลการส่งผ่านสื่อแบบสตรีมมิ่งที่ใช้ HTTP ที่นำมาใช้โดย Apple Inc. ซึ่งสามารถรับรู้สื่อสตรีมมิ่งแบบสดและแบบออนดีมานด์ ส่วนใหญ่จะใช้ในระบบ IOS เพื่อให้บริการโซลูชั่นเสียงและวิดีโอสดตามความต้องการสำหรับอุปกรณ์ IOS (เช่น iPhone และ iPad) HLS on demand นั้นโดยทั่วไปแล้ว HTTP ที่แบ่งกลุ่มตามความต้องการ ความแตกต่างคือส่วนของมันมีขนาดเล็กมาก เพื่อให้ทราบถึง HLS ตามความต้องการกุญแจสำคัญคือการแบ่งส่วนไฟล์สื่อ ในปัจจุบันมีเครื่องมือโอเพนซอร์สมากมายที่สามารถใช้งานได้ ฉันจะไม่พูดถึงที่นี่เพียงพูดถึงเทคโนโลยีการถ่ายทอดสด HLS
เมื่อเปรียบเทียบกับโปรโตคอลสตรีมมิงแบบสดทั่วไปเช่นโปรโตคอล RTMP, โปรโตคอล RTSP, โปรโตคอล MMS เป็นต้นความแตกต่างที่ใหญ่ที่สุดของสตรีมมิงแบบสด HLS คือไคลเอ็นต์แบบสดไม่ได้รับสตรีมข้อมูลที่สมบูรณ์ โปรโตคอล HLS เก็บสตรีมข้อมูลสดเป็นไฟล์มีเดียต่อเนื่องระยะสั้นและยาว (รูปแบบ mpeg-ts) ที่ฝั่งเซิร์ฟเวอร์ในขณะที่ฝั่งไคลเอ็นต์ดาวน์โหลดและเล่นไฟล์ขนาดเล็กเหล่านี้อย่างต่อเนื่องเนื่องจากฝั่งเซิร์ฟเวอร์จะสร้างไฟล์ขนาดเล็กใหม่จาก ข้อมูลสดล่าสุดเพื่อให้ฝั่งไคลเอ็นต์เพียงแค่เล่นไฟล์ที่ได้รับจากเซิร์ฟเวอร์เพื่อรับรู้การถ่ายทอดสด จะเห็นได้ว่าโดยพื้นฐานแล้ว HLS ตระหนักถึงการถ่ายทอดสดโดยใช้เทคโนโลยี VOD เนื่องจากข้อมูลถูกส่งผ่านโปรโตคอล HTTP จึงไม่จำเป็นต้องคำนึงถึงปัญหาของไฟร์วอลล์หรือพร็อกซีและเวลาในการแบ่งส่วนไฟล์นั้นสั้นมาก ไคลเอนต์สามารถเลือกและเปลี่ยนอัตรารหัสได้อย่างรวดเร็วเพื่อปรับให้เข้ากับการเล่นภายใต้เงื่อนไขแบนด์วิดท์ที่แตกต่างกัน อย่างไรก็ตามเนื่องจากลักษณะทางเทคนิคของ HLS ความล่าช้าจึงสูงกว่าโปรโตคอลสตรีมมิงแบบสดทั่วไปเสมอ
ตามความเข้าใจข้างต้นเพื่อให้ได้สตรีมมิงแบบสดของ HTTP เราจำเป็นต้องศึกษาและใช้เทคโนโลยีสำคัญต่อไปนี้
(1) รวบรวมข้อมูลของแหล่งวิดีโอและแหล่งเสียง
(2) ข้อมูลต้นฉบับถูกเข้ารหัสโดย H264 และ AAC
(3) ข้อมูลวิดีโอและเสียงถูกจัดแพ็คเกจเป็นแพ็กเก็ต mpeg-ts
(4) กลยุทธ์การสร้างการแบ่งส่วน HLS และไฟล์ดัชนี m3u8
2. โปรโตคอลการขนส่ง HTTP
ในหมู่พวกเขามีการกล่าวถึงจุดแรกและที่สองในบทความก่อนหน้าของฉันและประเด็นสุดท้ายคือเราสามารถใช้เซิร์ฟเวอร์ HTTP ที่มีอยู่ได้ดังนั้นการใช้งานจุดที่สามและสี่จึงเป็นหัวใจสำคัญ
(1) กรอบโครงการและการนำไปใช้
จากการวิเคราะห์ข้างต้นตรรกะและกระบวนการของตัวเข้ารหัสแบบสด HLS นั้นชัดเจนโดยทั่วไป: เริ่มเธรดการเข้ารหัสเสียงและวิดีโอตามลำดับรับรู้ถึงการได้มาซึ่งเสียงและวิดีโอผ่านเทคโนโลยี DirectShow (หรืออื่น ๆ ) จากนั้นเรียก libx264 และ libfaac ตามลำดับสำหรับวิดีโอและ การเข้ารหัสเสียง หลังจากเธรดการเข้ารหัสสองเธรดเข้ารหัสข้อมูลเสียงและวิดีโอแบบเรียลไทม์พวกเขาจะจัดเก็บไว้ในไฟล์เซ็กเมนต์ของรูปแบบ mpeg-ts ตามกลยุทธ์พาร์ติชันที่กำหนดเอง เมื่อไฟล์เซ็กเมนต์ถูกเก็บไว้ไฟล์ดัชนี m3u8 จะถูกอัพเดต ดังแสดงในรูปด้านล่าง:
ในรูปด้านบนหลังจากได้รับข้อมูลวิดีโอและเสียงแล้ว hlsliveencoder จำเป็นต้องพิจารณาก่อนว่าพาร์ติชันปัจจุบันควรสิ้นสุดหรือไม่และสร้างพาร์ติชันใหม่เพื่อดำเนินการสร้างพาร์ติชัน TS ต่อไป ควรสังเกตว่าการแยกส่วนใหม่ควรเริ่มจากคีย์เฟรมเพื่อป้องกันไม่ให้ผู้เล่นถอดรหัสล้มเหลว รหัสหลักมีดังนี้:
อินเทอร์เฟซของ tsmuxer นั้นค่อนข้างเรียบง่าย
(2) กลยุทธ์การสร้างเซ็กเมนต์ HLS และ m3u8
①กลยุทธ์การแบ่งกลุ่ม
โดยทั่วไปแล้วกลยุทธ์การแบ่งส่วนของ HLS นั้นแนะนำให้แบ่งทุกๆ 10 วินาที แน่นอนว่าควรทำเครื่องหมายเวลาที่เจาะจงตามความยาวจริงของการแบ่ง
โดยทั่วไปเพื่อประโยชน์ของแคชและเหตุผลอื่น ๆ ที่อยู่ส่วนสามรายการล่าสุดจะถูกเก็บไว้ในไฟล์ดัชนีและอัปเดตในรูปแบบของ "หน้าต่างบานเลื่อน"
② การแนะนำไฟล์ m3u8
M3u8 เป็นไฟล์ดัชนีของสตรีมมิงแบบสด HTTP M3u8 สามารถถือเป็น. ไฟล์รูปแบบ M3U โดยทั่วไปความแตกต่างคือไฟล์ m3u8 ใช้การเข้ารหัสอักขระ UTF-8
คัดลอกรหัส
# Extm3u M3U ส่วนหัวของไฟล์ต้องวางไว้ในบรรทัดแรก
# หมายเลขซีเรียลของส่วน TS แรกของ ext-x-media-ลำดับ
# Ext-x-targetduration ระยะเวลาสูงสุดของแต่ละส่วน TS
#Does ext-x-allow-cache อนุญาตให้แคช
# End ของไฟล์ ext-x-endlist m3u8
#Extinf ข้อมูลเพิ่มเติมข้อมูลของ ts แยกเช่นระยะเวลาแบนด์วิดท์ ฯลฯ
|
ป้อนอีเมลเพื่อรับเซอร์ไพรส์
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> แอฟริคานส์
sq.fmuser.org -> แอลเบเนีย
ar.fmuser.org -> ภาษาอาหรับ
hy.fmuser.org -> อาร์เมเนีย
az.fmuser.org -> อาเซอร์ไบจัน
eu.fmuser.org -> บาสก์
be.fmuser.org -> เบลารุส
bg.fmuser.org -> บัลแกเรีย
ca.fmuser.org -> คาตาลัน
zh-CN.fmuser.org -> ภาษาจีน (ประยุกต์)
zh-TW.fmuser.org -> ภาษาจีน (ดั้งเดิม)
hr.fmuser.org -> โครเอเชีย
cs.fmuser.org -> เช็ก
da.fmuser.org -> เดนมาร์ก
nl.fmuser.org -> ดัตช์
et.fmuser.org -> เอสโตเนีย
tl.fmuser.org -> ฟิลิปปินส์
fi.fmuser.org -> ฟินแลนด์
fr.fmuser.org -> ฝรั่งเศส
gl.fmuser.org -> กาลิเซีย
ka.fmuser.org -> จอร์เจีย
de.fmuser.org -> เยอรมัน
el.fmuser.org -> กรีก
ht.fmuser.org -> ชาวเฮติครีโอล
iw.fmuser.org -> ภาษาฮิบรู
hi.fmuser.org -> ภาษาฮินดี
hu.fmuser.org -> ฮังการี
is.fmuser.org -> ไอซ์แลนด์
id.fmuser.org -> ชาวอินโดนีเซีย
ga.fmuser.org -> ไอริช
it.fmuser.org -> อิตาเลี่ยน
ja.fmuser.org -> ภาษาญี่ปุ่น
ko.fmuser.org -> ภาษาเกาหลี
lv.fmuser.org -> ลัตเวีย
lt.fmuser.org -> ลิทัวเนีย
mk.fmuser.org -> มาซิโดเนีย
ms.fmuser.org -> มาเลย์
mt.fmuser.org -> มอลตา
no.fmuser.org -> นอร์เวย์
fa.fmuser.org -> เปอร์เซีย
pl.fmuser.org -> โปแลนด์
pt.fmuser.org -> โปรตุเกส
ro.fmuser.org -> โรมาเนีย
ru.fmuser.org -> รัสเซีย
sr.fmuser.org -> เซอร์เบีย
sk.fmuser.org -> สโลวัก
sl.fmuser.org -> สโลวีเนีย
es.fmuser.org -> สเปน
sw.fmuser.org -> ภาษาสวาฮิลี
sv.fmuser.org -> สวีเดน
th.fmuser.org -> ไทย
tr.fmuser.org -> ตุรกี
uk.fmuser.org -> ยูเครน
ur.fmuser.org -> ภาษาอูรดู
vi.fmuser.org -> เวียดนาม
cy.fmuser.org -> เวลส์
yi.fmuser.org -> ยิดดิช
FMUSER Wirless ส่งวิดีโอและเสียงได้ง่ายขึ้น!
ติดต่อ
ที่ตั้ง:
เลขที่ 305 อาคาร HuiLan เลขที่ 273 Huanpu Road Guangzhou China 510620
หมวดหมู่
จดหมายข่าว