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ş
Birkaç gün önce, HTTP canlı akış (HLS) teknolojisini incelemek ve C ++ ile yazılmış bir HLS kodlayıcı olan hlsliveencoder'ı uygulamak için biraz zaman harcadım. İşlevi, kamera ve mikrofonu, gerçek zamanlı H.264 video kodlamasını ve aac ses kodlamasını yakalamak ve HLS protokol spesifikasyonuna göre, bölümlere ayrılmış standart TS dosyası ve m3u8 indeks dosyası oluşturmaktır. Hlsliveencoder ve üçüncü taraf HTTP sunucusu (nginx gibi) aracılığıyla, HTTP'nin canlı akışını başarıyla gerçekleştirdik ve iPhone'daki testi geçtik. Bazı kazanımları buraya yazacağım.
1. HLS Teknolojisinin Analizi
HTTP canlı akış (HLS), canlı ve isteğe bağlı akış ortamını gerçekleştirebilen, Apple Inc. tarafından uygulanan HTTP'ye dayalı bir akışlı ortam aktarım protokolüdür. Esas olarak IOS sisteminde, IOS cihazları (iPhone ve iPad gibi) için canlı ve isteğe bağlı ses ve video çözümleri sağlamak için kullanılır. Talep üzerine HLS, temelde talep üzerine yaygın olarak bölümlere ayrılmış bir HTTP'dir. Aradaki fark, segmentlerinin çok küçük olmasıdır. HLS'yi talep üzerine gerçekleştirmek için anahtar medya dosyalarını bölümlere ayırmaktır. Şu anda kullanılabilecek birçok açık kaynak araç var. Burada tartışmayacağım, sadece HLS canlı yayın teknolojisinden bahsedin.
RTMP protokolü, RTSP protokolü, MMS protokolü vb. Gibi yaygın canlı akış protokolleriyle karşılaştırıldığında, HLS canlı akışın en büyük farkı, canlı istemcinin eksiksiz bir veri akışı almamasıdır. HLS protokolü, canlı veri akışını sunucu tarafında sürekli, kısa vadeli ve uzun medya dosyaları (mpeg-ts formatı) olarak depolarken, istemci tarafı bu küçük dosyaları sürekli olarak indirir ve oynatır, çünkü sunucu tarafı her zaman yeni küçük dosyalar oluşturur. En son canlı veriler, böylece istemci tarafının canlıyı gerçekleştirmek için yalnızca sunucudan alınan dosyaları oynatması gerekir. HLS'nin temelde canlı yayını VOD teknolojisi ile gerçekleştirdiği görülmektedir. Veriler HTTP protokolü aracılığıyla iletildiğinden, güvenlik duvarı veya proxy sorununu dikkate almaya gerek yoktur ve dosyaların bölümlere ayrılma süresi çok kısadır. İstemci, farklı bant genişliği koşullarında oynatmaya uyum sağlamak için kod oranını hızlı bir şekilde seçebilir ve değiştirebilir. Bununla birlikte, HLS'nin teknik özellikleri nedeniyle, gecikmesi her zaman sıradan canlı akış protokolünden daha yüksektir.
Yukarıdaki anlayışa göre, canlı HTTP canlı akışı elde etmek için aşağıdaki temel teknolojileri incelemeli ve uygulamalıyız.
(1) Video kaynağı ve ses kaynağı verilerini toplayın
(2) Orijinal veriler H264 ve AAC tarafından kodlanmıştır
(3) Video ve ses verileri, mpeg-ts paketleri olarak paketlenir
(4) HLS segmentasyon oluşturma stratejisi ve m3u8 dizin dosyası
2. HTTP taşıma protokolü
Bunların arasında birinci ve ikinci noktalardan bir önceki yazımda bahsedilmişti ve son nokta var olan HTTP sunucusunu kullanabileceğimizdir, bu nedenle üçüncü ve dördüncü noktaların uygulanması anahtardır.
(1) Program çerçevesi ve Uygulama
Yukarıdaki analiz sayesinde, HLS canlı kodlayıcının mantığı ve süreci temelde açıktır: sırasıyla ses ve video kodlama dizisini başlatın, DirectShow (veya başka) teknolojisi aracılığıyla ses ve video alımını gerçekleştirin ve ardından sırasıyla video için libx264 ve libfaac'ı çağırın ve ses kodlaması. İki kodlama iş parçacığı ses ve video verilerini gerçek zamanlı olarak kodladıktan sonra, bunları özelleştirilmiş bölüm stratejisine göre mpeg-ts formatında bir segment dosyasında saklarlar. Bir segment dosyası depolandığında, m3u8 indeks dosyası güncellenir. Aşağıdaki şekilde gösterildiği gibi:
Yukarıdaki şekilde, video ve ses verilerini aldıktan sonra, hlsliveencoder'ın önce mevcut bölümün bitip bitmeyeceğini belirlemesi ve sürekli TS bölümü oluşturmaya devam etmek için yeni bir bölüm oluşturması gerekir. Oynatıcının kod çözme hatasını önlemek için yeni parçalanmanın ana çerçeveden başlaması gerektiği unutulmamalıdır. Temel kod aşağıdaki gibidir:
Tsmuxer'in arayüzü de nispeten basittir.
(2) HLS segment oluşturma stratejisi ve m3u8
① Segmentasyon stratejisi
HLS'nin segmentasyon stratejisinin temel olarak her 10 saniyede bir bölünmesi önerilir. Tabii ki, belirli süre bölünmenin gerçek uzunluğuna göre işaretlenmelidir.
Genel olarak, önbellek ve diğer nedenlerle, en son üç parça adresi indeks dosyasında tutulur ve "kayan pencere" şeklinde güncellenir.
② m3u8 dosyasının tanıtımı
M3u8, HTTP canlı akışının dizin dosyasıdır. M3u8 olarak kabul edilebilir. M3U biçimli dosya temelde, fark, m3u8 dosyasının UTF-8 karakter kodlaması kullanmasıdır.
Kodu kopyala
# Extm3u M3U dosya başlığı, ilk satıra yerleştirilmelidir
# Ext-x-media-sequence'in ilk TS segmentinin seri numarası
# Ext-x-targetduration her TS segmentinin maksimum süresi
# Ext-x-allow-cache önbelleğe izin verir mi
# Ext-x-endlist m3u8 dosyasının sonu
#Extinf ekstra bilgi, süre, bant genişliği vb. Gibi bölünmüş bilgiler
|
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