HLS NGINX-RTMP [错误] 1281#0:* 58 hls:强制片段拆分:10.002 秒
Posted
技术标签:
【中文标题】HLS NGINX-RTMP [错误] 1281#0:* 58 hls:强制片段拆分:10.002 秒【英文标题】:HLS NGINX-RTMP [error] 1281#0: *58 hls: force fragment split: 10.002 sec 【发布时间】:2017-06-12 23:30:12 【问题描述】:如果您能为我提供一些启发,我将不胜感激。
所以,基本上我从我的编码器中提取一个流并且它可以工作,我得到 m3u8 输出并且它是可访问的,但是 HLS 视频跳动并且我丢失帧。剧情不连续。
2017/06/12 16:04:09 [error] 1281#0: *58 hls: force fragment split: 10.002 sec
(从 RTSP 拉取后编辑...) 2017/06/13 10:48:55 [错误] 1281#0: *763 hls: 强制片段拆分: 10.416 秒, , 客户端: XX, 服务器: 0.0.0.0:1935
这是我的配置文件:
#user nobody;
worker_processes 1;
events
worker_connections 1024;
# RTMP configuration
rtmp
server
listen 1935; # Listen on standard RTMP port
chunk_size 4000;
application live
live on;
exec_pull ffmpeg -re -i rtsp://xxx/xxx -c copy -f flv rtmp://xxx:1935/live/xxx;
exec_pull ffmpeg -re -i rtsp://xxx:8080/xxx -c copy -f flv rtmp://xxx:1935/live/xxx;
# Turn on HLS
hls on;
hls_path /tmp/hls/;
hls_fragment 3;
hls_playlist_length 60;
http
sendfile off;
tcp_nopush on;
directio 512;
default_type application/octet-stream;
server
listen 80;
server_name localhost;
# rtmp statistics
location /stat
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
location /stat.xsl
# you can move stat.xsl to a different location
# under linux you could use /var/user/www for example
root html;
location /
# Disable cache
add_header 'Cache-Control' 'no-cache';
# CORS setup
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
add_header 'Access-Control-Allow-Headers' 'Range';
# allow CORS preflight requests
if ($request_method = 'OPTIONS')
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Range';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
types
application/dash+xml mpd;
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
root /tmp/;
【问题讨论】:
如果documentation 是最新的,pull
用于 RTMP 流。您是否使用 RTMPT 流作为输入?
我编辑了帖子,将我要提取的源更改为 rtsp 并添加了统计图像以更好地说明。如果你能帮助我,将不胜感激。还考虑设置本地计算机并复制相同的配置以查看问题是否与我的托管服务提供商有关。我有一个专门的服务器。
首先在 CLI 中尝试 ffmpeg
命令,看看这些来源是否有任何报告的错误。关于消息错误,您正在复制源编码,这意味着您使用现有的关键帧,这些关键帧可能不完全相隔 3 秒。
CLI 中没有错误,就像我使用本地文件、电影一样,它运行良好。我什至考虑过我的编码器在南美,而服务器是美国的godaddy专用服务器......,我应该将帧降低到1还是增加它?我会尝试调整它!
【参考方案1】:
**好的所以..我有消息。基本上那个配置是完美的。我丢失所有这些包的原因是编码器和专用服务器之间的距离。
建议将服务器放在编码器所在的本地...所以,这对我来说很有效。
干杯**
【讨论】:
真的吗?没有其他原因?以上是关于HLS NGINX-RTMP [错误] 1281#0:* 58 hls:强制片段拆分:10.002 秒的主要内容,如果未能解决你的问题,请参考以下文章
OpenGL GL_LINE_STRIP 在 glEnd 后给出错误 1281(无效值)
用 VS2012 编译 libffi 失败,出现致命错误 LNK1281: Unable to generate SAFESEH image