일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 비디오테이프
- Digital8
- Video8
- vcr
- 비디오
- 매크로비전
- 다이아몬드헤드
- 비디오변환
- 필립스
- LG전자
- 캠코더
- S-VHS
- 삼성전자
- SQPB
- 8mm
- 소니캠코더고장
- 소니만세
- 소니
- HI8
- 컬러버스터
- VHS
- 8mm캠코더
- 파나소닉
- 비디오믹서
- 팩트체크
- 레트로TV
- 소니캠코더수리
- 브라운관TV
- 아날로그캠코더
- 비디오기기
Archives
- Today
- Total
아무거나 적당히 운영되는 이상한 블로그
nginx rtmp 모듈로 hls 스트리밍 방송 해보기 본문
리눅스에 대해 어느정도 이해가 필요합니다.
해당 명령은 상황에 따라 간단한 수정이 필요하며, 바로 복사 붙어넣기를 하면 안됩니다.
1. ngnix 컴파일 하기
wget http://nginx.org/download/nginx-1.21.6.tar.gz
tar -xvf nginx-1.21.6.tar.gz
git clone https://github.com/arut/nginx-rtmp-module.git
cd nginx-1.21.6
sudo apt install libpcre3 libpcre3-dev zlib1g-dev libssl-dev
./configure --add-module=/home/hanzo/nginx-rtmp-module
make
sudo make install
2. nginx 설정하기
sudo nano /usr/local/nginx/conf/nginx.conf
(아래의 설정으로 내용을 완전히 갈아엎습니다.)
#user nobody;
worker_processes auto;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
chunk_size 4000;
application hls {
live on;
hls on;
hls_path /tmp/hls;
allow publish 127.0.0.1;
allow publish 172.16.0.0/12;
deny publish all;
allow play all;
hls_fragment 600ms;
hls_playlist_length 5s;
}
}
}
# HTTP can be used for accessing RTMP stats
http {
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;
}
# Serve HLS fragments
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
}
}
3. nginx 켜고 끄기
sudo /usr/local/nginx/sbin/nginx (켜기)
sudo /usr/local/nginx/sbin/nginx -s stop (끄기)
nginx를 끄거나 컴퓨터를 끈 경우에는 다시 수동으로 켜야합니다.
4. obs 스튜디오 설정
방송열쇠는 원하는 것으로 변경해도 됩니다.
이때 방송되는 주소는 http://127.0.0.1/hls/test.m3u8 가 됩니다.
6. (공유기 사용시 옵션) 공유기 포트포워드 열기
(공유기에 따라 다릅니다. 기본 세팅은 8080 포트를 열어줘야합니다.)
7. (wsl 사용시 옵션) wsl 포트 열기
먼저 wsl에서 net-tools를 설치합니다.
$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
if( $found ){
$remoteport = $matches[0];
} else{
echo "The Script Exited, the ip address of WSL 2 cannot be found";
exit;
}
#[Ports]
#All the ports you want to forward separated by coma
$ports=@(8080);
#[Static ip]
#You can change the addr to your ip config to listen to a specific address
$addr='0.0.0.0';
$ports_a = $ports -join ",";
#Remove Firewall Exception Rules
iex "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' ";
#adding Exception Rules for inbound and outbound Rules
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP";
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP";
for( $i = 0; $i -lt $ports.length; $i++ ){
$port = $ports[$i];
iex "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr";
iex "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport";
}
의 파일을 메모장으로 wsl-networks.ps1 으로 저장한 다음 cmd를 관리자 권한으로 이렇게 명령합니다.
PowerShell.exe -ExecutionPolicy Bypass -File .\wsl-networks.ps1
그러면 wsl에서 포트가 열립니다. 포트를 여는것은 컴퓨터를 재부팅한 이후에는 다시 해줘야합니다.
8. (웹페이지 옵션) hls.js 사용하기
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<!-- Or if you want a more recent alpha version -->
<!-- <script src="https://cdn.jsdelivr.net/npm/hls.js@alpha"></script> -->
<video id="video" width="640" controls autoplay></video>
<script>
var video = document.getElementById('video');
var videoSrc = 'http://127.0.0.1:8080/hls/test.m3u8';
//
// First check for native browser HLS support
//
if (video.canPlayType('application/vnd.apple.mpegurl')) {
video.src = videoSrc;
//
// If no native HLS support, check if HLS.js is supported
//
} else if (Hls.isSupported()) {
var hls = new Hls();
hls.loadSource(videoSrc);
hls.attachMedia(video);
}
</script>
적당한 html 웹사이트에 이렇게 넣습니다.
'잡담' 카테고리의 다른 글
창홍 TV 서비스 모드 진입 방법 (0) | 2022.09.22 |
---|---|
GO 언어에서 c언어 사용하는 여러가지 방법 (0) | 2022.05.30 |
argv 쓰는 간단한 C언어 프로그램을 golang에 우겨넣는 방법 (0) | 2022.05.04 |
MASPRO DT330 일본방송 디지털 지상파/BS/110CS 튜너 셋톱박스 (0) | 2021.12.01 |
메인 블로그 현재 상황 발표 (0) | 2021.10.23 |
Comments