从+30秒减lessHLS延迟

Ubuntu 12.04

nginx 1.2.4

avconv -version

avconv version 0.8.10-4:0.8.10-0ubuntu0.12.04.1,Copyright (c) 2000-2013 the Libav developers built on Feb 6 2014 20:56:59 with gcc 4.6.3 avconv 0.8.10-4:0.8.10-0ubuntu0.12.04.1 libavutil 51. 22. 2 / 51. 22. 2 libavcodec 53. 35. 0 / 53. 35. 0 libavformat 53. 21. 1 / 53. 21. 1 libavdevice 53. 2. 0 / 53. 2. 0 libavfilter 2. 15. 0 / 2. 15. 0 libswscale 2. 1. 0 / 2. 1. 0 libpostproc 52. 0. 0 / 52. 0. 0

我使用avconv和nginx来创build一个HLSstream,但是现在我的延迟通常超过30秒。 经过多次阅读后,我意识到HLS已经build立了延迟时间,预计甚至是首选10秒,但30秒似乎相当极端。

使用avconv在nginx rtmp服务器播放器错误stream媒体直播video

提高avconv的负载和速度?

未知的编码器“libx264”

avconv:从图像的子集制作video

在保留帧率的同时将animationgif转换成Linux服务器上的video

我在nginx-rtmp google组上看到了很多的讨论,特别是这个线程有很多的build议。 我试图通过减lesshls_fragment和hls_playlist_length来减less解决我的问题,但是它们没有产生显着的效果。

nginx.conf:

#user nobody; worker_processes 1; error_log logs/error.log debug; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8888; server_name localhost; add_header 'Access-Control-Allow-Origin' "*"; location /hls { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /tmp; } # rtmp stat location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { # you can move stat.xsl to a different location root /usr/build/nginx-rtmp-module; } # rtmp control location /control { rtmp_control all; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } rtmp { server { listen 1935; ping 30s; notify_method get; application myapp { live on; hls on; hls_path /tmp/hls; hls_base_url http://xxxx:8888/hls/; hls_sync 2ms; hls_fragment 2s; #hls_variant _low BANDWIDTH=160000; #hls_variant _mid BANDWIDTH=320000; #hls_variant _hi BANDWIDTH=640000; } } }

avconv命令:

avconv -r 30 -y -f image2pipe -codec:v mjpeg -i - -f flv -codec:v libx264 -profile:v baseline -preset ultrafast -tune zerolatency -an -f flv rtmp://127.0.0.1:1935/myapp/mystream

编辑

我知道这不是avconv是瓶颈,因为我也使用nginx生成RTMPstream。 这个RTMPstream具有非常小的延迟(几秒钟)。

当用aconv使用arecord时不受欢迎的DELAY

我曾经有过同样的问题。 我在nginx.conf中添加了两个参数,然后将延迟时间缩短到了10秒。 这是我的conf:

application hls { hls_playlist_length 4s; hls_fragment 1s }

不过,我不得不说10多岁似乎是我们的限制。 有更好的解决方案

详细说明将hls_playlist减少到4s和将hls_fragment减少到1的答案是好的。 但是,需要注意的是,如果源视频的关键帧间隔大于hls_fragment长度,那么nginx通常必须创建更长的片段,延迟时间将会增加。

我们已经实现的最低延迟是在1s的hls_fragment和源视频关键帧间隔也在1s。 通过这些设置,我们实现了小于7秒的延迟。

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...