[Docker, EC2, RTSP] rtsp-simple-server 관련 에러

루나·2022년 7월 26일
0

EC2에서 rtsp-simple-server를 실행하려 했으나 이미 빌드된 바이너리 파일은 실행되지 않았기 때문에 git clone https://github.com/aler9/rtsp-simple-server.git 으로 파일을 받아와 Makefile을 사용해 docker에 띄웠다.
.yml 파일에 runOnDemand를 이용해 클라이언트가 접속했을때마다 ffmpeg 스트리밍을 진행할 생각이었다.

//rtsp-simple-server.yml
...
path:
  all:
    runOnDemand: ffmpeg -re -stream_loop -1 -i ./public/WS.mp4 -c copy -f rtsp rtsp://localhost:8554/mystream
...
run:
  ...
  -v /home/ec2-user/rtsp-simple-server/public:/public \
  ...

하지만 완성적으로 실행하기까지 많은 시행착오를 겪었으며 이를 정리해보려한다.

runOnDemand에서 localhost에 ffmpeg 스트리밍을 진행하지 못하는 문제

이 문제는 git clone을 하기 전에 rtsp-simple-server 공식 문서(README)에 적혀있는대로 docker run --rm -it --network=host aler9/rtsp-simple-server 로 도커허브에 있는 이미지를 사용했을 때 나타났다.
원인은 yml파일을 -v 옵션으로 복사했을 때 localhost를 변환된 주소로 짚어주지 않고 로컬(EC2)주소를 사용했기 때문이라고 생각했다.
git clone을 사용해 코드를 불러와 Makefile로 직접 도커 이미지를 생성하는 과정에 yml파일을 설정해줌으로 해결했다.
ps. Makefile에서 yml을 직접 echo를 이용해 집어넣어 주는 방식인 거 같다.

연결은 되지만 ffmpeg이 즉시 꺼지는 문제

이 문제는 ffmpeg 스트리밍 실행시 400에러와 함께 rtsp서버에 올라가지도 않는 현상과 같이 일어났는데 아마 rtsp-simple-server 내부의 어떤 파일이 깨지거나 했을 문제였을거라 생각한다. 다시 git clone을 진행해 해결했다.

make run 빌드중 계속 실패하는 문제

Makefile로 인해 docker 처리를 하던 도중 에러가 발생했고 그 에러를 해결했음에도 make run을 입력하면 같은 에러로 계속 실패했었다. 이는 이미 빌드 중에 docker image나 container, volume이 생성되었고 이들을 캐시했으므로 발생하는 오류였다. 해결하기 위해 캐싱된 이미지와 컨테이너, 볼륨을 강제로 삭제했다.
(사실 도커 기본 지식이 있었다면 쉽게 해결했을 일이었다.)


적고나니 생각보다 적은 문제들이 자잘하게 일어난 것처럼 보이지만 실제론 에러가 에러를 낳고 한 문제들마다 많은 시간을 소모했다. 앞으로 똑같은 문제에 다시 당하고 싶지 않아 글을 남긴다.

profile
백엔드 개발자

0개의 댓글