라즈베리파이(이하 RPI) 에서도 ffmpeg 을 쓰는데 뭔가 성능이 안나온다는 친구의 말을 듣고 일단 ffmpeg 을 RPI 개발 환경에서 빌드 할 수 있도록 간단히 꾸며 보았습니다.
단, 이 방법은 이미 다른 cross-platform 을 쓰고 있는 상태에서 빌드 하는 환경을 만들기 위해 단순히 ffmpeg 빌드를 위해 몇가지 스크립트를 추가해서 사용하는 방법을 설명 하고 있습니다.
먼저 RPI 빌드 툴을 받아야 하므로 아래처럼 했습니다. (이미 있으신 분들은 skip)
- 먼저 개인적으로 모든 소스를 밀어 넣는 Project 밑에 raspberrypi 디렉터리를 하나 만들었습니다.
- github 에서 RPI toolkit 을 clone 하여 tools 로 디렉터리가 만들어 지도록 합니다.
이로서 RPI 용 뭔가를 만들 준비는 완료 입니다. 참 쉽죠?
이제는 ffmpeg 을 내려 받습니다. ARM-v7 류에 오류 없이 잘 되는 버젼은 2.2 로 알고 있으므로 그냥 2.2 를 wget 으로 내려 받습니다!
wget http://ffmpeg.org/releases/ffmpeg-2.2.tar.gz
위 이미지 처럼 다 받아 지면 (금방 받아 집니다) 바로 tar 를 이용해서 압축을 해제 합니다.
setdev 파일은 무시 하세요~
targz -xf ffmpeg-2.2.tar.gz
혹시라도 압축이 풀리는 과정이 굳이 보고 싶으시다면 옵션 -xf 사이에 v 를 넣어서 -xvf 를 쓰셔도 됩니다. 하지만 그리 볼거 없으므로 생략 하시고 바로 ffmpeg-2.2 라는 디렉터리가 생성 되어 있고 안에 소스가 풀려 있는지 봅니다.
이제는 제가 준비한 압축 파일을 받은 다음 ffmpeg-2.2 디렉터리 안에 풀어 줍니다. 압축 파일을 풀면 2개의 파일이 나오는데 각각 다음과 같습니다.
- cfg4rspi.sh: RSPI 개발 환경에 맞게 configure 를 해 줍니다.
- mkffmpeglib.sh: 빌드 된 여러개의 a 라이브러리를 libffmpeg.a 로 뭉쳐 줍니다.
ffmpeg 의 경우 configure 만 잘 해 주면 그냥 make 해서 나오는 라이브러리를 쓰면 되는데, 이게 처음엔 따로 다 떨어져 있으므로 무척 귀찮습니다. 이걸 mkffmpeglib.sh 를 이용해서 하나로 묶어서 사용하면 편리 하므로 나중에 링크시 -lffmpeg 으로 지정만 해 주면 편리하게 사용할 수 있습니다.
단, 현재 cfg4rspi.sh 는 제가 대충 만든 환경에 기반을 하고 있기 때문에 쓰실 분 들은 아래 BASE_DIR 부분이나 따로 받으신 환경에 따라 반드시 수정 해야 합니다.
또한 현재 설정은 몇가지 민감한 라이센스 부분 (AC3 코덱 같은거) 과, 인코딩이 빠져 있거나 하므로 이 부분이 필요하신 분들은 필히 cfg4rspi.sh 를 수정해서 사용 해 주시길 바랍니다.
이로서 ffmpeg 라이브러리를 만들어 RSPI 에 쓰는데는 지장이 없을 듯 하며, configure 옵션에 NEON 과 ARM-V7-A 를 사용하도록 되어 있으니 이 부분이 변경되어야 한다면 cfg4rspi.sh 만 수정 해 편리하게 쓰시기 바랍니다.
스크립트 다운로드:
./cfg4rspi.sh 를 실행 하고 나서 문제가 없다면 바로 make 하신 다음, ./mkffmpeglib.sh 를 실행 해 주시면 됩니다.
옵션에 따라 mkffmpeglib.sh 를 수정해야 할 필요는 있습니다 (--disable 또는 --enable 에 따라)
만약 ffmpeg 이 필요하면 cfg4rspi.sh 안의 --disable-programs 가 포함된 라인을 지우시기 바랍니다.