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
Cách đây vài ngày, tôi đã dành thời gian để nghiên cứu công nghệ phát trực tiếp HTTP (HLS) và triển khai bộ mã hóa HLS, hlsliveencoder, được viết bằng C + +. Chức năng của nó là ghi lại camera và micrô, mã hóa video H.264 thời gian thực và mã hóa âm thanh aac, và theo đặc điểm giao thức HLS, tạo tệp TS tiêu chuẩn được phân đoạn và tệp chỉ mục m3u8. Thông qua hlsliveencoder của tôi và máy chủ HTTP của bên thứ ba (chẳng hạn như nginx), chúng tôi đã nhận ra thành công phát trực tiếp HTTP và đã vượt qua bài kiểm tra trên iPhone. Tôi sẽ viết một số lợi ích ở đây.
1. Phân tích Công nghệ HLS
Phát trực tiếp HTTP (HLS) là một giao thức truyền tải phương tiện truyền trực tuyến dựa trên HTTP do Apple Inc. triển khai, có thể hiện thực hóa phương tiện truyền trực tuyến theo yêu cầu và trực tiếp. Nó chủ yếu được sử dụng trong hệ thống IOS để cung cấp các giải pháp âm thanh và video trực tiếp và theo yêu cầu cho các thiết bị IOS (chẳng hạn như iPhone và iPad). HLS theo yêu cầu về cơ bản là một HTTP được phân đoạn phổ biến theo yêu cầu. Sự khác biệt là các phân đoạn của nó rất nhỏ. Để thực hiện HLS theo yêu cầu, điều quan trọng là phải phân đoạn các tệp phương tiện. Hiện tại, có rất nhiều công cụ mã nguồn mở có thể được sử dụng. Tôi sẽ không bàn đến ở đây, chỉ nói về công nghệ truyền hình trực tiếp của HLS.
So với các giao thức phát trực tiếp phổ biến, chẳng hạn như giao thức RTMP, giao thức RTSP, giao thức MMS, v.v., sự khác biệt lớn nhất của phát trực tiếp HLS là máy khách trực tiếp không nhận được luồng dữ liệu hoàn chỉnh. Giao thức HLS lưu trữ luồng dữ liệu trực tiếp dưới dạng tệp phương tiện liên tục, ngắn hạn và dài (định dạng mpeg-ts) ở phía máy chủ, trong khi phía máy khách liên tục tải xuống và phát các tệp nhỏ này, vì phía máy chủ luôn tạo các tệp nhỏ mới từ dữ liệu trực tiếp mới nhất, do đó phía máy khách chỉ cần phát các tệp thu được từ máy chủ để nhận ra dữ liệu trực tiếp. Có thể thấy rằng về cơ bản, HLS hiện thực hóa việc phát sóng trực tiếp bằng công nghệ VOD. Vì dữ liệu được truyền qua giao thức HTTP nên không cần quan tâm đến vấn đề tường lửa hay proxy, và thời gian phân đoạn tệp rất ngắn. Khách hàng có thể nhanh chóng chọn và chuyển đổi tốc độ mã để thích ứng với việc phát lại trong các điều kiện băng thông khác nhau. Tuy nhiên, do đặc tính kỹ thuật của HLS, độ trễ của nó luôn cao hơn so với giao thức phát trực tiếp thông thường.
Theo cách hiểu ở trên, để đạt được HTTP live streaming trực tiếp, chúng ta cần nghiên cứu và triển khai các công nghệ chính sau.
(1) Thu thập dữ liệu của nguồn video và nguồn âm thanh
(2) Dữ liệu gốc được mã hóa bằng H264 và AAC
(3) Dữ liệu video và âm thanh được đóng gói dưới dạng gói mpeg-ts
(4) Chiến lược tạo phân đoạn HLS và tệp chỉ mục m3u8
2. Giao thức truyền tải HTTP
Trong số đó, điểm đầu tiên và điểm thứ hai đã được đề cập trong bài viết trước của tôi, và điểm cuối cùng là chúng ta có thể sử dụng máy chủ HTTP hiện có, vì vậy việc triển khai điểm thứ ba và thứ tư là chìa khóa.
(1) Khung chương trình và việc thực hiện
Thông qua phân tích ở trên, về cơ bản logic và quy trình của bộ mã hóa trực tiếp HLS: bắt đầu chuỗi mã hóa âm thanh và video tương ứng, nhận ra âm thanh và video thông qua công nghệ DirectShow (hoặc công nghệ khác), sau đó gọi libx264 và libfaac tương ứng cho video và mã hóa âm thanh. Sau khi hai chuỗi mã hóa mã hóa dữ liệu âm thanh và video trong thời gian thực, chúng sẽ lưu trữ nó trong một tệp phân đoạn có định dạng mpeg-ts theo chiến lược phân vùng tùy chỉnh. Khi tệp phân đoạn được lưu trữ, tệp chỉ mục m3u8 được cập nhật. Như trong hình bên dưới:
Trong hình trên, sau khi nhận dữ liệu video và âm thanh, trước tiên hlsliveencoder cần xác định xem phân vùng hiện tại có nên kết thúc hay không và tạo một phân vùng mới để tiếp tục tạo phân vùng TS liên tục. Cần lưu ý rằng việc phân mảnh mới nên bắt đầu từ khung hình chính để tránh trường hợp người chơi giải mã không thành công. Mã lõi như sau:
Giao diện của tsmuxer cũng tương đối đơn giản.
(2) Chiến lược tạo phân khúc HLS và m3u8
① Chiến lược phân đoạn
Về cơ bản, chiến lược phân đoạn của HLS được khuyến nghị chia nhỏ mỗi 10 giây. Tất nhiên, thời gian cụ thể nên được đánh dấu theo độ dài thực tế của sự phân chia
Nói chung, vì lợi ích của bộ nhớ cache và các lý do khác, ba địa chỉ phân đoạn mới nhất được giữ trong tệp chỉ mục và được cập nhật dưới dạng "cửa sổ trượt".
② Giới thiệu tệp m3u8
M3u8 là tệp chỉ mục của phát trực tiếp HTTP. M3u8 có thể được coi là. Về cơ bản, tệp định dạng M3U, sự khác biệt là tệp m3u8 sử dụng mã hóa ký tự UTF-8.
Sao chép mã
# Tiêu đề tệp Extm3u M3U, phải được đặt ở dòng đầu tiên
#Serial number của phân đoạn TS đầu tiên của chuỗi ext-x-media-serial
# Ext-x-targetduration thời lượng tối đa của mỗi phân đoạn TS
#Does ext-x-allow-cache cho phép bộ nhớ cache
#End của tệp m3u8 ext-x-endlist
Thông tin bổ sung #Extinf, thông tin về các ts được chia nhỏ, chẳng hạn như thời lượng, băng thông, v.v.
|
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