FMUSER Wirless Trasmetti video e audio più facilmente!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanese
ar.fmuser.org -> Arabo
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbaigiano
eu.fmuser.org -> Basco
be.fmuser.org -> bielorusso
bg.fmuser.org -> Bulgaro
ca.fmuser.org -> Catalano
zh-CN.fmuser.org -> Cinese (semplificato)
zh-TW.fmuser.org -> Cinese (Tradizionale)
hr.fmuser.org -> croato
cs.fmuser.org -> ceco
da.fmuser.org -> danese
nl.fmuser.org -> Olandese
et.fmuser.org -> Estone
tl.fmuser.org -> Filippino
fi.fmuser.org -> finlandese
fr.fmuser.org -> Francese
gl.fmuser.org -> Galiziano
ka.fmuser.org -> georgiano
de.fmuser.org -> tedesco
el.fmuser.org -> Greca
ht.fmuser.org -> Creolo haitiano
iw.fmuser.org -> Ebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Islandese
id.fmuser.org -> Indonesiano
ga.fmuser.org -> Irlandese
it.fmuser.org -> Italiano
ja.fmuser.org -> giapponese
ko.fmuser.org -> coreano
lv.fmuser.org -> Lettone
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedone
ms.fmuser.org -> Malese
mt.fmuser.org -> Maltese
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiano
pl.fmuser.org -> polacco
pt.fmuser.org -> portoghese
ro.fmuser.org -> Romeno
ru.fmuser.org -> Russo
sr.fmuser.org -> Serbo
sk.fmuser.org -> slovacco
sl.fmuser.org -> Sloveno
es.fmuser.org -> spagnolo
sw.fmuser.org -> Swahili
sv.fmuser.org -> svedese
th.fmuser.org -> Thai
tr.fmuser.org -> turco
uk.fmuser.org -> Ucraino
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> Gallese
yi.fmuser.org -> Yiddish
1. L'idea progettuale del lettore h5
Queste funzioni dovrebbero essere incluse dopo la ricostruzione: supporto per on-demand (MP4 non crittografato) e trasmissione in diretta (m3u8), compatibile (adattato) ai terminali mobili e selezione automatica (usa flash o h5) in base alla piattaforma.
In termini di framework e librerie, scegliamo ancora di utilizzare principalmente nej framework, nej fornisce una vasta gamma di metodi. Le classi che sono esposte al mondo esterno sono implementate usando regolare, perché la maggior parte dei componenti front-end e dei progetti di business dei prodotti educativi usa regolare, il che è molto comodo da usare. Inoltre, la soluzione flessibile viene selezionata sul terminale mobile, poiché l'adattamento della pagina Web dei prodotti educativi è stato unificato utilizzando la flessibilità e viene selezionata la gestione degli eventi gestuali.
Per facilitare l'espansione e l'aggiunta di componenti, viene utilizzata la modalità osservatore. La modalità osservatore è molto adatta per l'uso in un progetto delle dimensioni di un lettore video, ed è anche una modalità di progettazione che è stata provata e testata. Ho fatto riferimento direttamente all'implementazione simile in flex e l'ho scritta di nuovo usando js (ovviamente, l'ho scritta molto velocemente).
Come mostrato nella figura sopra, la classe di base del componente e la classe singleton di componentContainer implementano il pattern dell'osservatore. Tutti i componenti vengono ereditati dalla classe dei componenti. Nell'istanza del componente, è possibile chiamare metodi per inviare oggetti di notifica per la comunicazione tra i componenti. La pianificazione delle notifiche si trova nel componentContainer. Raggiunto. Questi componenti sono suddivisi in componenti obbligatori e componenti opzionali. I componenti necessari includono: componente oggetto video (movieData), componente riproduzione video (mainVideo), componente api, ecc. le funzioni specifiche del player, anch'esse implementate in componentContainer. Html5VideoMedia è un incapsulamento di HTMLVideoElement. Non viene utilizzato come componente, ma fornisce solo funzioni di riproduzione video e definisce eventi correlati. Oltre ai componenti di riproduzione video, Html5VideoMedia può anche essere un componente pubblicitario introduttivo.
In termini di adattamento, lo schema flessibile viene utilizzato per l'adattamento dello stile. Alcuni componenti sono più complessi, come la barra di controllo. Le funzioni web e mobile sono molto diverse e anche gli stili sono molto diversi. Puoi considerare l'utilizzo di componenti diversi su piattaforme diverse (control e controlMobile possono essere visti in figura) e la logica sarà molto chiara. , Non è necessario scrivere molto if e else, ma poiché dipende da più componenti, i file js e css saranno più grandi. Personalmente ritengo che per migliorare la manutenibilità del codice, sia consigliabile sacrificare parte della dimensione del file.
,
2. Alcune caratteristiche della trasmissione in diretta hls
Giudizio sullo stato della trasmissione in diretta. In effetti, la funzione di trasmissione in diretta è strettamente correlata all'attività. Lo stato della trasmissione in diretta qui è anche solo lo stato dell'attività, ad esempio: non avviata, in procinto di iniziare, trasmissione in diretta, trasmissione in diretta terminata, ecc. Una cosa da menzionare è che il flusso hls non attiverà l'evento finale, quindi lo stato della trasmissione live h5 è effettivamente controllato interamente dal polling.
Come determinare il flusso è anormale. Per problemi di rete generali o problemi di origine, è possibile monitorare gli eventi di errore del tag video e del tag di origine. Entrambi i tag devono essere monitorati. Ma il messaggio di errore quando viene attivato l'errore a volte non è un'informazione o browser diversi hanno implementazioni diverse. Ho riscontrato la modifica dell'attributo currentTime per cercare prima e occasionalmente viene attivato l'evento di errore, ma l'errore dice solo che si tratta di un errore di rete. Senza altre informazioni, è stato davvero doloroso determinare che si trattava di un problema di transcodifica video dopo aver confrontato altri video. Durante la riproduzione di un live streaming, possono verificarsi occasionali eccezioni di streaming. Le eccezioni di streaming generalmente vengono visualizzate come blocchi dello schermo e potrebbero non attivare necessariamente eventi di errore. Mi riferisco al piano del precedente collega di Qingguo: controlla currentTime ogni tanto, se currentTime non cambia durante questo periodo di tempo nello stato di riproduzione, è probabile che lo stream sia anormale, quindi ricarica attivamente.
,
3. Alcuni problemi che al momento non possono essere risolti
Ci sono molti problemi relativi ai video su iOS, perché il sistema ha troppe restrizioni. Elenca un po ':
1. È possibile riprodurre un solo video o audio alla volta ed è consentito un solo tag video o audio. Sarà un po 'problematico svolgere la funzione di pubblicità introduttiva.
2. Riprodurre video in Safari con una versione di iOS inferiore forzerà lo schermo intero e iOS 10 può utilizzare playsinline. Puoi aggiungere webkit-playsinline a WeChat e alcuni webkit personalizzati.
3. Senza intervento umano, è impossibile entrare nella pagina per avviare automaticamente la riproduzione del video
4. In ios, js non può essere utilizzato per controllare il volume del video, può essere controllato solo da pulsanti fisici. In iOS, puoi nascondere direttamente la funzione di controllo del volume. . .
5. C'è anche il problema di prendere screenshot, ma non c'è ricerca se non viene utilizzato nel prodotto.
Ci sono anche molti problemi su Android, principalmente perché ci sono troppe versioni di Android, troppi modelli e tutti gli aspetti non sono uniformi. Elenca un po ':
1. Alcuni sistemi Android sostituiranno direttamente il tag video e utilizzeranno il lettore di sistema per giocare, cosa comune nei telefoni cellulari domestici
2. Il risultato del rilevamento del metodo canPlayType non corrisponde alla situazione effettiva. Questo problema si è verificato durante il processo di sviluppo. Ad esempio, è stato rilevato che la riproduzione m3u8 non è supportata su un telefono cellulare Asus, ma può effettivamente essere riprodotta. Inizialmente volevo eliminare questa restrizione, ma in seguito ho scoperto che la riproduzione forzata nella visualizzazione Web dell'app Cloud Classroom potrebbe causare l'arresto anomalo dell'app, quindi il rilevamento viene aggiunto alla fine. .
3. Gli Android che non supportano la riproduzione m3u8 sono generalmente intorno ad android4.0 e inferiori
|
Inserisci l'email per ricevere una sorpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanese
ar.fmuser.org -> Arabo
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbaigiano
eu.fmuser.org -> Basco
be.fmuser.org -> bielorusso
bg.fmuser.org -> Bulgaro
ca.fmuser.org -> Catalano
zh-CN.fmuser.org -> Cinese (semplificato)
zh-TW.fmuser.org -> Cinese (Tradizionale)
hr.fmuser.org -> croato
cs.fmuser.org -> ceco
da.fmuser.org -> danese
nl.fmuser.org -> Olandese
et.fmuser.org -> Estone
tl.fmuser.org -> Filippino
fi.fmuser.org -> finlandese
fr.fmuser.org -> Francese
gl.fmuser.org -> Galiziano
ka.fmuser.org -> georgiano
de.fmuser.org -> tedesco
el.fmuser.org -> Greca
ht.fmuser.org -> Creolo haitiano
iw.fmuser.org -> Ebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Islandese
id.fmuser.org -> Indonesiano
ga.fmuser.org -> Irlandese
it.fmuser.org -> Italiano
ja.fmuser.org -> giapponese
ko.fmuser.org -> coreano
lv.fmuser.org -> Lettone
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedone
ms.fmuser.org -> Malese
mt.fmuser.org -> Maltese
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiano
pl.fmuser.org -> polacco
pt.fmuser.org -> portoghese
ro.fmuser.org -> Romeno
ru.fmuser.org -> Russo
sr.fmuser.org -> Serbo
sk.fmuser.org -> slovacco
sl.fmuser.org -> Sloveno
es.fmuser.org -> spagnolo
sw.fmuser.org -> Swahili
sv.fmuser.org -> svedese
th.fmuser.org -> Thai
tr.fmuser.org -> turco
uk.fmuser.org -> Ucraino
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> Gallese
yi.fmuser.org -> Yiddish
FMUSER Wirless Trasmetti video e audio più facilmente!
Contatti
Indirizzo:
No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou Cina 510620
Categorie
Newsletter