Bite Bits/Raspberry Pi

Raspbian JESSIE 에서 libav 기능 사용해서 라이브 스트리밍 저장하기 (ffmpeg 대용)

상영 2017. 8. 9. 15:49

Windows OS 에서 ffmpeg 를 이용해 라이브 스트리밍을 저장하던 것을 raspbian 에서 실행하기 위해 ffmpeg 패키지를 검색해봤지만, 적당한 패키지가 검색되지 않는다.

( 관련 게시글 : http://blog.daum.net/to302/47 )


구글에 검색을 해봐도 ffmpeg 는 아직 raspbian 에서 패키지로 제공되지 않으니, libav-tools 패키지를 사용해보라는 답변만..

libav-tools 패키지를 설치하고 avconv 명령을 사용하면 ffmpeg 랑 동일한 기능을 제공한단다.

( 참고 : https://www.reddit.com/r/raspberry_pi/comments/48eo83/ffmpeg_for_raspbian_jessie/ )

libav 자체가 ffmpeg 에서 파생된 프로젝트니.. 뭐 비슷하겠지..


해서.. libav-tools 패키지를 설치해보기로 한다.


$ sudo aptitude install libav-tools


여기서 'Y' 를 살포시 타이핑 하면 관련 의존성 패키지들을 같이 좍좍 설치해간다.

의존성 패키지를 설치전에 미리 보려면,

$ aptitude show libav-tools


libav 관련 패키지들을 검색하려면,

$ aptitude search libav


설치를 마치고, avconv 명령어 확인해 보니, 옵션들이 ffmpeg 에서 본 것과 비슷하긴 하다.

$ avconv -h



그럼 이걸로 스트리밍 저장을 해볼까~?!!

테스트로 60초만 저장..


$ avconv -t 60 -i http://somedomain.kr/somepath/playlist.m3u8 myfile.mp3


흐흐.. 잘된다.. 


실행 중에 에러인듯한 메세지가 나오는데..

Continuity check failed for pid 0 expected 1  이렇게 시작하는 메세지..

찾아보니 그냥 무시해도 되는듯 하다.

(*참고 : https://squarepenguin.co.uk/forums/thread-503.html )


좀 더 편리하기 사용하기 위해서 쉘 스크립트를 만들어 놓자.

$ touch record_stream.sh

$ chmod a+x record_stream.sh

$ vi record_stream.sh


#!/bin/sh


dt=`date +%Y%m%d_%H%M`

/usr/bin/avconv -t 60 -i http://somedomain.kr/somepath/playlist.m3u8 /home/pi/Music/my_$dt.mp3


매시 0분에 cron 작업을 운영하기 위해 shell script 개선

(불필요한 시간엔 동작하지 않고, 저장은 1시간+1분 단위로)

2:00, 3:00, 4:00 엔  avconv 실행하지 않음


#!/bin/sh


h=`date +%H`

hour=`expr $h + 0`


if [ $hour -ge 2 -a $hour -le 4 ]

then

  echo "calm $hour" # calm

else

  #echo 'loud'

  dt=`date +%Y%m%d_%H%M`

  /usr/bin/avconv -t 3660 -i http://somedomain.kr/somepath/playlist.m3u8 /home/pi/Music/my_$dt.mp3

fi