미디어서버(Nginx RTMP)
Nginx.conf의 옵션들 (Nginx RTMP) 및 화질 여러개 송출
cocodingding
2024. 3. 10. 00:56
- keyframe
- 시작 프레임과 끝 프레임 중에 전체 정보를 가지고 있는 중심 프레임
- 특정 시간동안 시작 프레임부터 끝 프레임까지 설정값이 변하면서 움직임을 만듬
- keyframe 간격
- 전체 이미지가 전송되는 빈도를 결정하는 인코딩 설정
- preset
- 영상 또는 오디오 스트리밍을 위한 인코딩 프로파일을 지정
- 여기서 ultrafast는 인코딩 속도를 최적화하는 프리셋 중 하나로, 이 설정은 인코딩 속도를 우선시하여 품질보다는 속도에 중점을 둔다.
- fragment
- 비디오 파일의 일부분으로, 동영상을 여러개의 작은 조각으로 분할한 것.
- fragment의 길이가 너무 짧으면 클라이언트는 더 자주 요청하게 되고 프래그먼트 파일 생성 속도보다 요청 속도가 더 빨라 에러가 발생할 수 있다.
- 반면에 fragment의 길이가 너무 길면 긴 지연시간을 유발할 수 있다.
- HLS 및 기타 스트리밍 프로토콜에서는 프래그먼트를 사용하여 동영상을 분할하고, 이를 클라이언트에 전송
- 클라이언트는 이러한 프래그먼트를 순서대로 받아 재생
- 비디오 파일의 일부분으로, 동영상을 여러개의 작은 조각으로 분할한 것.
- chunk size
- chunk size는 네트워크 대역폭과 지연 시간을 고려하여 설정해야함.
- 작은 chunk size는 작은 데이터 조각을 전송하여 지연 시간을 줄이고, 대역폭을 효율적으로 사용할 수 있지만, 오버헤드가 증가할 수 있다.
- 반면에 큰 chunk size는 대량의 데이터를 한 번에 전송하여 대역폭을 더 효율적으로 사용할 수 있지만, 지연 시간이 증가할 수 있다
- playlist length
- HLS에서 사용되는 재생목록의 파일의 길이를 나타냄
- 이 길이는 일반적으로 몇 초동안의 세그먼트를 포함하는지를 나타내, 스트리밍의 부드러운 재생과 지연 시간 간의 균형을 맞추기 위해 조정된다.
화질 여러개 송출하기
rtmp {
server {
listen 1935;
#listen [::]:1935 ipv6only=on;
chunk_size 3000;
application stream {
live on;
exec ffmpeg -i rtmp://비밀/stream/$name
-vf scale=1280:720 -c:v libx264 -c:a aac -preset ultrafast -g 90 -f flv rtmp://비밀/live/$name_720p
-vf scale=854:480 -c:v libx264 -c:a aac -preset ultrafast -g 90 -f flv rtmp://비밀/live/$name_480p
-vf scale=640:360 -c:v libx264 -c:a aac -preset ultrafast -g 90 -f flv rtmp://비밀/live/$name_360p;
}
application live {
live on;
record off;
hls on;
hls_path /var/www/html/stream/hls;
hls_nested off;
hls_fragment 2s;
hls_playlist_length 5s;
}
}
}
스케일을 다르게 해서 이름이 다른 영상 파일을 3개 만들어서
프론트 코드에서 영상별로 가져올 수 있게 했다.