我现在有一个运行的ffmpeg bash脚本,它从一个实时的摄像机提要中提取一个RTSP提要,然后将它作为RTM`发布到我的Nginx服务器上。
对服务器的要求是,使用可以订阅Nginx服务器发布的RTMP提要或HLS流。
我发现的问题是RTMP流会在一段时间后结冰,尽管HLS流继续工作。
我想知道这是否是因为它是一个单独的进程,而不是由Nginx本身通过它的exec命令执行的进程。
而且,我没有在这台服务器上进行调优,所以我不知道我需要更改一些配置。
这是我的两个剧本。
#!/bin/bash
sleep 1
VID_SOURCE="rtsp://camerastream.com/MediaInput/h264/stream_"
VIDEO_OPTS="-vcodec libx264 -video_size 1280x720 -b:v 2048k"
AUDIO_OPTS="-c:a copy"
VID_OUTPUT="rtmp://localserver:1935/live/livestream"
ffmpeg -rtsp_transport tcp -r 15 -i $VID_SOURCE $VIDEO_OPTS $AUDIO_OPTS -f flv $VID_OUTPUT然后我的Nginx配置
vents {}
rtmp {
server {
listen 1935;
application live {
live on;
interleave on;
# Turn on HLS
hls on;
hls_path /tmp/hls;
hls_playlist_length 15s;
}
}
}
http {
default_type application/octet-stream;
server {
listen 8080;
location /hls {
# 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';
# allow CORS preflight requests
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
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/;
}
}
}目标是拥有一台订阅者可以观看rtmp提要或HLS提要的服务器。
发布于 2022-01-17 04:28:12
你可以播放RTMP和HLS流。我认为问题不在于协议,而在于你相机上的内容或时间戳。
The problem I'm finding is that the RTMP stream freezes after a while,
although the HLS stream continues to works.你可以试试:
-b:v 500khttps://stackoverflow.com/questions/70229608
复制相似问题