여러 방법이 알려져 있지만, jwplayer 8 버전에서 HLS 스트리밍 영상을 받는 '간단한' 방법은 사실상 다 막힌 것 같다.
유일한 희망은 m3u8 주소를 '어렵게' 알아낸 다음 streamlink를 이용해 ts로 받는 방법뿐인 듯.
m3u8 주소를 얻으려면 동영상 있는 페이지 콘솔에서 요렇게 입력.
jwplayer('player').getPlaylist()[0].file;
물론 플레이어 div
의 id
가 player
가 아니면 수정해야 한다(하지만 대부분 귀찮아서 기본값으로 player
를 쓰리라 믿어 의심치 않는다).
jwplayer(jwplayer.id).getPlaylist()[0].file;
요걸 streamlink에 넣어주면 천천히 다운로드가 시작된다.
streamlink "엄청나게 긴 m3u8 주소" best -o test.ts
근데 이 주소가 m3u8이 아니라 txt로 끝난다면(예: .../master.txt?s=1&cache=1
) streamlink가 처리하지 못한다는 걸 발견했다. 즉 txt 주소와 실제 m3u8 주소가 다르다는 거. 댓글에 썼던 Live Stream Downloader 확장도 마찬가지였다. 그래서 jwplayer 8의 로그를 보니 다음과 같은 걸 발견했다(jwplayer가 개발자 도구를 막을 경우 그 스크립트 파일(예: cdn.jsdelivr.net/npm/disable-devtool
)을 먼저 차단해야 한다).
촉이 온다 촉이 와... 즉, 실제 로드하는 주소가 따로 있는 거다(.../stream/Rys...
). jwplayer를 써본 적이 없어서 저 주소를 콘솔에서 코드로 알아내는 것까지는 불가능했다.
문제는 저 주소 역시 streamlink 또는 Live Stream Downloader로는 다운로드가 불가능했다. 그러던 중 발견한 또 하나의 확장이 HLS Downloader라는 녀석이다. 얘에다가 저 주소를 복붙하자 다운로드가 가능했다(html 확장자로 저장되므로 ts로 확장자는 바꿔야 한다). 뭔가 글 쓴 지 두 달 만에 일이 어려워지고 있는 것 같지만, 그래도 성공했다는 데 위안을.
jwplayer로 동영상을 재생하는 사이트 대상으로, 로컬 자막 파일을 불러와 하단 같은 곳에 출력해주는 북마클릿 스크립트를 만들면 유용할 것 같다. OTT에 없어서 웹서핑을 통해 찾은 영화에 한국어 자막이 있을 리 없으니까. 하지만 아마추어 한국어 자막은 씨네스트 등에서 대부분(?) 구할 수 있으니, 그걸 브라우저에서 바로 사용할 수만 있다면 아주 편리할 것 같다.
불완전한 확장: https://webextension.org/listing/hls-downloader.html
작동하는 확장(23-9-25 기준): https://mybrowseraddon.com/hls-downloader.html
정리가 잘 된 글이네요. 도움이 됐습니다.