공식 nginx 매뉴얼에 따라 로컬 컴퓨터에 RTMP 서버를 설정했습니다.
nginx를 사용한 원격 학습용 비디오 스트리밍
내 nginx 설정:
sudo vim /usr/local/nginx/conf/nginx.conf
worker_processes 1;
error_log logs/error.log;
worker_rlimit_nofile 8192;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
application live {
live on;
interleave on;
hls on;
hls_path /mnt/hls;
hls_fragment 15s;
}
}
}
http {
default_type application/octet-stream;
server {
listen 80;
location /tv {
root /mnt/hls;
}
}
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
text/html html;
}
}
RTMP URL 설정:
output="rtmp://127.0.0.1:1935/live/sample"
웹캠 홍보:
ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -c:v libx264 -f flv $output
rtmp 프로토콜을 사용하여 스트림을 가져옵니다.
ffplay rtmp://127.0.0.1:1935/live/sample
영상을 성공적으로 받았습니다.
hls 프로토콜을 사용하여 스트림을 가져옵니다.
ffplay http://127.0.0.1/live/sample
HTTP error 404 Not Found
http://127.0.0.1:80/live/sample.m3u8: Server returned 404 Not Found
#It can't get video with browser.
어떻게 고치나요? http 세그먼트의 다음 코드 조각은 무엇을 의미합니까?
server {
listen 80;
location /tv {
root /mnt/hls;
}
}
난 어디로 가야 해 mkdir /tv
?
답변1
답변2
http와 rtmp, hls의 push url과 pull url 사이에는 관계가 있습니다. 첫 번째 그룹 설정은 훌륭하게 작동합니다.
Pull url
http://127.0.0.1/tv/sample.m3u8
Push url
rtmp://127.0.0.1:1935/live/sample
location /tv {
root /mnt/hls;
}
rtmp setting
application live {
live on;
interleave on;
hls on;
hls_path /mnt/hls;
}
http setting
location /tv {
root /mnt/hls;
}
또한 위와 같은 기능을 하는 다음 쌍으로 작성할 수도 있습니다.
Pull url
http://127.0.0.1/tv/sample.m3u8
Push url
rtmp://127.0.0.1:1935/tv/sample
location /tv {
root /mnt;
}
rtmp setting
application tv {
live on;
interleave on;
hls on;
hls_path /mnt/tv;
}
http setting
location /tv {
root /mnt/hls;
}