FMUSER Truyền video và âm thanh không dây dễ dàng hơn!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Người Afrikaans
sq.fmuser.org -> Tiếng Albania
ar.fmuser.org -> tiếng Ả Rập
hy.fmuser.org -> Armenia
az.fmuser.org -> Azerbaijan
eu.fmuser.org -> Basque
be.fmuser.org -> Tiếng Belarus
bg.fmuser.org -> Tiếng Bulgaria
ca.fmuser.org -> Catalan
zh-CN.fmuser.org -> Tiếng Trung (Giản thể)
zh-TW.fmuser.org -> Trung Quốc (truyền thống)
hr.fmuser.org -> Tiếng Croatia
cs.fmuser.org -> Tiếng Séc
da.fmuser.org -> Đan Mạch
nl.fmuser.org -> Hà Lan
et.fmuser.org -> Tiếng Estonia
tl.fmuser.org -> Phi Luật Tân
fi.fmuser.org -> Phần Lan
fr.fmuser.org -> Pháp
gl.fmuser.org -> Galicia
ka.fmuser.org -> tiếng Georgia
de.fmuser.org -> Đức
el.fmuser.org -> Hy Lạp
ht.fmuser.org -> Tiếng Creole của Haiti
iw.fmuser.org -> Tiếng Do Thái
hi.fmuser.org -> Tiếng Hindi
hu.fmuser.org -> Hungary
is.fmuser.org -> tiếng Iceland
id.fmuser.org -> tiếng Indonesia
ga.fmuser.org -> Ailen
it.fmuser.org -> Ý
ja.fmuser.org -> Nhật Bản
ko.fmuser.org -> Hàn Quốc
lv.fmuser.org -> Tiếng Latvia
lt.fmuser.org -> Tiếng Litva
mk.fmuser.org -> Người Macedonian
ms.fmuser.org -> Mã Lai
mt.fmuser.org -> Maltese
no.fmuser.org -> Na Uy
fa.fmuser.org -> tiếng Ba Tư
pl.fmuser.org -> Tiếng Ba Lan
pt.fmuser.org -> tiếng Bồ Đào Nha
ro.fmuser.org -> Rumani
ru.fmuser.org -> tiếng Nga
sr.fmuser.org -> Tiếng Serbia
sk.fmuser.org -> Tiếng Slovak
sl.fmuser.org -> Tiếng Slovenia
es.fmuser.org -> tiếng Tây Ban Nha
sw.fmuser.org -> Tiếng Swahili
sv.fmuser.org -> Thụy Điển
th.fmuser.org -> Thái
tr.fmuser.org -> Thổ Nhĩ Kỳ
uk.fmuser.org -> Tiếng Ukraina
ur.fmuser.org -> Tiếng Urdu
vi.fmuser.org -> Tiếng việt
cy.fmuser.org -> tiếng Wales
yi.fmuser.org -> Yiddish
lý lịch
MP4 là định dạng video phổ biến của chúng tôi và thường khi chúng tôi phát video máy chủ, nó trực tiếp là nguồn video MP4 được yêu cầu. Nhưng trên thực tế, điều này là không tốt. Tệp tiêu đề MP4 [ftyp + moov] lớn và quá trình phát lại ban đầu cần tải xuống tệp tiêu đề hoàn chỉnh và phân tích nó, sau đó tải xuống một đoạn video clip có thể phát được để phát. Ngoài ra, khi kích thước của video tăng lên, tệp tiêu đề sẽ tiếp tục phát triển và thời gian phát lại ban đầu sẽ lâu hơn. Trước tình hình này, cần có một phương pháp có thể tăng tốc độ phân tích ban đầu của video. HLS là giải pháp được Apple đưa ra để giải quyết vấn đề này.
HLS
HLS là tên viết tắt của HTTP Live Streaming. Nó là một giao thức truyền mạng phương tiện truyền thông dựa trên HTTP do Apple đề xuất. Nó có thể hỗ trợ trực tiếp và theo yêu cầu cùng một lúc, cũng như đa độ nét, âm thanh và video kép, phụ đề và các chức năng khác. Nguyên tắc của nó là chia toàn bộ video thành nhiều video nhỏ và quá trình phát lại hoàn chỉnh được hình thành bằng cách nối các phân đoạn này.
HLS được sử dụng rộng rãi trên các thiết bị đầu cuối di động. Các ứng dụng khách hiện tại hỗ trợ giao thức HLS bao gồm:
iOS 3.0 trở lên, AVPlayer nguyên bản hỗ trợ HLS
Android 3.0 trở lên
Adobe Flash Player 11.0 trở lên
Nguyên tắc chung của nó là:
1. Thu thập âm thanh và video
2. Mã hóa âm thanh và video trên máy chủ
3. Sau khi mã hóa, hãy chuyển nó cho Stream Segmenter ở dạng luồng truyền tải MPEG-2
4. Bộ cắt tạo tệp chỉ mục và danh sách phát ts, tệp chỉ mục được sử dụng để chỉ ra vị trí của âm thanh và video, và ts là một clip đa phương tiện thực sự
5. Đặt tài nguyên của bước trước trên máy chủ HTTP
6. Máy khách yêu cầu tệp chỉ mục để phát lại và nội dung phát lại có thể được tìm thấy thông qua tệp chỉ mục
M3U8
Bước quan trọng để nhận ra HLS là bước thứ tư ở trên, cụ thể là tổ chức các tệp chỉ mục và danh sách phát ts. Định dạng M3U8 được sử dụng ở đây. M3U8 là phiên bản Unicode của M3U, 8 có nghĩa là mã hóa UTF-8 được sử dụng, và cả M3U và M3U8 đều là định dạng tệp cho danh sách đa phương tiện.
Mô tả định dạng M3U8
Đôi khi chúng tôi có thể cần phải sửa đổi thủ công nội dung của tệp M3U8 để thử nghiệm hoặc trong một số trường hợp đặc biệt, vì vậy chúng tôi cần có hiểu biết nhất định về định dạng của nó. Định nghĩa của định dạng này được viết trong tài liệu RFC 8216. Sau đây là một số lưu ý:
Tệp M3U8 phải được mã hóa theo UTF-8 và không thể sử dụng thứ tự byte Dấu thứ tự Byte (BOM) và không được chứa các ký tự điều khiển utf-8 (U + 0000 ~ U_001F và U + 007F ~ u + 009F)
Mỗi dòng của nội dung tệp M3U8 là một dòng trống, một URI hoặc một chuỗi bắt đầu bằng # và không có ký tự trống nào có thể xuất hiện.
Các thẻ tích hợp đều là các chuỗi bắt đầu bằng #EXT và phân biệt chữ hoa chữ thường.
URI là đường dẫn nội dung, có thể là đường dẫn tương đối hoặc đường dẫn tuyệt đối
Tệp danh sách Master M3U8
Tệp chỉ mục M3U8 chính thường được sử dụng để chỉ định nhiều nguồn chỉ mục. Đầu tiên chúng ta hãy phân tích nội dung của tệp m3u8 chính hls_vod_mvp.m3u8, phần đầu của nó như thế này
Định dạng tiêu đề
#EXTM3U
# PHIÊN BẢN EXT-X: 7
# EXT-X-INDEPENDENT-SEGMENTSMã sao chép
# EXTM3U cho biết rằng tệp ở định dạng M3U và tất cả các tệp định dạng M3U phải đặt nội dung ở dòng đầu tiên.
# EXT-X-VERSIOn cho biết phiên bản tương thích của danh sách phát, hiện là 7.
# EXT-X-INDEPENDENT-SEGMENTS Thẻ này cho biết rằng tất cả các mẫu phương tiện trong một phân đoạn phương tiện có thể được giải mã độc lập mà không cần dựa vào thông tin phân đoạn phương tiện khác.
Định dạng phụ đề
Nội dung bên dưới là một số chú thích, nội dung chú thích không cần thiết.
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "subtitles / eng / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "subtitles / engc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "subtitles / jpn / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "subtitles / jpnc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zho / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zhoc / prog_index.m3u8 "Sao chép mã
# EXT-X-MEDIA được sử dụng để chỉ định tài nguyên danh sách phương tiện đa ngôn ngữ của cùng một nội dung.
TYPE là loại tài nguyên và nội dung tùy chọn là: AUDIO, VIDEO, SUBTITLES, CLOSED-CAPTIONS.
Nội dung trên đặt TYPE = SUBTITLES, là loại phụ đề.
GROUP-ID là nhóm chứa bản dịch đa ngôn ngữ và là tham số bắt buộc
NAME là thông tin mô tả có thể đọc được của luồng dịch và giá trị này tương ứng với displayName của AVMediaSelectionOption.
DEFAULT, AUTOSELECT, FORCED là ba giá trị BOOL tương ứng với việc luồng dịch được chọn theo mặc định nếu thiếu thông tin cần thiết. Luồng phát lại được phát khi người dùng không hiển thị cài đặt. FORCED chỉ hợp lệ cho loại phụ đề và được sử dụng để đánh dấu lựa chọn tự động hiện tại của luồng dịch. .
LANGUAGE được sử dụng để chỉ định loại ngôn ngữ được đặt theo [mã ngôn ngữ ISO 639] (https://www.w3.org/WAI/ER/WD-AERT/iso639.htm "Mã ngôn ngữ ISO 639"). Khi trình phát mặc định của hệ thống chọn phụ đề, tên của danh sách phụ đề hiển thị sẽ được đặt theo giá trị này.
URI là thông tin vị trí của tài nguyên, nơi nó tương ứng với tệp M3U8 có phụ đề. subtitles / eng / prog_index.m3u8 là một đường dẫn tương đối,
Qua những thông tin trên, chúng ta có thể phân tích ý nghĩa của nội dung trên như: Video hiện tại hỗ trợ ba phụ đề: tiếng Anh, tiếng Nhật và tiếng Trung. Nhưng mỗi ngôn ngữ có hai thông điệp EXT-X-MEDIA. Sự khác biệt giữa chúng là sự phân nhóm, một cái được nhóm trong subs và cái kia được nhóm trong subsC. Tại sao có hai nhóm? Tôi sẽ nói về điều này sau.
Định dạng video
Nhìn xuống một lần nữa, để biết chỉ mục của nội dung video:
#EXT-X-STREAM-INF:BANDWIDTH=827299,AVERAGE-BANDWIDTH=747464,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970,AUDIO="program_audio",SUBTITLES=" subs"
0640 / 0640.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=360849,AVERAGE-BANDWIDTH=320932,CODECS="avc1.64001f",RESOLUTION=640x360,URI="0640/0640_I-Frame.m3u8"Copy code
EXT-X-STREAM-INF: Thuộc tính này chỉ định nguồn sao lưu, nghĩa là, đường dẫn phát lại video và một số thông tin video. Sau đây là cấu hình của nội dung tương ứng: BANDWIDTH là tốc độ bit cao nhất, 827299 là 827299bit / s, là thời gian cao điểm nhất Tiêu thụ 101KB lưu lượng mỗi giây.
AVERAGE-BANDWIDTH là tốc độ bit trung bình, 747464
CODECS là thông tin mã hóa, avc1.64001f, mp4a.40.2, avc đại diện cho định dạng mã hóa h264, 64001f sau là thông số mã hóa được biểu thị bằng hệ thập lục phân, 64, 00, 1f tương ứng đại diện cho ba giá trị tham số khác nhau. mp4a là một định dạng mã hóa âm thanh và 40.2 sau đây đại diện cho các thông số mã hóa âm thanh.
RESOLUTION là độ phân giải video. Độ phân giải nguồn video hiện tại là 640x360.
FRAME-RATE là tốc độ khung hình tối đa, 29.970 thể hiện tốc độ khung hình tối đa của phát lại hiện tại là 29.970 khung hình / giây.
AUDIO là nhóm âm thanh và program_audio là tên của nhóm âm thanh tương ứng.
SUBTITLES cho biết nhóm phụ đề tương ứng, và subs là tên của nhóm phụ đề tương ứng. Thông tin phụ đề ở trên có ID NHÓM và giá trị này tương ứng với thông tin đó.
URI là đường dẫn nội dung, 0640 / 0640.m3u8 tương ứng với đường dẫn tệp m3u8 của nguồn video. Điều này có thể được nhìn thấy trong thông tin bắt gói.
Bên dưới EXT-X-STREAM-INF là EXT-XI-FRAME-STREAM-INF, đại diện cho khung I (khung chính) của tài nguyên đa phương tiện có trong tệp danh sách phát. Vì khung I chỉ là hình ảnh, không chứa nội dung âm thanh, các thông số còn lại phù hợp với định dạng nội dung video.
Sau đó là các nguồn video tương ứng với các độ phân giải khác nhau 1920x1080, 1280x720, 960x540, 480x270. Bởi vì HLS sẽ tự động chuyển đổi độ phân giải tùy theo tình hình mạng, nhiều độ phân giải thường được chuẩn bị để lựa chọn. Theo phân tích dữ liệu thu được, phân đoạn đầu tiên được phát có độ phân giải 640, phân đoạn thứ hai đến 8 phân đoạn sau đó là độ phân giải 480, và sau đó nó được chuyển sang độ phân giải 640.
định dạng âm thanh
Nhìn xuống là chỉ số của âm thanh tương ứng
# EXT-X-MEDIA: TYPE = AUDIO, GROUP-ID = "program_audio", LANGUAGE = "eng", NAME = "Alternate Audio", AUTOSELECT = YES, DEFAULT = YES, URI = "audio1 / audio1.m3u8" Sao chép Mã
# EXT-X-MEDIA đã xuất hiện ở trên, nhưng không đề cập đến danh sách cho nhiều ngôn ngữ.
TYPE = AUDIO, lần này loại là âm thanh.
GROUP-ID là ID nhóm, tương ứng với nội dung AUDIO trong EXT-X-STREAM-INF.
URI = audio1 / audio1.m3u8 tương ứng với đường dẫn âm thanh.
Các nguồn thay thế của các định dạng mã hóa khác nhau
Trong tệp chính M3U8, chúng ta cũng có thể thấy nguồn video có độ phân giải 640, không giống với độ phân giải 640 ở trên. Nội dung của nó như thế này:
#EXT-X-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,VIDEO-RANGE=SDR,CODECS="hvc1.2.4.H150.B0,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970 ,AUDIO="program_audio_0",SUBTITLES="subsC"
0640c / prog_index.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,CODECS="hvc1.2.4.H150.B0",RESOLUTION=640x360,URI="0640c/iframe_index.m3u8"
# EXT-X-MEDIA: TYPE = AUDIO, GROUP-ID = "program_audio_0", LANGUAGE = "eng", NAME = "Âm thanh thay thế", AUTOSELECT = YES, DEFAULT = YES, URI = "audioc / prog_index.m3u8" Sao chép Mã
Định dạng mã hóa CODECS là hvc1.2.4.H150.B0, mp4a.40.2, định dạng mã hóa âm thanh không thay đổi, nhưng định dạng mã hóa video đã thay đổi. hvc1 là một trong những định dạng mã hóa HEVC (H265). Nó là một định dạng mã hóa video thế hệ mới do Apple tung ra. Vì các vấn đề tương thích, nhiều máy khách không thể phân tích cú pháp định dạng này, vì vậy nó không phổ biến lắm. Nguồn video của định dạng này xuất hiện. Nó phải là một bản sao lưu ở đây. So sánh hai nội dung có cùng độ phân giải, có thể thấy rằng tốc độ bit của định dạng hvc1 cao hơn định dạng avc1, điều này cho thấy nội dung của hvc1 lớn hơn và tỷ lệ nén của avc1 cao hơn trong cùng độ phân giải.
Tương ứng với nguồn video định dạng hvc1, nhóm nội dung phụ đề và nhóm nội dung âm thanh của nó cũng đã thay đổi, đó là lý do tại sao các phụ đề trên có hai bản sao của cùng một ngôn ngữ và chúng tương ứng với các nguồn video ở định dạng avc1 và hvc1.
Đây là danh sách chính của M3U8. Âm thanh và video của nội dung này được xử lý riêng biệt, nhưng chúng cũng có thể được kết hợp với nhau.
Tệp M3u8 chứa thông tin phương tiện
Lấy tệp 0640.m3u8 làm ví dụ
#EXTM3U
# PHIÊN BẢN EXT-X: 4
# EXT-X-TARGETDURATION: 7
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-PLAYLIST-TYPE: VOD
#EXTINF: 6.006,
0640_00001.ts
#EXTINF: 6.006,
0640_00002.ts
#EXTINF: 6.006,
0640_00003.ts
....
# EXT-X-ENDLIST Mã sao chép
# EXTM3U và # EXT-X-VERSION lần lượt là tiêu đề tệp M3U và số phiên bản tương thích. Định dạng này là phiên bản đầu tiên nên số phiên bản thấp hơn so với tệp chính.
EXT-X-TARGETDURATION đại diện cho thời lượng tối đa của mỗi phân đoạn phát lại, 7 đại diện cho 7 giây và các phân đoạn trong thư mục này không được vượt quá 7 giây.
EXT-X-MEDIA-SEQUENCE đại diện cho số thứ tự của phân đoạn đầu tiên của danh sách phát và 1, đại diện cho phân đoạn phát bắt đầu từ 1.
#EXTINF đại diện cho thời lượng của phân đoạn, 6.006 có nghĩa là phân đoạn hiện tại là 6.006 giây. Thông tin tổng thời lượng video có được bằng cách tích lũy giá trị này.
0640_00001.ts là đường dẫn tương đối của clip. Tệp ts đại diện cho một đoạn video hoặc âm thanh và nó có thể ở định dạng ts, mp4, aac và các định dạng khác. Bởi vì nó đã được chỉ định để mở từ 1
|
Nhập email để nhận bất ngờ
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Người Afrikaans
sq.fmuser.org -> Tiếng Albania
ar.fmuser.org -> tiếng Ả Rập
hy.fmuser.org -> Armenia
az.fmuser.org -> Azerbaijan
eu.fmuser.org -> Basque
be.fmuser.org -> Tiếng Belarus
bg.fmuser.org -> Tiếng Bulgaria
ca.fmuser.org -> Catalan
zh-CN.fmuser.org -> Tiếng Trung (Giản thể)
zh-TW.fmuser.org -> Trung Quốc (truyền thống)
hr.fmuser.org -> Tiếng Croatia
cs.fmuser.org -> Tiếng Séc
da.fmuser.org -> Đan Mạch
nl.fmuser.org -> Hà Lan
et.fmuser.org -> Tiếng Estonia
tl.fmuser.org -> Phi Luật Tân
fi.fmuser.org -> Phần Lan
fr.fmuser.org -> Pháp
gl.fmuser.org -> Galicia
ka.fmuser.org -> tiếng Georgia
de.fmuser.org -> Đức
el.fmuser.org -> Hy Lạp
ht.fmuser.org -> Tiếng Creole của Haiti
iw.fmuser.org -> Tiếng Do Thái
hi.fmuser.org -> Tiếng Hindi
hu.fmuser.org -> Hungary
is.fmuser.org -> tiếng Iceland
id.fmuser.org -> tiếng Indonesia
ga.fmuser.org -> Ailen
it.fmuser.org -> Ý
ja.fmuser.org -> Nhật Bản
ko.fmuser.org -> Hàn Quốc
lv.fmuser.org -> Tiếng Latvia
lt.fmuser.org -> Tiếng Litva
mk.fmuser.org -> Người Macedonian
ms.fmuser.org -> Mã Lai
mt.fmuser.org -> Maltese
no.fmuser.org -> Na Uy
fa.fmuser.org -> tiếng Ba Tư
pl.fmuser.org -> Tiếng Ba Lan
pt.fmuser.org -> tiếng Bồ Đào Nha
ro.fmuser.org -> Rumani
ru.fmuser.org -> tiếng Nga
sr.fmuser.org -> Tiếng Serbia
sk.fmuser.org -> Tiếng Slovak
sl.fmuser.org -> Tiếng Slovenia
es.fmuser.org -> tiếng Tây Ban Nha
sw.fmuser.org -> Tiếng Swahili
sv.fmuser.org -> Thụy Điển
th.fmuser.org -> Thái
tr.fmuser.org -> Thổ Nhĩ Kỳ
uk.fmuser.org -> Tiếng Ukraina
ur.fmuser.org -> Tiếng Urdu
vi.fmuser.org -> Tiếng việt
cy.fmuser.org -> tiếng Wales
yi.fmuser.org -> Yiddish
FMUSER Truyền video và âm thanh không dây dễ dàng hơn!
Liên hệ
Địa Chỉ:
Phòng số 305 Tòa nhà HuiLan Số 273 đường Huanpu Quảng Châu Trung Quốc 510620
Categories
Đăng ký bản tin