FMUSER Kablosuz Video ve Sesi Daha Kolay İletin!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Arnavutça
ar.fmuser.org -> Arapça
hy.fmuser.org -> Ermeni
az.fmuser.org -> Azerice
eu.fmuser.org -> Bask Dili
be.fmuser.org -> Beyaz Rusça
bg.fmuser.org -> Bulgar
ca.fmuser.org -> Katalanca
zh-CN.fmuser.org -> Çince (Basitleştirilmiş)
zh-TW.fmuser.org -> Çince (Geleneksel)
hr.fmuser.org -> Hırvatça
cs.fmuser.org -> Çekçe
da.fmuser.org -> Danca
nl.fmuser.org -> Hollandalı
et.fmuser.org -> Estonca
tl.fmuser.org -> Filipinli
fi.fmuser.org -> Fince
fr.fmuser.org -> Fransızca
gl.fmuser.org -> Galiçyaca
ka.fmuser.org -> Gürcüce
de.fmuser.org -> Almanca
el.fmuser.org -> Yunanca
ht.fmuser.org -> Haiti Kreyolu
iw.fmuser.org -> İbranice
hi.fmuser.org -> Hintçe
hu.fmuser.org -> Macar
is.fmuser.org -> İzlandaca
id.fmuser.org -> Endonezya
ga.fmuser.org -> İrlandalı
it.fmuser.org -> İtalyan
ja.fmuser.org -> Japonca
ko.fmuser.org -> Korece
lv.fmuser.org -> Letonca
lt.fmuser.org -> Litvanya
mk.fmuser.org -> Makedonca
ms.fmuser.org -> Malayca
mt.fmuser.org -> Malta
no.fmuser.org -> Norveç
fa.fmuser.org -> Farsça
pl.fmuser.org -> Lehçe
pt.fmuser.org -> Portekizce
ro.fmuser.org -> Romen
ru.fmuser.org -> Rusça
sr.fmuser.org -> Sırpça
sk.fmuser.org -> Slovakça
sl.fmuser.org -> Slovence
es.fmuser.org -> İspanyolca
sw.fmuser.org -> Svahili
sv.fmuser.org -> İsveççe
th.fmuser.org -> Tay
tr.fmuser.org -> Türkçe
uk.fmuser.org -> Ukraynaca
ur.fmuser.org -> Urduca
vi.fmuser.org -> Vietnamca
cy.fmuser.org -> Galce
yi.fmuser.org -> Yidiş
HLS ve Http Live Streaming, Apple tarafından tanımlanan gerçek zamanlı akış protokolleridir. HLS, HTTP protokolüne göre uygulanır. Aktarım içeriği, biri M3U8 açıklama dosyası ve diğeri TS medya dosyası olmak üzere iki bölümden oluşur.
1. M3U8 dosyası
Medya dosyası, bir dizi etiketten oluşan metin olarak tanımlanır.
#EXTM3U
# EXT-X-TARGETDURATION: 5
#EXTINF: 5,
./0.ts
#EXTINF: 5,
./1.ts
# EXTM3U: Her M3U8 dosyasının ilk satırı bu etiket olmalıdır.
# EXT-X-TARGETDURATION: Maksimum medya segmenti süre uzunluğunu (saniye) belirtin. #EXTINF içinde belirtilen zaman uzunluğu bu maksimum değerden küçük veya ona eşit olmalıdır. Bu değer yalnızca bir kez görünebilir.
#EXTINF: Tek bir medya dosyasının uzunluğunu tanımlayın. Bunu ./0.ts gibi medya dosyaları takip eder
2. ts dosyası
Ts dosyası bir aktarım akış dosyasıdır, ana video kodlama biçimi h264 / mpeg4 ve ses acc / MP3 şeklindedir.
Ts dosyası üç katmana bölünmüştür: ts katmanı Taşıma Akışı, pes katmanı Paket Temel Akışı, es katman Temel Akım. Es katmanı, ses ve video verileridir ve pes katmanı, ses ve video verilerine eklenen bir zaman damgası gibi veri çerçevesi açıklama bilgileridir. Ts katmanı, pes katmanındaki veri akışının tanımlanması ve iletilmesi için gerekli bilgileri eklemektir.
Not: Ayrıntılar aşağıdaki gibidir
(1) ts katmanı ts paket boyutu 188 bayt olarak sabitlenmiştir ve ts katmanı üç kısma bölünmüştür: ts başlığı, uyarlama alanı ve yük. Ts başlığı 4 bayta sabitlenmiştir; adaptasyon alanı var olabilir veya olmayabilir ve ana işlevi 188 bayttan daha az verileri doldurmaktır; yük pes verisidir.
ts başlığı
sync_byte 8b senkronizasyon baytı, 0x47'de sabit
transport_error_indicator 1b Taşıma hatası göstergesi, ts başlığının uyarlama alanından sonra işe yaramaz bir bayt olduğunu belirtir, genellikle 0, bu bayt uyarlama alanının uzunluğunda sayılır
payload_unit_start_indicator 1b Tam bir veri paketinin başlangıcında 1 olarak işaretlenen yük birimi başlangıç göstergesi
transport_priority 1b Taşıma önceliği, 0 düşük öncelikli, 1 yüksek öncelikli, genellikle 0
pid 13b pid değeri
transport_scrambling_control 2b Taşıma karıştırma kontrolü, 00 şifrelenmemiş demektir
adaptation_field_control 2b Adaptasyon alanının dahil edilip edilmeyeceği, '00' ayrılmıştır; '01', adaptasyon alanı yok, sadece yük anlamına gelir; '10' yalnızca adaptasyon alanı anlamına gelir, yük yok; '11', uyarlamanın Etki Alanı ve yükü de içerdiği anlamına gelir.
süreklilik_sayıcısı 4b Sayacı 0-f'den artırarak, başlangıç değeri mutlaka 0 almaz, ancak sürekli olmalıdır
Ts katmanının içeriği PID değeri ile tanımlanır ve ana içerik şunları içerir: PAT tablosu, PMT tablosu, ses akışı ve video akışı. Ts akışını ayrıştırmak için, önce PAT tablosunu bulmalısınız, PAT'yi bulduğunuz sürece, PMT'yi bulabilir ve ardından ses ve video akışlarını bulabilirsiniz. PAT tablosunun PID değeri 0'da sabitlenmiştir. PAT tablosu ve PMT tablosunun ts akışına düzenli olarak eklenmesi gerekir, çünkü kullanıcı herhangi bir zamanda ts akışına katılabilir, bu aralık nispeten küçüktür, genellikle birkaç PAT ve PMT eklemek için video kareleri. PAT ve PMT tabloları gereklidir ve SDT (servis açıklama tablosu) gibi diğer tablolar da eklenebilir, ancak hls akışı PAT ve PMT olduğu sürece oynatılabilir.
PAT tablosu: Ana işlevi, PMT tablosunun PID değerini göstermektir.
PMT tablosu: Ana işlevi, ses ve video akışının PID değerini belirlemektir.
Ses akışı / video akışı: Ses ve video içeriği taşıyın.
adaptasyonu
adaptation_field_length 1B adaptasyon alan uzunluğu, arkasındaki bayt sayısı
bayrak 1B, PCR'yi belirtmek için 0x50 veya PCR'yi içermemesi için 0x40 alır
PCR 5B Program Saat Referansı, kodlayıcı ile tutarlı sistem zamanlama saati STC'yi (Sistem Zaman Saati) kurtarmak için kullanılan program saat referansı.
stuffing_bytes xB doldurma baytları, değer 0xff
Adaptasyon alanının uzunluğu, iletim hatası göstergesiyle tanımlanan bir baytı içermelidir. pcr program saat referansıdır, pcr, dts, pts hepsi aynı sistem saatinin örneklenmiş değerleridir, pcr artımlıdır, bu nedenle dts değeri olarak ayarlanabilir, ses verisinin pcr'ye ihtiyacı yoktur. Alan yoksa ipad oynayabilir ama vlc oynayamaz. Ts akışını paketlerken, PAT ve PMT tablolarının bir uyarlama alanı yoktur. Uzunluk yeterli değilse, 0xff doldurun. Hem video akışı hem de ses akışı, genellikle bir çerçevenin ilk ts paketine ve son ts paketine eklenen bir uyarlama alanı eklemelidir ve orta ts paketi eklenmez.
PAT biçimi
table_id 8b PAT tablosu 0x00 olarak sabitlendi
section_syntax_indicator 1b, 1'de sabitlenmiştir
sıfır 1b, 0'da sabitlenmiştir
ayrılmış 2b, 11'e sabitlenmiştir
section_length 12b Aşağıdaki verilerin uzunluğu
transport_stream_id 16b Taşıma akışı kimliği, 0x0001 olarak sabit
ayrılmış 2b, 11'e sabitlenmiştir
version_number 5b Sürüm numarası, 00000'de sabittir, PAT değişirse, sürüm numarası 1 artar
current_next_indicator 1b, bu PAT tablosunun kullanılabileceğini belirten 1'e sabitlenmiştir, eğer 0 ise, sonraki PAT tablosunu bekleyin
section_number 8b, 0x00 olarak sabitlenir
last_section_number 8b, 0x00 olarak sabitlenir
Döngüyü başlat
program_number 16b Program numarası 0x0000 olduğunda bunun NIT olduğu anlamına gelir, program numarası 0x0001 olduğunda bu PMT olduğu anlamına gelir
ayrılmış 3b, 111'e sabitlenmiştir
Program numarasının içeriğine karşılık gelen PID 13b PID değeri
Döngüyü sonlandır
CRC32 32b CRC32 önceki verilerin kontrol kodu
PMT biçimi
table_id 8b PMT tablosunun herhangi bir değeri var, 0x02
section_syntax_indicator 1b, 1'de sabitlenmiştir
sıfır 1b, 0'da sabitlenmiştir
ayrılmış 2b, 11'e sabitlenmiştir
section_length 12b Aşağıdaki verilerin uzunluğu
program_number 16b kanal numarası, bu geçerli PMT ile ilişkili kanal anlamına gelir, değer 0x0001'dir
ayrılmış 2b, 11'e sabitlenmiştir
version_number 5b Sürüm numarası, 00000'de sabittir, PAT değişirse, sürüm numarası 1 artar
current_next_indicator 1b, 1'de sabitlenmiştir
section_number 8b, 0x00 olarak sabitlenir
last_section_number 8b, 0x00 olarak sabitlenir
ayrılmış 3b, 111'e sabitlenmiştir
PCR_PID 13b PCR'nin (program referans saati) bulunduğu, video PID olarak belirlenen TS paketinin PID'si
ayrılmış 4b, 1111'e sabitlenmiştir
program_info_length 12b 0x000 olarak belirtilen program açıklama bilgileri,
Döngüyü başlat
stream_type 8b Akış tipi, işaret Video veya Ses veya diğer verilerdir, h.264 kodlaması 0x1b'ye karşılık gelir, aac kodlaması 0x0f'ye karşılık gelir, mp3 kodlaması 0x03'e karşılık gelir
ayrılmış 3b, 111'e sabitlenmiştir
stream_type'a karşılık gelen elementary_PID 13b PID
ayrılmış 4b, 1111'e sabitlenmiştir
ES_info_length 12b 0x000 olarak belirtilen açıklama bilgisi hayır anlamına gelir
Döngüyü sonlandır
CRC32 32b CRC32 önceki verilerin kontrol kodu
(2) pes tabakası
Pes katmanı, her video / ses karesine zaman damgası ve diğer bilgileri ekler. Pes paketi çok fazla içerik barındırıyor ve sadece en sık kullanılanları bırakıyoruz.
pes başlangıç kodu 3B başlangıç kodu, 0x000001'de sabit
akış kimliği 1B ses değeri (0xc0-0xdf), genellikle 0xc0
Video değeri (0xe0-0xef), genellikle 0xe0
pes paket uzunluğu 2B Arkadaki pes verilerinin uzunluğu, 0 sınırsız uzunluk anlamına gelir,
Yalnızca video veri uzunluğu 0xffff'ı aşacaktır
Bayrak 1B genellikle 0x80 değerini alır, bu da verilerin şifrelenmediği, önceliği olmadığı ve verilerin yedeklendiği anlamına gelir
İşaret 1B değeri 0x80 yalnızca puan anlamına gelir, 0xc0 değeri puan ve dts anlamına gelir
pes veri uzunluğu 1B Aşağıdaki verilerin uzunluğu, değer 5 veya 10'dur
pts 5B 33bit değeri
dts 5B 33bit değeri
pts görüntüleme zaman damgasıdır ve dts kod çözme zaman damgasıdır. Video verileri için her iki zaman damgası da gereklidir. Ses verilerinin puanları ve dts'leri aynıdır, bu nedenle yalnızca puanlara ihtiyaç vardır. B karelerinin neden olduğu iki zaman damgası vardır: pts ve dts. I ve P karelerinin puanları dts'ye eşittir. Bir videoda B karesi yoksa, puanlar her zaman dts ile aynı olacaktır. Video karelerini dosyadan sırayla okuyun ve çıkarılan karelerin sırası dts dizisi ile aynıdır. Dts algoritması nispeten basittir, başlangıç değeri + artış yeterlidir, puan hesaplaması daha karmaşıktır ve ofsetin dts'ye eklenmesi gerekir.
Ses pes'lerinde yalnızca puanlar vardır (dts ile aynı), videonun I ve P kareleri her iki zaman damgasına sahip olmalıdır ve video B karesi yalnızca puanlara ihtiyaç duyar (dts ile aynı). Puanları ve dts'leri paketlemek için video çerçeve türünü bilmeniz gerekir, ancak çerçeve türünü konteyner formatına göre değerlendiremeyiz. Çerçeve türünü almak için h.264 içeriğini ayrıştırmanız gerekir.
örneğin:
IPBBBP
Okuma sırası: 1 2 3 4 5 6
dts sırası: 1 2 3 4 5 6
pts sırası: 1 5 3 2 4 6
İsteğe bağlı video dts algoritması:
dts = başlangıç değeri + 90000 / video_frame_rate, başlangıç değeri isteğe bağlı olarak belirtilebilir, ancak en iyisi 0 almamaktır, video_frame_rate 23, 30 gibi kare hızıdır.
pts ve dts zaman ölçeğine, 1s = 90000 zaman ölçeğine dayalıdır, bir kare 90000 / video_frame_rate zaman ölçeği olmalıdır.
Bir karenin zaman ölçeğini örnekleme frekansına bölmek, bir karenin oynatma süresine dönüştürülebilir
İsteğe bağlı ses dts algoritması:
dts = başlangıç değeri + (90000 * audio_samples_per_frame) / audio_sample_rate, audio_samples_per_frame'in değeri codec ile ilgilidir, aac değeri 1024, mp3 değeri 1158, audio_sample_rate 24000, 41000 gibi örnekleme hızıdır. AAC bir karenin kodunu çözer. Kanal başına 1024 örnek; bu, bir çerçevenin süresinin 1024 / sample_rate saniye olduğu anlamına gelir. Dolayısıyla, her karenin zaman damgası 0, 1024 / sample_rate, ..., 1024 * n / sample_rate saniyedir.
Canlı videonun dts ve pts'leri, canlı veri akışındaki zamanı doğrudan kullanmalı ve formüllerle hesaplanmamalıdır.
(3) es tabakası
Es katmanı ses ve video verilerini ifade eder, yalnızca h.264 video ve aac sesi tanıtıyoruz.
h.264 videosu:
H.264 verilerini paketlemek için, video verilerine bir nalu (Ağ Soyutlama Katmanı birimi) eklemeliyiz. Nalu, nalu başlığını ve nalu tipini içerir. Nalu başlığı 0x00000001 (çerçeve başlangıcı) veya 0x000001 (çerçeve içinde) olarak sabitlenmiştir. H.264'ün verileri dilimlerden oluşur ve dilimlerin içerikleri şunları içerir: video, sps, pps, vb. Nalu tipi, sonraki h.264 verilerinin içeriğini belirler.
F 1b forbidden_zero_bit, h.264 bunun 0 olması gerektiğini şart koşar
NRI 2b nal_ref_idc, 0 ~ 3 değeri, bu nalu, I çerçevesinin önemini belirtir, sps, pps genellikle 3 alır, P çerçevesi genellikle 2 alır ve B çerçevesi genellikle 0 alır
Tip 5b aşağıdaki tabloya bakın
nal_unit_type açıklaması
0 kullanılmıyor
1 IDR olmayan resim, IDR ana kareyi ifade eder
2 dilim A bölümü
3 dilim B bölümü
|
Sürpriz almak için e-posta girin
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Arnavutça
ar.fmuser.org -> Arapça
hy.fmuser.org -> Ermeni
az.fmuser.org -> Azerice
eu.fmuser.org -> Bask Dili
be.fmuser.org -> Beyaz Rusça
bg.fmuser.org -> Bulgar
ca.fmuser.org -> Katalanca
zh-CN.fmuser.org -> Çince (Basitleştirilmiş)
zh-TW.fmuser.org -> Çince (Geleneksel)
hr.fmuser.org -> Hırvatça
cs.fmuser.org -> Çekçe
da.fmuser.org -> Danca
nl.fmuser.org -> Hollandalı
et.fmuser.org -> Estonca
tl.fmuser.org -> Filipinli
fi.fmuser.org -> Fince
fr.fmuser.org -> Fransızca
gl.fmuser.org -> Galiçyaca
ka.fmuser.org -> Gürcüce
de.fmuser.org -> Almanca
el.fmuser.org -> Yunanca
ht.fmuser.org -> Haiti Kreyolu
iw.fmuser.org -> İbranice
hi.fmuser.org -> Hintçe
hu.fmuser.org -> Macar
is.fmuser.org -> İzlandaca
id.fmuser.org -> Endonezya
ga.fmuser.org -> İrlandalı
it.fmuser.org -> İtalyan
ja.fmuser.org -> Japonca
ko.fmuser.org -> Korece
lv.fmuser.org -> Letonca
lt.fmuser.org -> Litvanya
mk.fmuser.org -> Makedonca
ms.fmuser.org -> Malayca
mt.fmuser.org -> Malta
no.fmuser.org -> Norveç
fa.fmuser.org -> Farsça
pl.fmuser.org -> Lehçe
pt.fmuser.org -> Portekizce
ro.fmuser.org -> Romen
ru.fmuser.org -> Rusça
sr.fmuser.org -> Sırpça
sk.fmuser.org -> Slovakça
sl.fmuser.org -> Slovence
es.fmuser.org -> İspanyolca
sw.fmuser.org -> Svahili
sv.fmuser.org -> İsveççe
th.fmuser.org -> Tay
tr.fmuser.org -> Türkçe
uk.fmuser.org -> Ukraynaca
ur.fmuser.org -> Urduca
vi.fmuser.org -> Vietnamca
cy.fmuser.org -> Galce
yi.fmuser.org -> Yidiş
FMUSER Kablosuz Video ve Sesi Daha Kolay İletin!
İletişim
Adres:
No.305 Oda HuiLan Binası No. 273 Huanpu Yolu Guangzhou Çin 510620
Kategoriler
Kaydolun