본문 바로가기

Developement/C/C++

리눅스에서 RaspberryPi 를 위한 ffmpeg 라이브러리 빌드 하기.

 라즈베리파이(이하 RPI) 에서도 ffmpeg 을 쓰는데 뭔가 성능이 안나온다는 친구의 말을 듣고 일단 ffmpeg 을 RPI 개발 환경에서 빌드 할 수 있도록 간단히 꾸며 보았습니다.

 단, 이 방법은 이미 다른 cross-platform 을 쓰고 있는 상태에서 빌드 하는 환경을 만들기 위해 단순히 ffmpeg 빌드를 위해 몇가지 스크립트를 추가해서 사용하는 방법을 설명 하고 있습니다.


 먼저 RPI 빌드 툴을 받아야 하므로 아래처럼 했습니다. (이미 있으신 분들은 skip)



  1. 먼저 개인적으로 모든 소스를 밀어 넣는 Project 밑에 raspberrypi 디렉터리를 하나 만들었습니다.
  2. 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 만 수정 해 편리하게 쓰시기 바랍니다.


스크립트 다운로드:

ffmpeg-user-scripts.tar.gz



 ./cfg4rspi.sh 를 실행 하고 나서 문제가 없다면 바로 make 하신 다음, ./mkffmpeglib.sh 를 실행 해 주시면 됩니다.

옵션에 따라 mkffmpeglib.sh 를 수정해야 할 필요는 있습니다 (--disable 또는 --enable 에 따라)

 만약 ffmpeg 이 필요하면 cfg4rspi.sh 안의 --disable-programs 가 포함된 라인을 지우시기 바랍니다.