예를 들어, 이런 명령을 내렸다고 한다.
ffmpeg -rtsp_transport tcp -i rtsp://xxx.xxx.xxx.xxx -t 20 -codec:a copy -vn -metadata title="Test" /tmp/abcdeu.m4a
위 명령은, rtsp: 로 시작하는 인터넷 방송을, 20초간 복사한 뒤, /tmp/abcdeu.m4a
라는 파일로 복사하라는 뜻이 된다.
헌데.. 명령이 끝난 뒤 /tmp 에 가보면, 저 파일이 없다.
물론, 데비안/우분투 계열에서 apt 로 ffmpeg 를 설치했을 때는 이렇지 않다.
이 문제는 snap 으로 ffmpeg 를 설치했을 때만 발생한다. 현재 안정판인 4.1.4 는 물론이고, 개발 최신판(Edge)인 4.2.2 에서도 동일한 현상이 나타난다.
음??
여기서, 동일한 명령을 다시 한번 내려보면?
ffmpeg -rtsp_transport tcp -i rtsp://xxx.xxx.xxx.xxx -t 20 -codec:a copy -vn -metadata title="Test" /tmp/abcdeu.m4a
살짝 이상한 오류가 튀어 나온다.
... 전략... File '/tmp/abcdeu.m4a' already exists. Overwrite ? [y/N]
틀림없이 /tmp 에는 저 파일이 없는데, 파일이 존재한다고 하며, 덮어쓸 지를 물어온다.
이상하여, 검색을 해봤다. (구글이 아니라, 파일 검색.)
sudo find / -iname 'abcdeu.m4a' /tmp/snap.ffmpeg/tmp/abcdeu.m4a
앗!!!
저게 뭐야?
/tmp/abcdeu.m4a
라고 지정해줬지만, 그게 snap 하의 ffmpeg 에서는 /tmp/snap.ffmpeg/tmp/abcdeu.m4a
로 인식이 돼 버렸다.
게다가, /tmp/snap.ffmpeg 는 root 소유다. 일개 일반 사용자인 나는 들어갈 수 조차 없다.
이 문제가 생각보다 복잡한 모양이고, 아마도 snap 의 제작 의도, 이른바 철학(?)까지 건드리는 모양이다.
관련된 글을 몇개 찾긴 했는데, 명확한 해법, 또는 우회법등은 보이지 않는다.
꼭 /tmp 를 써야만 할 이유가 없다면, /home 디렉토리를 쓰면 문제는 해결된다.
즉,
ffmpeg -rtsp_transport tcp -i rtsp://new_iradio.ebs.co.kr:554/iradio/iradiolive_m4a -t 20 -codec:a copy -vn -metadata title="Test" ~/abcdeu.m4a
이런 식으로 하면, 사용자 홈디렉토리에 abcdeu.m4a 파일이 생긴다.
이거 알아내느라 또 허비한 시간이..
젠장!!