/usr/local/bin/qtpasswd -p 비밀번호 사용자 계정
cat /etc/streaming/qtusers 하여 추가되었는지 확인
IT 기술 정보 공유 블로그
/usr/local/bin/qtpasswd -p 비밀번호 사용자 계정
cat /etc/streaming/qtusers 하여 추가되었는지 확인
다음은 다윈스트리밍서버(Darwin Streaming Sever 6.0.3)를 우분투(Ubuntu 16.04.1)에 설치하고 난후, 정리한 내용이다.
1. 계정생성
addgroup --system qtss adduser --system --no-create-home --ingroup qtss qtss
2. 소스 다운로드 및 패치
cd /usr/local/src wget https://github.com/macosforge/dss/releases/download/6.0.3/DarwinStreamingSrvr6.0.3-Source.tar tar xvf DarwinStreamingSrvr6.0.3-Source.tar wget http://blog.moramcnt.com/wp-content/uploads/2017/06/dss-6.0.3.patch patch -p0 < dss-6.0.3.patch wget http://blog.moramcnt.com/wp-content/uploads/2017/06/dss-hh-20080728-1.patch patch -p0 < dss-hh-20080728-1.patch
3. Makefile 수정
cd DarwinStreamingSrvr6.0.3-Source/ vi Makefile.POSIX
LIBS의 끝에 -ldl 추가
LIBS = $(CORE_LINK_LIBS) -lCommonUtilitiesLib -lQTFileLib -ldl
4. QTFileInfo.tproj 파일의 Makefile 수정
vim ./QTFileTools/QTFileInfo.tproj/Makefile.POSIX
LIBS의 끝에 -lpthread 추가
LIBS = $(CORE_LINK_LIBS) -lCommonUtilitiesLib -lQTFileExternalLib ../../CommonUtilitiesLib/libCommonUtilitiesLib.a -lpthread
5. QTFileTest.tproj 파일의 Makefile 수정
vim ./QTFileTools/QTFileTest.tproj/Makefile.POSIX
LIBS의 끝에 -lpthread 추가
lQTFileExternalLib ../../CommonUtilitiesLib/libCommonUtilitiesLib.a ../../QTFileLib/libQTFileExternalLib.a -lpthread
6. QTSampleLister.tproj 파일의 Makefile 수정
vim ./QTFileTools/QTSampleLister.tproj/Makefile.POSIX
LIBS의 끝에 -lpthread 추가
lQTFileExternalLib ../../CommonUtilitiesLib/libCommonUtilitiesLib.a ../../QTFileLib/libQTFileExternalLib.a -lpthread
7. QTTrackInfo.tproj 파일의 Makefile 수정
vim ./QTFileTools/QTTrackInfo.tproj/Makefile.POSIX
LIBS의 끝에 -lpthread 추가
lQTFileExternalLib ../../CommonUtilitiesLib/libCommonUtilitiesLib.a ../../QTFileLib/libQTFileExternalLib.a -lpthread
8. 빌드
- 성공하게 되면 DarwinStreamingSrvr-Linux 폴더 생성
./Buildit install
9. 방화벽 오픈
ufw allow 554/tcp ufw allow 1220/tcp
10. 설치
- DarwinStreamingSrvr-Linux 폴더로 이동하여 설치
cd DarwinStreamingSrvr-Linux ./Install
11. 웹콘솔 접속
- http://xx.xx.xx.xx:1220/ 으로 접속
그러나, 아래와 같이 텍스트가 출력안되는 경우가 발생하였다.
다행히 구글링 결과 아래 사이트에서 해결책을 찾을 수 있었다.
https://vk.com/wingcatlab?w=wall-99790498_55
11.1 streamingadminserver.pl 파일 수정
cd DarwinStreamingSrvr-Linux vi streamingadminserver.pl
상단에 아래와 같이 use Data::Dumper; 를 추가한다.
# Require needed libraries package streamingadminserver; use Socket; use POSIX; use Sys::Hostname; use Data::Dumper;
1433 라인 정도에 $ENV{"LMSG"} = Dumper($messages{"en"}); 를 아래와 같이 추가
$ENV{"GENREFILE"} = 'genres'; $ENV{"COOKIES"} = $header{'cookie'}; $ENV{"COOKIE_EXPIRE_SECONDS"} = $config{"cookieExpireSeconds"}; $ENV{"LANGDIR"} = $langDir; $ENV{"LANGUAGE"} = $language; $ENV{"SSL_AVAIL"} = $ssl_available; $ENV{"HTTPS"} = "ON" if ($use_ssl); $ENV{"LMSG"} = Dumper($messages{"en"});
11.2 parse_xml.cgi 파일 수정
- parse_xml.cgi 파일을 열어 sub foundString 이라는 서브루틴을 찾는다.
vi ./AdminHtml/parse_xml.cgi
마지막 리턴하는 부분인
return "$messages{$name}";
를 아래와 같이 대체한다.
$lmsg = $ENV{"LMSG"}; my %copied_hash = %{ eval $lmsg }; return $copied_hash{$name};
그런후 다시 ./Install 명령으로 재 설치
./Install
다윈스트리밍서버(TCP) : 554, 1220, 1935
다윈스트리밍서버(UDP) : 5002-5007
와우자 서버에서는 정상적으로 동작하는 프로그램이 다윈스트리밍 서버에서는
인증오류 발생시(RTSP/1.0 401 Unauthorized) 설정파일을 볼 필요가 있다.
1. qtaccess 파일 생성
영상파일이 있는 폴더가 D:\Service\DSS\Movies 라면 해당 폴더에 qtaccess 파일을 만든다.
qtaccess 파일의 내용을 아래와 같이 입력한다.
require any-user require any-user
2. 위와 같이 했음에도 안되는 경우
C:\Program Files\Darwin Streaming Server\qtgroups 파일을 열어 아래와 같이 admin그룹에 사용자계정을 입력한다.
admin:사용자계정
String strUri = "rtsp://" + 서버IP + ":" + 서버포트 + 패스; String strUserInfoHash = convertMd5Hash(사용자ID+ ":"+ strRealm +":"+ 사용자패스워드); String strUriHash = convertMd5Hash("ANNOUNCE"+":" + strUri); String strResHash = convertMd5Hash(strUserInfoHash+":"+ strNonce +":"+strUriHash); mStrAuthorization = "Digest username=\""+ 사용자ID+"\",realm=\""+strRealm+"\",nonce=\""+strNonce+"\",uri=\""+strUri+"\",response=\""+strResHash+"\""; strRequest = "ANNOUNCE rtsp://"+ 서버IP +":"+ 서버포트 + 패스+" RTSP/1.0\r\n" + "CSeq: " + 순번 + "\r\n" + "Content-Length: " + 내용.length() + "\r\n" + "Authorization: " + mStrAuthorization + "\r\n" + "Content-Type: application/sdp \r\n\r\n" + 내용;
아래와 같이 TCP, UDP 포트를 방화벽에서 오픈해주어야 동작한다.
1. RTSP : 554(TCP), 5004(UDP), 5005(UDP)
2. RTMP : 1935(TCP)
3. MMS : 1755(TCP/UDP)