Reducir la latencia para la transmisión de HLS FFMPEG -- ffmpeg campo con streaming campo con video-streaming campo con http-live-streaming camp Relacionados El problema

Reduce Latency For HLS Streaming FFMPEG


3
vote

problema

Español

Usé la transmisión de HLS a través de FFMPEG.
En el inicio del retraso de la transmisión existe durante unos segundos.
Cuando quiero tener proyección de un video de 4K en un arroyo durante los muy retrasos existen.
¿Qué puedo hacer?

Original en ingles

I used hls streaming via ffmpeg.
In start of streaming delay exists for few seconds.
when I want to have straming from a 4k video in stream during very delays exist.
What I can to do?

           
   
   

Lista de respuestas

8
 
vote
vote
La mejor respuesta
 

4k video

...

En el inicio del retardo de transmisión existe durante unos segundos

Sí, por supuesto lo hace. Lleva tiempo para amortiguar los datos suficientes para la reproducción de las bitreras muy altas. No solo eso, sino que su jugador de HLS suele necesitar algunos segmentos antes de decodificar incluso comience. Como dice @iangetz, puede reducir la longitud del segmento, pero ahora va a tener aún más gastos generales debido a todas las solicitudes adicionales HTTP.

Reducir la latencia para la transmisión de HLS

No uses HLS. HLS, ni cualquier otro protocolo de transmisión segmentado (como Dash) está optimizado para una baja latencia. Está optimizado para la reutilización de HTTP CDNS, para la reproducción que puede sobrevivir a un cambio de red (como cuando vaya de WiFi a LTE), y para la calidad seleccionable por el cliente (a menudo dinámicamente).

La naturaleza misma de un protocolo segmentado requiere que los buffers relativamente grandes sean fragmentados y luego cargarse en el servidor / CDN individualmente. Esto es realmente útil, pero no es una buena compensación si necesita una baja latencia.

Si la latencia te importa, necesita una tecnología completamente diferente. Eche un vistazo a WEBRTC. Con esta tecnología, los flujos de video en tiempo real, los códecs están optimizados para la latencia sobre la calidad y la confiabilidad se reduce a favor de la latencia. También requiere una inversión significativa en infraestructura de distribución.

No puedo imaginar una situación en la que alguien que se preocupa por el video de 4k pensando que una reducción de la calidad vale la pena la compensación de baja latencia. No puedes tener todo lo que quieras ... Debe elegir lo que es realmente importante para usted y optimizar desde allí. Si desea una baja latencia, tendrá que reducir su calidad y gastar mucho dinero y tiempo en la infraestructura para apoyar el esfuerzo. Si desea secuencias de alta calidad y confiables, puede mantener los buenos parámetros de codificación mientras se usa DASH (o HLS) para la distribución en los CDNS basados ​​en HTTP existentes.

 

4k video

...

In start of streaming delay exists for few seconds

Yes, of course it does. It takes time to buffer enough data for playback of the very high bitrates. Not only that but your HLS player is typically going to need a few segments before decoding even starts. As @iangetz says, you can reduce the segment length but now you're going to have even more overhead due to all the extra HTTP requests.

Reduce Latency For HLS Streaming

Don't use HLS. HLS, nor any other segmented streaming protocol (like DASH) is optimized for low latency. It's optimized for re-use of HTTP CDNs, for playback that can survive a network change (such as when you go from WiFi to LTE), and for client-selectable (often dynamically) quality.

The very nature of a segmented protocol requires relatively large buffers to be chunked out and then uploaded to the server/CDN individually. This is really useful, but not a good tradeoff if you require low latency.

If latency matters to you, you need an entirely different technology. Take a look at WebRTC. With this technology, the video streams in real time, codecs are optimized for latency over quality, and reliability is reduced in favor of latency. It also requires a significant investment in distribution infrastructure.

I can't imagine a situation where someone who cares about 4k video thinking that a reduction in quality is going to be worth the tradeoff for low latency. You cannot have everything you want... you must choose what is actually important to you and optimize from there. If you want low latency, you're going to have to reduce your quality and spend a lot of money and time on infrastructure to support the effort. If you want high quality and reliable streams, you can keep good encoding parameters while using DASH (or HLS) for distrubtion on existing HTTP-based CDNs.

 
 
   
   
4
 
vote

Es probable que sea el jugador que llena su tampón con suficiente contenido antes de que comience a jugar.

Puede reducir el tamaño del segmento de video con 'hls_time' para que cada segmento se descargue más rápido, pero esto incurre en más solicitudes de HTTP a su servidor. Además, puede reducir el primer segmento con 'hls_init_time' y dejar otros segmentos como es.

http://ffmpeg.org/ffmpeg-all.html#hls-1

hls_init_time segundos establece la longitud de segmento de destino inicial en segundos. El valor predeterminado es 0. Se reducirá el segmento en el siguiente marco de la tecla Después de este tiempo ha pasado en la primera lista M3U8. Despues de la inicial La lista de reproducción se llena FFMPEG reducirá los segmentos a la duración igual a hls_time

