FMUSER ¡Transmite video y audio sin cables más fácilmente!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikáans
sq.fmuser.org -> albanés
ar.fmuser.org -> árabe
hy.fmuser.org -> Armenio
az.fmuser.org -> azerbaiyano
eu.fmuser.org -> Vasco
be.fmuser.org -> bielorruso
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> catalán
zh-CN.fmuser.org -> chino (simplificado)
zh-TW.fmuser.org -> Chino (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> danés
nl.fmuser.org -> Holandés
et.fmuser.org -> estonio
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandés
fr.fmuser.org -> Francés
gl.fmuser.org -> gallego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemán
el.fmuser.org -> Griego
ht.fmuser.org -> criollo haitiano
iw.fmuser.org -> hebreo
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandés
id.fmuser.org -> indonesio
ga.fmuser.org -> irlandés
it.fmuser.org -> Italiano
ja.fmuser.org -> japonés
ko.fmuser.org -> coreano
lv.fmuser.org -> letón
lt.fmuser.org -> Lituania
mk.fmuser.org -> macedonio
ms.fmuser.org -> malayo
mt.fmuser.org -> maltés
no.fmuser.org -> Noruega
fa.fmuser.org -> persa
pl.fmuser.org -> polaco
pt.fmuser.org -> portugués
ro.fmuser.org -> Rumano
ru.fmuser.org -> ruso
sr.fmuser.org -> serbio
sk.fmuser.org -> eslovaco
sl.fmuser.org -> Eslovenia
es.fmuser.org -> español
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandés
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> galés
yi.fmuser.org -> Yiddish
En los últimos años, la creciente demanda de adaptación multiplataforma ha llevado al aumento de la reproducción de velocidad de bits adaptativa de los medios de transmisión, lo que ha obligado a los desarrolladores web y móviles a repensar la lógica de la tecnología de video. En primer lugar, los gigantes lanzaron los protocolos HLS, HDS y Smooth Streaming por separado, ocultando todos los detalles relevantes en sus SDK dedicados. Los desarrolladores no pueden modificar libremente la lógica del motor multimedia en el reproductor: no puede modificar las reglas de la tasa de bits adaptativa y el tamaño de la caché, o incluso la longitud de sus porciones. Estos reproductores pueden ser fáciles de usar, pero no tienes demasiadas opciones para personalizarlos, e incluso las malas funciones solo se pueden tolerar.
Pero con el aumento de diferentes escenarios de aplicaciones, la demanda de funciones personalizables es cada vez más fuerte. Solo entre la transmisión en vivo y bajo demanda, existen diferencias en la administración del búfer, las estrategias ABR y las estrategias de almacenamiento en caché. Estos requisitos dieron lugar a una serie de API de operaciones multimedia de nivel inferior: Netstream en Flash, extensiones de fuente de medios en HTML5 y códec de medios en Android. Al mismo tiempo, apareció en la industria un formato de transmisión estándar basado en HTTP MPEG-DASH. . Estas capacidades más avanzadas brindan a los desarrolladores una mayor flexibilidad, lo que les permite crear reproductores y motores multimedia que se adapten a sus necesidades comerciales.
Hoy compartiremos cómo construir un reproductor moderno y qué componentes clave se necesitan para construir dicho reproductor. En términos generales, un reproductor típico se puede dividir en tres partes: interfaz de usuario, motor multimedia y decodificador.
Interfaz de usuario (UI): esta es la parte superior del reproductor. Define la experiencia de visualización del usuario final a través de tres características funcionales diferentes: piel (el diseño de apariencia del reproductor), interfaz de usuario (todas las características personalizables como listas de reproducción y uso compartido en redes sociales, etc.) y lógica empresarial (lógica empresarial específica). como publicidad, lógica de compatibilidad de dispositivos, gestión de certificaciones, etc.).
Motor multimedia: maneja toda la lógica relacionada con el control de reproducción, como el análisis de archivos de descripción, la extracción de clips de video y la configuración y conmutación de reglas de velocidad de bits adaptables. Explicaremos esta parte en detalle a continuación. Dado que estos motores generalmente están estrechamente vinculados a la plataforma, puede ser necesario utilizar una variedad de motores diferentes para cubrir todas las plataformas.
Decodificador y administrador de DRM: la parte más baja del reproductor es el decodificador y el administrador de DRM. Las funciones de esta capa llaman directamente a las API expuestas por el sistema operativo. La función principal del decodificador es decodificar y renderizar el contenido de video, mientras que el administrador de DRM controla si se tiene derecho a reproducir a través del proceso de descifrado.
A continuación, usaremos ejemplos para presentar los diferentes roles que desempeña cada capa.
1. Interfaz de usuario (UI)
La capa de la interfaz de usuario es la capa superior del reproductor. Controla lo que sus usuarios pueden ver e interactuar. Al mismo tiempo, puede personalizarlo con su propia marca para brindar a sus usuarios una experiencia de usuario única. Esta capa es la más cercana a la parte de desarrollo de front-end de la que estamos hablando. Dentro de la interfaz de usuario, también incluimos componentes de lógica empresarial, que constituyen la singularidad de su experiencia de reproducción, aunque el usuario final no puede interactuar directamente con esta parte de la función.
La parte de la interfaz de usuario contiene principalmente tres componentes:
1) Piel
Máscara es un término general para las partes del reproductor relacionadas visualmente: barras de control de progreso, botones, íconos animados, etc., como se muestra en la Figura 2. Como la mayoría de los componentes de diseño, esta parte del componente también se implementa usando CSS, que puede ser integrado fácilmente por diseñadores o desarrolladores (incluso si está utilizando una solución completa como JW Player y Bitdash).
2) lógica de la interfaz de usuario
La parte lógica de la interfaz de usuario define todas las interacciones visibles durante la reproducción y la interacción del usuario: listas de reproducción, miniaturas, selección de canales de reproducción y uso compartido de redes sociales. Según la experiencia de reproducción que espera lograr, se pueden agregar muchas otras características a esta parte en el pasado, muchas de las cuales existen en forma de complementos, y tal vez pueda encontrar algo de inspiración: Complementos · videojs / video.js Wiki · Parte lógica de GitHub Hay muchas funciones incluidas. No los presentaremos en detalle, pero tomemos la interfaz de usuario del reproductor Eurosport como ejemplo para experimentar intuitivamente estas funciones.
Además de los elementos tradicionales de la interfaz de usuario, también hay una característica muy interesante. Cuando el usuario está viendo los medios de transmisión de DVR, la transmisión en vivo se muestra en forma de una pequeña ventana, y la audiencia puede volver a la transmisión en vivo en cualquier momento a través de esta pequeña ventana. Dado que el diseño o la interfaz de usuario y el motor multimedia son completamente independientes, estas características se pueden implementar usando dash.js en HTML5 con solo unas pocas líneas de código. Para la parte de la interfaz de usuario, la mejor manera de implementarla es agregar varias funciones a los módulos principales de la interfaz de usuario en forma de complementos / módulos.
3) Lógica empresarial
Además de las características "visibles" de las dos partes anteriores, existe otra parte invisible que constituye la singularidad de su negocio: autenticación y pago, adquisición de canales y listas de reproducción y publicidad. También hay algunas cosas relacionadas con la tecnología, como los módulos de prueba A / B y las configuraciones relacionadas con el dispositivo. Estas configuraciones se utilizan para seleccionar varios motores de medios diferentes entre una variedad de diferentes tipos de dispositivos.
Para descubrir la complejidad oculta en la parte inferior, explicaremos estos módulos con más detalle aquí:
Lógica de configuración y detección de dispositivos: esta es una de las características más importantes, ya que separa la reproducción y el renderizado. Por ejemplo, según las diferentes versiones de su navegador, el reproductor puede elegir automáticamente un motor multimedia basado en HTML5 MSE, hls.js o un motor de reproducción basado en flash FlasHls para reproducir secuencias de video HLS por usted. La característica más importante de esta parte es que, independientemente del motor subyacente que utilice, puede utilizar el mismo JavaScript o CSS para personalizar su interfaz de usuario o lógica empresarial en la capa superior.
La capacidad de detectar el equipo del usuario le permite configurar la experiencia del usuario final según sea necesario: si está jugando en un dispositivo móvil en lugar de un dispositivo de pantalla 4K, es posible que deba comenzar con una tasa de bits más baja.
Lógica de la prueba A / B: la prueba A / B es poder hacer gris a algunos usuarios en el proceso de producción. Por ejemplo, puede proporcionar a algunos usuarios de Chrome un nuevo botón o un nuevo motor multimedia, y también puede asegurarse de que todo su trabajo se desarrolle según lo planeado.
Publicidad (opcional): procesar la publicidad del lado del cliente es una de las lógicas comerciales más complejas. Como se muestra en el diagrama de flujo del módulo de complemento videojs-contrib-ads, hay varios pasos en el proceso de inserción de anuncios. Para la transmisión de video HTTP, utilizará más o menos algunos formatos existentes como VAST, VPAID o Google IMA, que pueden ayudarlo a extraer anuncios de video del servidor de anuncios (generalmente formatos obsoletos que no responden). etapas finales del video para su reproducción y no se puede omitir.
resumir:
Para sus necesidades de personalización, puede optar por utilizar JW Player que incluye todas las funciones clásicas para jugar (también le permite personalizar algunas de las funciones), o personalizar sus propias características basadas en un reproductor de código abierto como Videojs. Incluso para unificar la experiencia del usuario entre el navegador y el reproductor nativo, también puede considerar el uso de React Native para la interfaz de usuario o el desarrollo de máscaras, y Haxe para el desarrollo de la lógica empresarial. Estas excelentes bibliotecas pueden ser de muchos tipos diferentes. El mismo conjunto de bases de código se comparte entre los dispositivos.
2, el motor multimedia
En los últimos años, el motor multimedia ha aparecido en la arquitectura del reproductor como un nuevo componente independiente. En la era MP4, la plataforma procesaba toda la lógica relacionada con la reproducción, y solo algunas de las características relacionadas con el procesamiento multimedia (solo funciones como reproducción, pausa, arrastrar y soltar y modo de pantalla completa) se abrieron a los desarrolladores.
Sin embargo, el nuevo formato de transmisión de medios basado en HTTP requiere un componente completamente nuevo para manejar y controlar la nueva complejidad: analizar archivos de declaración, descargar clips de video, monitoreo de velocidad de bits adaptable, designación de toma de decisiones y más. Al principio, la complejidad de ABR fue manejada por la plataforma o el proveedor de equipos. Sin embargo, con la creciente demanda de control de anclaje y reproductores personalizados, algunos reproductores nuevos han ido abriendo gradualmente algunas API de nivel inferior (como Media Source Extensons en la Web, Netstream en Flash y Media Codec en la plataforma Android), y rápidamente atrajeron muchos motores multimedia potentes y robustos basados en estas API subyacentes.
A continuación, explicaremos en detalle los detalles de cada componente en el moderno motor de procesamiento multimedia:
1) Interpretación y analizador de archivos de declaración
En la transmisión de video basada en HTTP, todo comienza con un archivo de descripción. El archivo de declaración contiene metainformación que el servidor de medios necesita comprender: cuántos tipos diferentes de calidad de video, idioma y letras, etc., y cuáles son. El analizador obtiene la información de descripción del archivo XML (un archivo m3u8 especial para HLS) y luego obtiene la información de video correcta a partir de la información. Por supuesto, hay muchos tipos de servidores de medios y no todos implementan las especificaciones correctamente, por lo que el analizador puede necesitar lidiar con algunos errores de implementación adicionales.
Una vez que se extrae la información del video, el analizador analizará los datos para construir una imagen visual de transmisión y saber cómo obtener diferentes clips de video. En algunos motores multimedia, estas imágenes visuales aparecen primero en forma de una imagen multimedia abstracta y luego dibujan las diferentes características de los diferentes formatos de transmisión de video HTTP en la pantalla.
En la escena de transmisión en vivo, el analizador también debe volver a adquirir periódicamente el archivo de declaración para obtener la información más reciente sobre el videoclip.
2) Descargador (descarga archivos de declaración, clips multimedia y claves)
El descargador es un módulo que envuelve la API nativa para procesar solicitudes HTTP. No solo se usa para descargar archivos multimedia, sino que también se puede usar para descargar archivos de declaración y claves DRM cuando sea necesario. El descargador juega un papel muy importante en el manejo de errores y reintentos de red, al mismo tiempo que puede recopilar datos sobre el ancho de banda disponible actualmente.
Nota: La descarga de archivos multimedia puede usar el protocolo HTTP u otros protocolos, como el protocolo WebRTC en el escenario de comunicación punto a punto en tiempo real.
3) Motor de transmisión
El motor de reproducción en streaming es el módulo central que interactúa con la API del decodificador. Importa diferentes clips multimedia en el codificador y maneja la conmutación de múltiples velocidades y las diferencias durante la reproducción (como la diferencia entre archivos de declaración y cortes de video, y congelamientos automáticos). Saltos de imagen).
4) Predictor de parámetros de calidad de recursos (ancho de banda, CPU, velocidad de fotogramas, etc.)
El estimador obtiene datos de varias dimensiones (tamaño de bloque, tiempo de descarga por fragmento y número de fotogramas omitidos) y los agrega para estimar el ancho de banda y la potencia de cálculo de la CPU disponible para los usuarios. Esta es la salida utilizada por el controlador de conmutación ABR (Adaptive Bitrate, Adaptive Bitrate) para emitir juicios.
5) controlador de interruptor ABR
El conmutador ABR puede ser la parte más crítica del motor multimedia, generalmente la parte que más se pasa por alto. El controlador lee los datos (ancho de banda y número de fotogramas omitidos) emitidos por el estimador, usa un algoritmo personalizado para emitir juicios basados en estos datos y le dice al motor de transmisión si necesita cambiar la calidad de video o audio. Hay mucho trabajo de investigación en este campo, y la mayor dificultad es encontrar un equilibrio entre el riesgo de almacenamiento en búfer y la frecuencia de cambio (el cambio demasiado frecuente puede conducir a una mala experiencia del usuario).
6) DRM Manager (componente opcional)
Hoy en día todos los servicios de video de pago se basan en la gestión de DRM, y el DRM depende en gran medida de la plataforma o el equipo, veremos más adelante cuando expliquemos al jugador. El administrador de DRM en el motor multimedia es un contenedor para la API de descifrado de contenido en el decodificador de nivel inferior. Siempre que sea posible, intentará proteger las diferencias en los detalles de implementación de los navegadores o sistemas operativos de forma abstracta. Este componente suele estar estrechamente conectado con el motor de procesamiento de flujo porque a menudo interactúa con la capa del decodificador.
7) Multiplexor de conversión de formato (componente opcional)
Como veremos más adelante, cada plataforma tiene sus limitaciones en términos de empaquetado y codificación (Flash lee archivos H.264 / AAC encapsulados en contenedores FLV y MSE lee archivos H.264 / AAC encapsulados en archivos contenedores ISOBMFF). Esto conduce a algunos videoclips que deben formatearse antes de decodificar. Por ejemplo, con el multiplexor de conversión de formato MPEG2-TS a ISOBMFF, hls.js puede usar contenido en formato MSE para reproducir secuencias de video HLS. Se ha cuestionado el multiplexor de conversión de formato a nivel del motor multimedia; sin embargo, con la mejora del moderno poder de interpretación de JavaScript o Flash, la pérdida de rendimiento que trae es casi insignificante y no causará mucho impacto en la experiencia del usuario.
resumir
También hay muchos componentes y características diferentes en el motor multimedia, desde subtítulos hasta capturas de pantalla, inserción de anuncios, etc. A continuación, también escribiremos un artículo separado para comparar las diferencias entre una variedad de motores diferentes, a través de algunas pruebas y datos de mercado para brindar una guía sustancial para la selección de motores. Vale la pena señalar que para construir un reproductor compatible con varias plataformas, es muy importante proporcionar múltiples motores multimedia reemplazables libremente, porque el decodificador subyacente está relacionado con la plataforma del usuario. A continuación, nos centraremos en este aspecto.
3. Decodificador y administrador de DRM
Para el rendimiento de la decodificación (decodificador) y las consideraciones de seguridad (DRM), el decodificador y el administrador de DRM están estrechamente vinculados a la plataforma del sistema operativo.
1) decodificador
El decodificador maneja la lógica relacionada con la reproducción de la capa inferior. Desempaqueta videos en diferentes formatos de encapsulación, decodifica su contenido y luego entrega los fotogramas de video decodificados al sistema operativo para que los procese y finalmente permite que los usuarios finales los vean.
A medida que los algoritmos de compresión de video se vuelven cada vez más complejos, el proceso de decodificación es un proceso que requiere cálculos intensivos y, para garantizar un rendimiento de decodificación y una experiencia de reproducción fluida, el proceso de decodificación debe depender en gran medida del sistema operativo y el hardware. La mayor parte de la decodificación actual se basa en la ayuda de la decodificación acelerada por GPU (esta es también una de las razones por las que el decodificador VP9 gratuito y más potente no ha ganado la posición de mercado H.264). Si no hay aceleración de la GPU, la decodificación de un video 1080P tomará aproximadamente el 70% del cálculo de la CPU, y la tasa de pérdida de cuadros puede ser muy seria.
Sobre la base de la decodificación y procesamiento de fotogramas de video, el administrador también proporciona un búfer nativo. El motor multimedia puede interactuar directamente con el búfer para comprender su tamaño en tiempo real y actualizarlo cuando sea necesario.
Como mencionamos anteriormente, cada plataforma tiene su propio motor de renderizado y la API correspondiente: la plataforma Flash tiene Netstream, la plataforma Android tiene Media Codec API y la Web tiene extensiones de fuentes de medios estándar. MSE se está volviendo cada vez más llamativo y puede convertirse en el estándar de facto en otras plataformas después del navegador en el futuro.
2) Administrador de DRM
Hoy en día, DRM es necesario al transferir contenido pago producido por estudios. Se debe evitar que estos contenidos sean robados, por lo que el código y el proceso de trabajo de DRM están bloqueados para los usuarios finales y desarrolladores. El contenido descifrado no saldrá de la capa de decodificación, por lo que no será interceptado.
Para estandarizar DRM y proporcionar cierta interoperabilidad para la implementación de varias plataformas, varios gigantes de la Web crearon conjuntamente Common Encryption (CENC) y la extensión universal de cifrado multimedia Encrypted Media Extensions para proporcionar múltiples proveedores de DRM (por ejemplo, EME se puede utilizar para Playready en la plataforma Edge y Widewine en la plataforma Chrome para crear un conjunto de API comunes que puedan leer la clave de cifrado de contenido de video del módulo de autorización DRM para el descifrado.
CENC declaró un conjunto de métodos estándar de cifrado y asignación de claves, que se pueden utilizar para descifrar el mismo contenido en varios sistemas DRM, solo proporcionando la misma clave.
Dentro del navegador, basándose en la metainformación del contenido de video, EME puede identificar qué sistema DRM se utiliza para el cifrado y llamar al módulo de descifrado correspondiente (Módulo de descifrado de contenido, CDM) para descifrar el contenido cifrado por CENC. El módulo de descifrado CDM se encargará del trabajo relacionado con la autorización del contenido, obtendrá la clave y descifrará el contenido del video.
CENC no especifica la emisión de la autorización, el formato de la autorización, el almacenamiento de la autorización y las reglas de uso, la relación de asignación de permisos y otros detalles. El manejo de estos detalles es responsabilidad del proveedor de DRM.
4. resumen
Hoy tenemos un conocimiento profundo de los diferentes contenidos de los tres niveles del reproductor de video. La mejor parte de esta moderna estructura de reproductor es que su parte interactiva está completamente separada de la parte lógica del motor multimedia, lo que permite que el ancla personalice la experiencia del usuario final de manera fluida, libre y flexible. El uso simultáneo de diferentes motores multimedia en una variedad de dispositivos terminales diferentes puede garantizar la reproducción fluida de una variedad de formatos diferentes de contenido de video.
En la plataforma web, gracias a la ayuda de motores multimedia como dash.js, Shaka Player y hls.js, que tienden a ser bibliotecas maduras, MSE y EME se están convirtiendo en nuevos estándares de reproducción, y los fabricantes cada vez más influyentes utilizan ellos. Estos motores de reproducción. En los últimos años, la atención también ha comenzado a extenderse a los decodificadores y televisores de Internet, y también hemos visto más y más dispositivos nuevos que utilizan MSE como su motor de procesamiento multimedia subyacente. Continuaremos invirtiendo más esfuerzos para respaldar estos estándares.
|
Ingrese el correo electrónico para recibir una sorpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikáans
sq.fmuser.org -> albanés
ar.fmuser.org -> árabe
hy.fmuser.org -> Armenio
az.fmuser.org -> azerbaiyano
eu.fmuser.org -> Vasco
be.fmuser.org -> bielorruso
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> catalán
zh-CN.fmuser.org -> chino (simplificado)
zh-TW.fmuser.org -> Chino (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> danés
nl.fmuser.org -> Holandés
et.fmuser.org -> estonio
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandés
fr.fmuser.org -> Francés
gl.fmuser.org -> gallego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemán
el.fmuser.org -> Griego
ht.fmuser.org -> criollo haitiano
iw.fmuser.org -> hebreo
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandés
id.fmuser.org -> indonesio
ga.fmuser.org -> irlandés
it.fmuser.org -> Italiano
ja.fmuser.org -> japonés
ko.fmuser.org -> coreano
lv.fmuser.org -> letón
lt.fmuser.org -> Lituania
mk.fmuser.org -> macedonio
ms.fmuser.org -> malayo
mt.fmuser.org -> maltés
no.fmuser.org -> Noruega
fa.fmuser.org -> persa
pl.fmuser.org -> polaco
pt.fmuser.org -> portugués
ro.fmuser.org -> Rumano
ru.fmuser.org -> ruso
sr.fmuser.org -> serbio
sk.fmuser.org -> eslovaco
sl.fmuser.org -> Eslovenia
es.fmuser.org -> español
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandés
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> galés
yi.fmuser.org -> Yiddish
FMUSER ¡Transmite video y audio sin cables más fácilmente!
Contacto
Dirección:
Habitación No.305 Edificio HuiLan No.273 Huanpu Road Guangzhou China 510620
Categorías
Newsletter