봐야 하는데 시간이 부족해 일단 저장이 필요한 동영상을 만약 다운로드 링크를 따로 지원하지 않는다면..
어쩔 수 없이 프로그램을 사용해서 따로 다운받아야 한다.
근데 쓸데없는 프로그램을 설치하기도 싫고 잘 쓰지도 않는데 굳이 이렇게까지 해야하나.. 라는 생각이 들어
삽질을 조금 했던 기록을 남겨본다.
m3u8 같은 경우는 꽤 편하게 쓸 수 있었던 것 같은데 ts는 조각을 직접 모아야 한다.
이런식으로 최대 174번 파일까지 존재하는 것 같다.
그럼 이제부터 1번부터 174번 파일까지 다운로드 받으면 된다.
그런데 하나씩 일일이 받을 수는 없으니.. 스크립트를 활용해서 다운로드 받아 보려고 한다.
환경: wsl ubuntu 20.04lts
설치돼있어야 하는 패키지: wget, ffmpeg
# pwd
# ~/awsvids
# vim loop.sh
#!/bin/bash
for((i=1;i<=175;i+=1));
do
echo -e "https://cfvod.kaltura.com/scf/hls/p/5353662/sp/535366200/serveFlavor/entryId/1_fx6zynwu/v/1/ev/8/flavorId/1_2oprhaak/name/a.mp4/seg-$i-v1-a1.ts?Policy=...
...
...
...
~~~~~K3V34A" >> loops.txt
done
echo 명령어에 -e 옵션으로 줄바꿈을 해주고 for문에서 1부터 175까지 반복되는 주소를 리스트로 만들어 loops.txt에 저장해준다.
이제 생성한 sh 파일 권한을 실행가능하게 만들어 주고 실행한다.
chmod 755 loop.sh
./loop.sh
그러면 loops.txt라는 파일이 생성되는데, cat이나 vim을 사용해서 확인해보면
$i로 설정한 부분이 1부터 175로 바뀌면서 예쁘게 저장돼있다.
이제 이 파일을 활용해서 wget으로 파일을 다운로드 해보자
wget -i loops.txt
ls나 ll 명령어를 쳐보면 99번까지만 보이는데 explorer.exe . 를 입력하면 윈도우 탐색기로 확인할 수 있다.
어려운 부분이 파일 이름을 일괄적으로 수정하는 것이었는데 rename이나 sed 같은 명령어를 활용할 수 있는 것 같다.
나는 rename과 정규표현식을 활용해서 파일 이름을 수정해봤다.
현재 내가 갖고있는 파일들은 seg-i-v1-a1.ts을 추출할 수도 있겠지만 나는 삭제하는 방법을 선택했다.
rename 's/'삭제할내용입력'//;' *
rename 's/\?//;' *
# 특수문자는 앞에 \ 붙여야 하는 것 같다.
rename 's/X$//;' *
# X로 끝나는 문자를 삭제하고싶을때(..12X라는 파일이 있다면 X만 지우고 싶을 때)
이제 이렇게 잘 정돈된 파일들을 하나로 합쳐준다.
엄청 쉽게 사용가능한 스택오버플로우 답변에서 가져왔다.
https://stackoverflow.com/questions/33599831/concatenate-ts-files-with-correct-timestamps
delimiterBeforeFileNumber="-"
ls |egrep '[.]ts$' \
|sort "-t$delimiterBeforeFileNumber" -k2,2n \
|sed -r "s/(.*)/file '\1'/" >ts.files.txt
파일을 확인해보면 file '~-$i-~~.ts'로 리스트가 들어가있다.
이제 이 파일을 ffmpeg로 mp4로 변환해주면 된다.
ffmpeg.exe -f concat -i ts.files.txt -c copy awsvids.mp4