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 -> ยิดดิช
HLS และ Http Live Streaming เป็นโปรโตคอลสำหรับการสตรีมแบบเรียลไทม์ที่กำหนดโดย Apple HLS ถูกนำไปใช้ตามโปรโตคอล HTTP เนื้อหาการส่งประกอบด้วยสองส่วนส่วนหนึ่งคือไฟล์คำอธิบาย M3U8 และอีกส่วนคือไฟล์สื่อ TS
1. ไฟล์ M3U8
ไฟล์สื่ออธิบายเป็นข้อความซึ่งประกอบด้วยชุดของแท็ก
#EXTM3U
# EXT-X-TARGETDURATION: 5
#EXTINF: 5,
./0.ts
#EXTINF: 5,
./1.ts
# EXTM3U: บรรทัดแรกของไฟล์ M3U8 แต่ละไฟล์ต้องเป็นแท็กนี้
# EXT-X-TARGETDURATION: ระบุระยะเวลาสูงสุดของส่วนสื่อ (วินาที) ระยะเวลาที่ระบุใน #EXTINF ต้องน้อยกว่าหรือเท่ากับค่าสูงสุดนี้ ค่านี้สามารถปรากฏได้เพียงครั้งเดียว
#EXTINF: อธิบายความยาวของไฟล์สื่อเดียว ไฟล์มีเดียตามมาเช่น ./0.ts
สามารถเผยแพร่โดย HTTP บนอุปกรณ์ iOS และ Mac มาตรฐานเพลย์ลิสต์คือไฟล์ m3u8 ที่ขยายโดย m3u และไฟล์มีเดียคือไฟล์ MPEG2-TS หรือ AAC (เฉพาะเสียง)
มีสองสถานการณ์แอปพลิเคชันสำหรับไฟล์ m3u8:
กระแสการปรับตัวหลายอัตรา
#EXTM3U
# EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 1280000
# EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 2560000
# EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 7680000
# EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 65000, CODECS = "mp4a.40.5"
http://example.com/audio-only.m3u8
กระแสการปรับอัตราเดียว
#EXTM3U
# EXT-X-TARGETDURATION: 5220
#EXTINF: 5220,
http://media.example.com/entire.ts
# EXT-X-ENDLIST
องค์การมาตรฐานระหว่างประเทศกำหนดเอกสาร rfc นี้:
http://tools.ietf.org/html/draft-pantos-http-live-streaming-06
ไฟล์ m3u8 เป็นส่วนขยายของไฟล์ m3u คำหลักเพิ่มเติมถูกกำหนดไว้ใน rfc:
ในหมู่พวกเขา:
# EXT-X-TARGETDURATION
กำหนดระยะเวลาสูงสุดของ TS แต่ละตัว
# EXT-X-MEDIA-SEQUENCE
กำหนดหมายเลขประจำเครื่องของไฟล์แรกในไฟล์ m3u8 ปัจจุบัน ไฟล์ ts แต่ละไฟล์มีหมายเลขซีเรียลคงที่และไม่ซ้ำกันในไฟล์ m3u8 หมายเลขประจำเครื่องใช้เพื่อเปลี่ยนอัตรารหัสสำหรับการจัดตำแหน่งระหว่าง MBR
# EXT-X-KEY
กำหนดวิธีการเข้ารหัสและ url ของไฟล์คีย์ที่ใช้เพื่อรับไฟล์คีย์ 16 ไบต์เพื่อถอดรหัสไฟล์ ts
คุณสมบัติ:
วิธีการ
URL
# EXT-X-PROGRAM-DATE-TIME
เวลาที่แน่นอนของไฟล์แรก
# EXT-X-ALLOW-CACHE
อนุญาตให้แคชหรือไม่
# EXT-X-ENDLIST
ระบุจุดสิ้นสุดของไฟล์ m3u8 m3u8 สดไม่มีแท็กนี้
# EXT-X-STREAM-INF
คุณสมบัติ:
BANDWIDTH ระบุอัตราบิต
รหัสเฉพาะของ PROGRAM-ID
CODECS ระบุประเภทการเข้ารหัสของสตรีม
# EXT-X-DISCONTINUITY
เมื่อพบแท็กแอตทริบิวต์ต่อไปนี้มีการเปลี่ยนแปลง:
รูปแบบไฟล์
จำนวนและประเภทของแทร็ก
พารามิเตอร์การเข้ารหัส
ลำดับการเข้ารหัส
ลำดับการประทับเวลา
# EXT-X-VERSION แอตทริบิวต์นี้สามารถใช้ได้หรือไม่คุณไม่มีก็ได้
M3U8 แบ่งออกเป็น M3U8 ระดับบนสุดและ M3U8 ระดับที่สอง M3U8 ระดับบนสุดส่วนใหญ่จะใช้สำหรับการปรับตัวแบบหลายอัตรา M3U8 ระดับที่สองเป็นไฟล์สไลซ์จริง
โดยค่าเริ่มต้นไคลเอนต์จะเลือกคำขอที่มีบิตเรตสูงสุดก่อน หากพบว่าไม่สามารถเข้าถึงบิตเรตได้จะร้องขอสตรีมที่มีบิตเรตต่ำ
ไฟล์ M3U8 ระดับบนสุดในการใช้งานจริงมีดังนี้:
#EXTM3U
# EXT-X-STREAM-INF: PROGRAM-ID = 201273221265, BANDWIDTH = 358400
11.m3u8
# EXT-X-STREAM-INF: PROGRAM-ID = 201273221265, BANDWIDTH = 972800
22.m3u8
ไฟล์ M3U8 ระดับบนสุดด้านบนกำหนดไฟล์ระดับที่สองสองไฟล์คือ 11.m3u8 และ 22.m3u8 และไคลเอนต์จะเลือกไฟล์ใดไฟล์หนึ่งเพื่อรับเนื้อหา
เนื้อหาของไฟล์ M3U8 รองมีดังนี้:
#EXTM3U
# EXT-X-VERSION: 1
# EXT-X-TARGETDURATION: 10
# EXT-X-MEDIA-SEQUENCE: 0
#EXTINF: 3,
1-4.ทส
#EXTINF: 8,
1-6.ทส
#EXTINF: 8,
1-8.ทส
#EXTINF: 8,
1-10.ทส
#EXTINF: 8,
1-12.ทส
#EXTINF: 8,
1-14.ทส
#EXTINF: 8,
1-16.ทส
#EXTINF: 9,
1-18.ทส
#EXTINF: 6,
1-20.ทส
#EXTINF: 8,
1-22.ทส
#EXTINF: 9,
1-24.ทส
#EXTINF: 3,
1-26.ทส
# EXT-X-ENDLIST
หลังจากไคลเอนต์ได้รับไฟล์ M3U8 รองด้านบนแล้วจะยังคงขอไฟล์ข้างในจากนั้นจึงสามารถเล่นได้
ข้างต้นเกี่ยวกับสถานการณ์ตามความต้องการและสถานการณ์ของการถ่ายทอดสดจะมีแอตทริบิวต์ในไฟล์ M3U8 เพื่อบอกว่ากำลังถ่ายทอดสดและไคลเอ็นต์จะร้องขอไฟล์ M3U8 ใหม่เป็นระยะ
// เมื่อ HLS ตระหนักถึงความต้องการและการถ่ายทอดสดความแตกต่างของไฟล์ M3U8
1. คำอธิบายปัญหา
เมื่อเร็ว ๆ นี้ฉันได้ทำการทดสอบการเล่นสไลซ์แบบแปลงรหัสโดยใช้ HLS (HTTP Live Streaming) เพื่อทำการถ่ายทอดสด เวลาในการแบ่งส่วน TS แต่ละครั้งคือ 10 วินาทีและไฟล์ m3u8 แบบสดต่อไปนี้ถูกสร้างขึ้นตามไฟล์การแบ่งส่วน TS
คัดลอกรหัส
#EXTM3U
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-TARGETDURATION: 10
#EXTINF: 10
hls / 1.ts
#EXTINF: 10
hls / 2.ts
#EXTINF: 10
hls / 3.ts
#EXTINF: 10
hls / 4.ts
#EXTINF: 10
hls / 5.ts
#EXTINF: 10
hls / 6.ts
#EXTINF: 10
hls / 7.ts
#EXTINF: 10
hls / 8.ts
#EXTINF: 10
hls / 9.ts
#EXTINF: 10
hls / 10.ts
คัดลอกรหัส
บันทึกไฟล์ m3u8 ด้านบนเป็น live.m3u8 วางไว้ในไดเร็กทอรีเอกสาร Apache และเล่น URL ต่อไปนี้ด้วย VLC:
http://localhost/live.m3u8
การทดสอบพบว่าไฟล์แรกที่เริ่มเล่นไม่ใช่ 1.ts หลังจากการทดสอบหลายครั้งพบว่า:
ตราบใดที่มีไฟล์มากกว่าสามไฟล์ในรายการไฟล์สามไฟล์สุดท้ายในรายการจะเล่นเสมอ
2. การแก้ปัญหา
เป็นเรื่องน่าเศร้ามากที่หลังจากค้นหาข้อมูลทางอินเทอร์เน็ตแล้วฉันไม่พบข้อมูลที่มีประสิทธิภาพ เพื่อนคนหนึ่งเจอสถานการณ์เดียวกันเขาเล่าประสบการณ์หลังจากแก้ปัญหานี้หรือไม่?
หลังจากปรึกษากับเพื่อนร่วมงานแล้วเพื่อนร่วมงานบอกว่าเป็นไปได้เพราะรายการไฟล์ m3u8 แบบสดต้องได้รับการอัปเดตแบบเรียลไทม์ หากเราทำการทดสอบเราสามารถเพิ่ม # EXT-X-ENDLIST ต่อท้ายก่อน วิธีนี้ได้รับการทดสอบแล้วว่าใช้งานได้ แต่นี่ไม่ใช่โหมด m3u8 แบบสดอีกต่อไป
หลังจากค้นหาอินเทอร์เน็ตอีกครั้งฉันยืนยันว่าในที่สุดฉันก็พบคำอธิบาย m3u8 แบบสด
รายการเล่นสด (หน้าต่างบานเลื่อน)
สำหรับเซสชันสดไฟล์ดัชนีจะได้รับการอัพเดตโดยการลบ URI สื่อออกจากไฟล์เนื่องจากไฟล์สื่อใหม่ถูกสร้างขึ้นและพร้อมใช้งาน
สำคัญ: แท็ก EXT-X-ENDLIST ไม่มีอยู่ในรายการเล่นสดซึ่งบ่งชี้ว่าไฟล์สื่อใหม่จะถูกเพิ่มลงในไฟล์ดัชนีเมื่อพร้อมใช้งาน
ดูรายการที่ 3 สำหรับตัวอย่างรายการเล่นสดซึ่งจะปรากฏที่จุดเริ่มต้นของเซสชัน
รายการเล่นสด 3 รายการที่จุดเริ่มต้นของเซสชัน
คัดลอกรหัส
#EXTM3U
# EXT-X-TARGETDURATION: 10
# EXT-X-VERSION: 3
# EXT-X-MEDIA-SEQUENCE: 1
#EXTINF: 10,
fileSequence1.ts
#EXTINF: 10,
fileSequence2.ts
#EXTINF: 10,
fileSequence3.ts
#EXTINF: 10,
fileSequence4.ts
#EXTINF: 10,
fileSequence5.ts
คัดลอกรหัส
ค่าแท็ก EXT-X-MEDIA-SEQUENCE ต้องเพิ่มขึ้น 1 สำหรับ URI สื่อทุกรายการที่ถูกลบออกจากไฟล์เพลย์ลิสต์ Media URI ควรถูกลบออกจากไฟล์เพลย์ลิสต์ตามลำดับที่ปรากฏในเพลย์ลิสต์ ไฟล์ดัชนีที่อัปเดตจะแสดงหน้าต่างที่ย้ายไปยังสตรีมแบบต่อเนื่อง เซสชันประเภทนี้เหมาะสำหรับการออกอากาศแบบต่อเนื่อง
นี่คือเพลย์ลิสต์เดียวกันหลังจากได้รับการอัปเดตด้วย URI สื่อใหม่:
การแสดงรายการเล่นสด 4 รายการหลังจากอัปเดต URI สื่อ
คัดลอกรหัส
#EXTM3U
# EXT-X-TARGETDURATION: 10
# EXT-X-VERSION: 3
# EXT-X-MEDIA-SEQUENCE: 2
#EXTINF: 10,
fileSequence2.ts
#EXTINF: 10,
fileSequence3.ts
#EXTINF: 10,
fileSequence4.ts
#EXTINF: 10,
fileSequence5.ts
#EXTINF: 10,
fileSequence6.ts
คัดลอกรหัส
3. กฎการอัปเดต m3u8 สด
รายการไฟล์ m3u8 สดต้องได้รับการอัปเดตอย่างต่อเนื่องกฎการอัปเดต:
ลบไฟล์ด้านบนสุด (คิดว่าเล่น) ในรายการเล่นไฟล์
อัปเดตแท็ก EXT-X-MEDIA-SEQUENCE อย่างต่อเนื่องโดยเพิ่มทีละ 1
4. การทดลอง
เขียนโปรแกรมขนาดเล็กเพื่อสร้าง m3u8 แบบสดสำหรับการทดสอบ
การใช้งาน:
m3u8_gen.exe start_num list_count ระยะเวลา filename.m3u8 [คำนำหน้า]
ตัวอย่างการใช้งาน:
m3u8_gen.exe 1 3 10 live.m3u8 hls /
สร้างไฟล์ live.m3u8 เป็น
คัดลอกรหัส
#EXTM3U
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-TARGETDURATION: 10
#EXTINF: 10
hls / 1.ts
#EXTINF: 10
hls / 2.ts
#EXTINF: 10
hls / 3.ts
คัดลอกรหัส
เขียนสคริปต์ BAT เพื่ออัปเดตไฟล์ live.m3u8 ทุกๆ 10 วินาที
คัดลอกรหัส
@ echo off
f
|
ป้อนอีเมลเพื่อรับเซอร์ไพรส์
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
หมวดหมู่
จดหมายข่าว