간만에 포스팅 이다!! 일단 내가 안 까먹으려고 포스팅~~
(어느정도 컴퓨터의 기본지식은 있어야 포스팅을 쉽게 이해 할 수 있다)
http://link.twitch.tv/guidekr
스트리밍 프로그램 기본 설정은 이걸 참고하세요
(트위치 가이드)
본 글을 2017년 3월 기준
OBS Studio 17.0.2 64bit
(classic 버전은 테스트 못해봄)
nginx 1.10.1 windows ver
작성 되었습니다
요즘 1인방송 및 인터넷방송을 하시는분들이 많다
저 또한 취미로 게임방송을 해보고 있다
아시는분들 알겠지만 방송은 한사람이 하고 시청자는 여러명이기에 시청할 수 있는 플랫폼은 여러가지가 있다
이런 시청자의 플랫폼을 만족 시키기 위해서는 동시송출이라고 생각 하여 방법을 알아보았다
먼저 메이저급 방송하시는분들은 대부분 투컴으로 방송을 하고 계실거다
컴퓨터 하나는 게임을 직접 해야 하는 컴퓨터 이고 또하나 컴퓨터는 방송 송출용으로 사용을 한다
원컴으로는 방송 하는데 사양이 부족 하기 때문이다
나 역시 원컴이지만 투컴 성향(?)으로 방송을 한다
콘솔(PS4)으로 게임을 플레이 하고 컴퓨터는 송출용으로만 사용하고 있다 (컴퓨터 게임은 저사양만 가능 ㅠㅠ)
동시 송출용으로 사용되는 컴퓨터 사양은
OS : WINDOWS 10 64Bit
CPU : i5-3550 (3세대 아이비브릿지)
RAM : 12GB
VGA : Nvidia GTX 770
Capture Board : SuperCast X6 HDMI
사양은 높을수록 좋다 하지만 내 사양은 횟수로만 5년전 맞춘 사양 (2017년 기준, 그래픽카드만 나중에 중고로 구입)
위 사양이 부족 할수 있지만
방송 인코딩에 CPU 말고 두개(?)의 그래픽카드를
Intel QuickSync(CPU 내장) + Nvenc (Nvidia 외장) 이용하여 가능한 것이다
트위치 : 1280x720, 60fps, 비트레이트 4,000
유튜브 : 1280x720, 60fps, 비트레이트 4,000
카카오TV : 1280x720, 60fps, 비트레이트 4,000
녹화 : 1920x1080, 60fps, 비트레이트 12,000
방송은 위 스펙대로 진행 하고 있다
실제로 방송 해보면 알겠지만
본인 컴퓨터 사양에 따라 60프레임 기준
720p + 60f + 4k 스펙이면 트래픽이 약 4~500kb/s가 필요 하다
그러니 동시송출에 필요한 총 트래픽은
약 1.2~6 MB/s 정도이다
(단, 사용하는 회선이 얼마나 손실없이 트래픽을 감당해주는게 관건 라우터(공유기) 등등)
예를 들어 비트레이트 이용범위 (60 fps기준)
720p - 2,500 ~ 4,000
1080p - 6,000 ~ 8,000
(메이저급분들이 이렇게 사용하시더라...)
간단하게 설명 동시 송출 원리는 nginx rtmp 스트링서버를 이용하여 OBS베이스 방송
(xsplit으로는 더욱 간단한거 같지만 취미로 방송하고(유료) 오픈소스가 좋으니 나는 OBS를 이용)
출력모드: 고급
방송 실제 스트리밍은 인코더 QuickSync 이용
(QuickSync 탭이 안나올시 BIOS 셋업에서 활성화 시켜야함
요즘꺼는 왠만해서 다 지원)
출력 배율과, 비트레이트는 본인의 사양대로
녹화는
NVENC (주 그래픽카드)
출력 배율 및 비트레이트는 본인의 사양대로
(유튜브 업로드용 및 소장용이라 어느정도 높게 설정)
FPS 값 : 60fps
(이값을 포기 못한다...)
Nginx 다운로드
https://github.com/illuspas/nginx-rtmp-win32
오른쪽 녹색부분
Clone or download -> Download ZIP
클릭하여 다운로드
트위치 스트림키 확인
https://www.twitch.tv/본인아이디/dashboard/streamkey
확인 가능
유튜브 로그인후
크리에이터 스튜디오 -> 실시간 스트리밍
유튜브 스트림키 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | worker_processes 1; #error_log logs/error.log debug; events { worker_connections 1024; } rtmp { server { listen 1935; application live { live on; } application hls { live on; hls on; hls_path temp/hls; hls_fragment 8s; } } } | cs |
다운받은 nginx파일을 적당한곳에 압축을 풀고
하위 conf 폴더에 nginx.conf 설정파일을 열어본다
윈도우 메모장으로도 가능 하지만
가급적 에디터 프로그램을 사용한다
Notepad++: http://notepad-plus-plus.org/
AcroEditor: http://www.acrosoft.pe.kr/board/download
대표적인 무료 에디터 프로그램
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 31 32 | worker_processes 1; #error_log logs/error.log debug; events { worker_connections 1024; } rtmp { server { listen 1935; application live { live on; record off; #본인의 트위치 스트리밍키 교체 push rtmp://live-sel.twitch.tv/app/live_12345_abcdefg1234; #본인의 유튜브 스트리밍키 교체 push rtmp://a.rtmp.youtube.com/live2/abcdefg1234; } application hls { live on; hls on; hls_path temp/hls; hls_fragment 8s; } } } | cs |
live on; 밑에 트위치와 유튜브 스트리밍키를 추가 시킨다
abcdefg1234
live_12345_abcdefg1234
해당부분에 본인 스트리밍키 추가
record off;
push rtmp://a.rtmp.youtube.com/live2/본인스트리밍키;
push rtmp://live-sel.twitch.tv/app/본인스트리밍키;
nginx_shakii_conf.7z
요청하시는분들이 있어서 올려봅니다
압축 푸셔서 파일명 수정 하시고
nginx_shakii.conf -> nginx.conf
설정파일에 스트리밍키만 바꿔서 적용하세요
가장 위 두번째줄처럼
글 앞에 ' # ' (샾?)
이와 같이 주석처리를 안해주면 에러 로그가 엄청 나게 쌓인다
뭔가 문제가 발생할때 앞에 "#"을 제거 하여 에러를 확인 할때 이용하자
#error_log logs/error.log debug;
nginx파일을 그냥 실행 시켜도 되지만
보다 안전하고 쉽게 하기 위해
메모장을 이용하여 서버 시작파일과 정지파일의 만든다
파일명은 원하는대로 확장자는 cmd or bat으로 하면 된다
위와 같이 경로(본인의 설치경로)를 다 안넣고
start nginx
nginx -s quit
만 넣어도 된다
잘 모르겠으면 그냥 탐색기에서 실행 하기!
만든 스크립트를 실행 하면 위와 같이 나온다
혹시 모르니 작업관리자를 열어 프로그램이 제대로 실행 되었는지 확인도 해본다
nginx.exe(32비트) 프로세스가 2개 떠 있으면 된다
보통 실행 했는데 에러 나는경우가
conf/nginx.conf 파일을 잘못된 수정이거나
실행하고 방송후에 끄고 nginx는 정지를 안해주고
나중에 nginx를 다시 실행 하려고 할때 에러가 난다
logs 폴더에 nginx.pid 가 남아 있으면 에러가 난다고 보면 된다
nginx가 실행되면 pid파일을 생성하는데
정상적으로 nginx를 정지했다면 pid파일은 없어진다
그냥 다시 실행 하면 pid 파일 갱신 해준다
(pid파일은 리눅스 개념 프로세스인데 여기서 중요한게 아니니 패슈~)
(WIN+R) cmd창을 열어 ipconfig 명령어로 본인 컴퓨터를 ip를 알아본다
obs를 실행 하여 방송 탭
방송 형식 : 사용자 임의 방송서버
URL : rtmp://192.168.xxx.xxx/live (각자 컴퓨터마다 ip는 다를것이다)
스트림 키 testtv
(스트림키는 본인이 하고 싶은대로)
적용후에 OBS를 먼저 방송시작을 한다
그리고 팟플레이어를 실행후
ctrl + U (주소 열기) 를 누른후 방송 주소를 넣어준다
rtmp://192.168.xxx.xxx/live/testtv (본인 ip)
단,
본인 ip, 자신의 ip
localhost or 127.0.0.1
도 본인ip가 맞다
하지만 실제 본인 ip를 직접 넣어줘야 제대로 돌아 가더라... 왜 이런지는...
팟플레이어 인코더 역시 QuickSync 인코더를 이용 하였다
적용이 잘 되었다면 팟플레이어 미리보기 하여도 영상이 나올것이다
이후 팟플레이어에서 방송시작을 하면된다
OBS와 팟플레이어의 소리가 겹칠것이다 팟플레이어 에서 간단하게 음소거!
모든 설정이 제대로 작동 한다면 위와 같이 동시송출이 될것이다
방송 통합 자막은
http://www.js-almighty.com
위 사이트에 사용법이 자세히 나와 있으니 참고 하시길..
1. nginx 기반으로 송출 되는것이기에 카카오TV만 송출되고 두 플랫폼(트위치,유튜브)만 안될수는 없다.
2. 트위치, 유튜브가 동시송출이 안되면 카카오TV도 송출이 안되어야 한다.
3. 트위치, 유튜브중 하나만 송출 된다면 분명 설정에 오타가 있을 경우가 많다.
4. nginx 실행이 안된다면 nginx 폴더 아래 logs폴더에 "nginx.pid" 파일이 있다면 삭제후에 실행해본다.
위에도 말했다 시피
나는 방송을 콘솔(PS4)로만 하고
컴퓨터는 송출용으로만 사용하기에
위 사양으로도 동시송출이 가능한것이다
실제 동시송출 했을때 모니터링 해본것이다
CPU 사용율은 약 40~50%
네트워크는 1.3~1.7 MB/s (약12Mbps)
일반적으로 사용하는 100메가 100Mbps (초당 12.5 MB/s)
방송 스트리밍을 담당하는 인코더
CPU(내장그래픽) QuickSync GPU Load 약 60~65%
녹화를 담당하는 인코더
외장 주그래픽카드 Nvenc (Nvidia)
녹화전에는 GPU Load 50% 이상 이였다가
녹화를 진행 하면 15% 내려간다
대신 Video Engine Load가 80%대 높게 올라간다
(이건 나만 그런건지 모르겠다)
인코더는 두개를 서로 바꺼서 해보아도 된다
나는 스트림 방송보다
녹화가 좀더 중요하고 사양을 원하기에 (높은 해상도 및 고화질)
주 그래픽카드로 사용하였고
이렇게 사용하니 방송 및 녹화도 끊김없이 사용 가능하기에 이용하였다.
PS :
동시송출을 알아보다가 이것저것 테스트 해보았지만
OBS 설정, 컴퓨터의 사양마다 다르기 때문에 여러 증상이 나타날수도 있다
또한 경험상 트위치랑 카카오tv(다음팟[그립다..])은 모르겠지만
유튜브는 nginx를 이용하여 동시송출시 버퍼링(?) 좀더 발생하는거 같았다
참고
https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/
http://pd-retro-tv.tistory.com/117
http://potsu.net/index.php?document_srl=8116532&mid=irukan
http://itcm.co.kr/g_board/2175942