hls_time segundos Establezca la longitud del segmento de destino en segundos. Defecto El valor es 2. Se cortará el segmento en el siguiente marco de la tecla después de este tiempo ha pasado.

Otra opción es reducir la cantidad de búfer que requiere su reproductor antes de que comience la reproducción. No estoy seguro de qué jugador está usando, pero la mayoría tiene esta opción.

 

That is likely the player filling its buffer with enough content before it starts playing.

You could reduce the video segment size with 'hls_time' so each segment downloads faster but this incurs more HTTP requests to your server. Additionally, you can reduce the first segment with 'hls_init_time' and leave other segments as-is.

http://ffmpeg.org/ffmpeg-all.html#hls-1

hls_init_time seconds Set the initial target segment length in seconds. Default value is 0. Segment will be cut on the next key frame after this time has passed on the first m3u8 list. After the initial playlist is filled ffmpeg will cut segments at duration equal to hls_time

hls_time seconds Set the target segment length in seconds. Default value is 2. Segment will be cut on the next key frame after this time has passed.

Another option is to reduce the amount of buffer your player requires before it starts playback. I'm not sure what player you're using but most have this option.

 
 
1
 
vote

Ahora hay opciones específicas para Baja latencia HLS en FFMPEG . Si bien la "comunidad" baja latencia (LHLS) se admite actualmente, en uno de los principales jugadores de HLS (HLS.JS) hay se mueve para despreciar a favor de la última evolución de Apple de su baja latencia hls .

 

There's now specific options for low latency HLS in ffmpeg. Whilst the 'community' Low Latency (LHLS) is currently supported, in one of the main HLS players (hls.js) there are moves to deprecate it in favour of Apple's latest evolution of their Low Latency HLS.

 
 

Relacionados problema

5  ¿Cómo crear manifiesto de HLS de los segmentos MPEG DASH?  ( How to create hls manifest from mpeg dash segments ) 
Desde que Apple ha anunciado el soporte para MP4 fragmentado, Es posible crear tanto manifiesto de DASH (.mpd) y manifiesto de HLS (.m3u8) para el mismo conju...

0  El jugador se detiene si incluso un solo archivo no existe desde la lista de reproducción de HLS M3U8  ( Player stops if even a single file does not exist from hls m3u8 playlist ) 
Supongamos que tengo una lista de reproducción M3U8 grande #EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-TARGETDURATION:10 #EXT-X-DISCONTINUITY #...

14  ¿Dónde están las herramientas de transmisión en vivo HTTP HTTP de Mac OSX?  ( Where are mac osx http live streaming tools ) 
Estoy tratando de instalar mediastreamvalidator , mediastreamsegmenter , mediafilesegmenter tools Para mi máquina Mac Machine 10.6.8. Como se mencionó e...

11  FFMPEG Transcoding Restablecer la hora de inicio del archivo  ( Ffmpeg transcoding reset the start time of file ) 
Utilizo un segmento para segmentar mi archivo MPEG 2 TS en una serie de segmentos de medios para HTTP Live Streaming y la hora de inicio de cada segmento de...

4  ¿Por qué el iPhone solicita un archivo de listería de reproducción 4 veces?  ( Why does the iphone request an m3u8 playlist file 4 times ) 
¿Por qué el iPhone solicita un archivo de listería de reproducción 4 veces? Y, ¿es posible conseguirlo solicitarlo solo una vez? Las solicitudes se realizan...

1  M3U8 Error de dominio de video CROS en angular 4  ( M3u8 video cros domain error in angular 4 ) 
Yo uso los videojs en el proyecto Angular 4 para reproducir flujos M3U8. Muchos de estos arroyos obtienen un error de acceso-control de acceso. Al igual que...

1  Javafx MediaPlayer No se puede reproducir el archivo M3U8 local  ( Javafx mediaplayer unable to play local m3u8 file ) 
Quiero mostrar una transmisión en vivo de una cámara web en mi aplicación Javafx usando el MediaPlayer / MediaView. Mi intento fue usar FFMPEG para grabar un ...

1  Streaming HLS a dispositivos iOS utilizando Windows Azure Media Services  ( Streaming hls to ios devices using windows azure media services ) 
He estado haciendo algunas exploradoras de Azure Media Services, específicamente con los medios convertidos a HLS. Caminé por el proceso de crear contenido de...

3  El segmento no contiene marco de sincronización  ( Segment does not contain sync frame ) 
Cada vez que divito un video usando el <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ html4/loose.dtd"> <html> <hea...

4  Uso de AVPlayer en iOS ¿Puedes conocer el archivo .ts actual o la marca de tiempo actual del codificador?  ( Using avplayer in ios can you know the current ts file or the current timestamp ) 
Dado que no podemos obtener datos de subtítulos o datos de subtítulos en el AVPlayer, estamos analizando otros métodos de activación, como el código de tiempo...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos