1. 문제 내용
로컬에 스트리밍 웹서버를 구축한 뒤 VLC로 streaming재생 시 로딩 속도가 상당히 오래 걸림
(팟플레이어, 곰플레이어는 정상)
2. 문제 추적
Windows VLC Player -> 도구 -> 환경설정 -> 설정 보기 전체 -> 고급 -> 기록 도구 -> 로그파일 생성
저장 후 다시 상황 재연 시 입력한 경로, 파일명으로 로그파일 생성
3. 로그분석
(VLC 로그는 타임스탬프가 없는 치명적인 문제점이 있다)
http debug: outgoing request:
GET /streaming/abc.mkv HTTP/1.1
Host: localhost:61946
Accept: */*
Accept-Language: en_US
User-Agent: VLC/3.0.16 LibVLC/3.0.16
Range: bytes=0-
http debug: connection failed
http debug: outgoing request:
GET /streaming/abc.mkv HTTP/1.1
Host: localhost:61946
Accept: */*
Accept-Language: en_US
User-Agent: VLC/3.0.16 LibVLC/3.0.16
Range: bytes=0-
http debug: incoming response:
HTTP/1.1 206 Partial Content
Connection: close
Content-Type: video/mkv
Content-Length: 4573026410
Date: Thu, 21 Apr 2022 13:51:56 GMT
Content-Range: bytes 0-4573026409/*
Accept-Ranges: bytes
로그를 분석해 보니 첫 번째 Get요청을 날리고 http debug: connection failed라는 로그가 찍히고 다시 동일한 전문을 한번 더 전송하고 정상 응답을 가져갔다
서버 로그에는 동일 전문이 2번씩 온 적도 없고 connection로그도 한 번만 찍혀있기에 실제로 연결이 한번 실패한 것으로 보이고 이때 connection failed 후 약 2~3초 후에 재시도하는 것으로 추측되었다
그리고 또 다음 블록을 요청할 때 첫 번째 Get 전송 시 또 connection failed 발생 그리고 동일한 방법으로 동일 내용을 한번 더 쏘면 정상응답 획득하는 구조였다
(로딩 시간이 딜레이 되지 않는 플레이어들은 재시도 요청 대기시간이 없는 것으로 보임)
4. 해결
서버의 각종 설정을 바꿔보고 별거 다해보았으나 답은 어이없게도 우연히 엉뚱한 곳에서 발견한다
자체 로컬 서버를 사용하기에 URL 주소는 아래와 같았다
http://localhost:1234/streaming/abc.mkv
VLC에서 보내는 패킷을 후킹 해보려고 하다가
http://127.0.0.1:1234/streaming/abc.mkv
http://[아이피]:1234/streaming/abc.mkv
위와 같이 127.0.0.1 혹은 아이피를 직접 써주니 connection failed도 발생하지 않았고 빠르게 로딩이 진행되었다
GET /streaming/abc.mkv HTTP/1.1
Host: 127.0.0.1:4242
Accept: */*
Accept-Language: en_US
User-Agent: VLC/3.0.16 LibVLC/3.0.16
Range: bytes=0-
http debug: incoming response:
HTTP/1.1 206 Partial Content
Connection: keep-alive
Content-Type: video/mkv
Content-Length: 4573026409
Date: Wed, 27 Apr 2022 10:56:59 GMT
Content-Range: bytes 0-4573026409/4573026410
Accept-Ranges: bytes
이해가 가지 않아 더 찾아봤는데 Localhost 루프백 주소는 DNS 서버로 보내지 않고 OS 내에서 처리한다고 한다
OS내에 버그이거나 IPv6으로 가서 실패했다가 IPv4로 가나 싶기도 하고(IPv6사용안함) 정확한 원인은 알 수 없었다
한 줄 결론
localhost -> 127.0.0.1
'운동하는 개발자 > Windows' 카테고리의 다른 글
SVN 서버 아이피 변경 시 윈도우 로컬 작업(TortoiseSVN) (0) | 2022.05.19 |
---|---|
gitlab 서버 아이피 변경 시 윈도우 로컬 작업 (0) | 2022.05.19 |
[미사용]윈도우11 듀얼모니터 시계 추가하기 Elevenclock (0) | 2021.12.04 |
mfc140.dll이(가) 없어 코드 실행을 진행할 수 없습니다. (2) | 2021.11.24 |
윈도우10 더미데이터 만들기 (테스트파일 만들기 fsutil) (0) | 2021.07.21 |