2020.04.23 해결 !!!
시놀로지의 도커(Docker)에 우분투(Ubuntu)를 설치하고, 우분투 안에서 ffmpeg를 스케줄러로 작동시켜서 예약녹음 하는 것으로 문제 해결! 세팅은 끝났다. 당분간은 시놀로지 자체 스케줄러로 녹음하고 동시에 우분투에서도 녹음해서 1달정도 테스트삼아 돌려보기로 함.
https://vesselor.tistory.com/68
어쨌든, 도커에서 ffmpeg를 돌리는 방법까지는 생각하고 진행이 안되서 걍 냅두다가, 시놀로지 안에 vm을 설치하고 윈도우10을 구동할 수 있으면, 우분투도 설치해서 그 안에서 돌리면 된다는 생각을 왜 못했을꼬... 항상 문제가 안 풀릴땐 발상의 전환이 필요하다.
2020.04.13 잠정적인 해결 → 실패
아래에서 적은 모든 방법은 의미 없었던듯, 우선 저장되는 파일명을 영문으로 수정하니 지난 주말에 녹음이 매우 잘 되어 있는 걸 알 수 있었다. 시놀로지와 관련된 웬만한 것들은 앞으로 영문으로 하자!
2020.04.10 오늘도 실패. 승난다.
금요일을 즐기고 난 뒤 확인하니, 역시나 3분 녹음되고 종료되어 로그를 살펴보니 3분 57초만 녹음되어있는 걸 알 수 있다.
차분히 하나씩 분석을 해본다. 오늘은 많이 승나지 않는다.
1. 녹음이 대체로 잘 되던 시점과의 다른점은 rclone을 통해 gdrive로 1시간 단위로 주기적인 업로드를 진행하고 있다는 것.
2. 그러나, 현재 스케줄러를 사용해서 아침 7시(20분간), 오후 6시(2시간)에 2회 녹음 중인데, 아침 7시에 녹음되는 20분간의 라디오는 끊기지 않고 녹음이 잘 저장되어 있음.
3. rclone은 주기적으로 백그라운드에서 돌아가고 있었으므로, 아침 7시에만 rclone의 영향을 받았다고 보기에는 어렵고, 로그를 살펴봐도 연결고리를 찾을 수 없으므로, rclone의 업로드 대역폭 점유로 인한 것은 아니라고 잠정 결론.
4. 아침 7시 라디오 파일명은 영문으로, 오후 6시 라디오 파일명은 한글로 저장하고 있으나 녹음 잘 되던 시점에는 한글파일명으로도 잘 저장되었음. 그러나 우선 변수를 없애기 위해서 영문으로 저장되도록 명령문을 수정.
5. rtmp://로 시작하는 스트리밍 소스를 제공하는 소스가 좋지 않은 경우 끊기는 것 아닐지? 현재 mbc 라디오의 충북 주소를 사용중이므로 다른 주소가 필요함. mbc 서울/경기/인천의 경우 secure된 주소를 사용하여 추출이 불가함. 주소 추출 관련 포스팅을 찾아보았으나, 오래된 방법이라 주소 추출이 안되는 듯.
해결방법에 대한 고민 및 하나하나 해볼 것.
1. 예약 작업을 스케줄러에 직접 등록하는 방식이 문제일 수 있으므로, 스크립트를 별도의 파일로 만들어서 특정위치에 저장해두고, 스케줄러에서는 해당 파일을 실행하는 방법으로 변경 하는 방법.
아래 블로그를 참고해서 시도 해볼만 하다.
2. 시놀로지에 설치된 ffmpeg 자체가 불안정 하므로 rtmpdump를 활용하여 녹음한다. 좋은 대안이긴 하지만, 설명된 링크들이 오래되어 었고, debian chroot를 설치하는 방법이 쉽지 않은 듯.
https://www.clien.net/service/board/cm_nas/13070743
https://www.clien.net/service/board/cm_nas/13073512
https://going-together.tistory.com/17
https://cafe.naver.com/synologynas/83232
https://www.clien.net/service/board/lecture/7778516
3. 도커를 활용해보면 어떨까 싶어서 일단 검색해본다. 실은 도커 개념도 없거니와, 프로그래밍 개념은 거의 없는 상태인 관계로 하나하나 부딪혀가면서 해본다. jrottenbert/ffmpeg를 설치해서 띄워놓고 불러와서 쓰는 방법은 어떨까 싶지만 그 정도 수준은 안된다.
Docker 실행 후 레지스트리 → ffmpeg 검색
jrottenbert/ffmpeg 더블클릭 → latest 선택 → 이미지 탭에서 설치상태 확인
putty로 ssh 접속 후 root 권한 상태에서 → docker pull jrottenberg/ffmpeg 입력 후 엔터
~~ 머리가 뽀사질것 같아 여기서 잠시 중단.
2020.04.09 불가능 결론.
쒸익~쒸익~
포스팅 미리 적어두고 테스트 해본 다음에 보완할랬는데, 아래 명령어는 demux 명령어라서(?) 옵션이 안먹히는 것 같다. 아래와 같은 에러 로그만 남겨두고, 방법을 찾은 뒤 다시 보완.
ffmpeg version 2.7.1 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.3 (crosstool-NG 1.20.0) 20150311 (prerelease)
configuration: --prefix=/usr --incdir='${prefix}/include/ffmpeg' --arch=i686 --target-os=linux --cross-prefix=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu- --enable-cross-compile --enable-optimizations --enable-pic --enable-gpl --enable-shared --disable-static --enable-version3 --enable-nonfree --enable-libfaac --enable-encoders --enable-pthreads --disable-bzlib --disable-protocol=rtp --disable-muxer=image2 --disable-muxer=image2pipe --disable-swscale-alpha --disable-ffserver --disable-ffplay --disable-devices --disable-bzlib --disable-altivec --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --disable-vaapi --disable-decoder=amrnb --disable-decoder=ac3 --disable-decoder=ac3_fixed --disable-encoder=zmbv --disable-encoder=dca --disable-encoder=ac3 --disable-encoder=ac3_fixed --disable-encoder=eac3 --disable-decoder=dca --disable-decoder=eac3 --disable-decoder=truehd --cc=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ccache-gcc --enable-yasm --enable-libx264 --enable-encoder=libx264
libavutil 54. 27.100 / 54. 27.100
libavcodec 56. 41.100 / 56. 41.100
libavformat 56. 36.100 / 56. 36.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 16.101 / 5. 16.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
libpostproc 53. 3.100 / 53. 3.100
Unrecognized option 'recover_any_error'.
Error splitting the argument list: Option not found
기존의 포스팅의 내용대로, 예약녹음이 매우 만족스럽게 잘 진행되는 듯 하다가 어느 날에는 한 번씩 중간에 녹음이 끊기는 경우가 발생해서 이빠진 것처럼 하루를 놓치는 경우가 있다. 1분정도 녹음하다 중단되거나, 20분만 녹음하다가 중단되는 경우 등등 1시간 이상 녹음하다가 중단되는 경우는 발생하지 않는 것으로 보인다.
https://vesselor.tistory.com/40
2020년 1월 녹음분 : 정상
2020년 2월 녹음분 : 비정상
* 파일이 없는 날은, 헤놀을 꺼둔 날. 2월 16일 파일은 한 10초쯤 녹음된 것 같다.
2020년 3월 녹음분 : 비정상
* 파일이 없는 날은, 헤놀을 꺼둔 날. 3월 26일, 29일도 마찬가지로 녹음되다가 중단. 용량이 제각각.
원인분석을 위해 구글링을 해보니 "패킷 드랍"이 생기는 경우 중단되는 케이스가 있다는 것을 확인.
Packt drop으로 다시 검색해보니, 내가 겪는 이슈와 비슷한 질문글을 발견. 나도 2시간동안 지속해서 녹음을 하고 싶고, 중간에 스트리밍 서버가 오류가 나거나, 시놀의 인터넷이 잠시 끊기는 경우에도 무음이거나 잡음 상태로 계속해서 녹음을 하다가, 정상 상태로 복구되면 그 구간부터 계속해서 녹음을 지속하고 싶은것. 극단적인 경우 2시간 짜리 무음 오디오 파일이 생성되더라도 말이다.
https://stackoverflow.com/questions/7441686/recording-a-mp3-stream-with-ffmpeg-and-drop-outs
결국, ffmpeg 메뉴얼로 돌아간다. 역시 기초가 중요해.
https://ffmpeg.org/ffmpeg-formats.html#segment_002c-stream_005fsegment_002c-ssegment
fifo 와, drop packet 이 무슨 관련이 있어서 카테고리가 묶여있는지는 모르겠지만 일단 study.
아래 예시에 마침 적당하게 failure 발생 시, 매 초 단위로 indefinitely 하게 attempt 한다고 되어있는 느낌(?)이다.
근데 예제 사용된 옵션말고, 메뉴얼에서 가장 맘에 드는 옵션이 있다. attempt_recovery 옵션을 override한느 무쌍 찍는 옵션이다.
recover_any_error bool
If set to 1 (true), recovery will be attempted regardless of type of the error causing the failure. By default this
option is set to 0 (false) and in case of certain (usually permanent) errors the recovery is not attempted even
when attempt_recovery is set to 1.
기존 포스팅에서 추가했던, 옵션들을 삭제하고 recover_any_error 1 옵션만 추가하기로 한다.
ffmpeg -re -i -recover_any_error 1 "스트리밍 주소" -vn -acodec copy -t 300 "/volume1/경로/$(date +'파일명_'%Y%m%d-%H%M).m4a"
'- Synology' 카테고리의 다른 글
ffmpeg 동영상 여러개 동시 변환 - 윈도우10 (9) | 2020.04.24 |
---|---|
시놀로지 - 유튜브 재생목록 통째로 다운받기! (4) | 2020.04.22 |
레노버 Think Centre M73 헤놀로지 설치 (0) | 2020.04.06 |
시놀로지 RSS 정규식 구문 추가 공부 (0) | 2020.03.30 |
시놀로지 RSS 토렌트 자동 다운 받기 (2/2) (4) | 2020.03.24 |
댓글