ffmpeg 사용법 - 임베디드 플랫폼용으로 빌드하기

반응형

    개요

    ffmpeg은 오픈 소스 기반의 영상/음성 기록, 변환, 스트리밍 솔루션이며, 공식 웹사이트는 다음과 같습니다.

     

    본 글에서는 ffmpeg을 ARM 기반 임베디드 리눅스 플랫폼용으로 빌드하는 방법에 대해 소개합니다. 빌드 환경은 Ubuntu 16.04 리눅스입니다.

     

    크로스 컴파일러 설치

    Ubuntu 16.04 리눅스 환경에서, ffmpeg을 빌드하기 위한 크로스 컴파일러를 설치합니다. 여기서는 "arm-linux-gnueabihf-gcc"를 사용합니다.

    $ sudo apt update
    $ sudo apt install gcc-arm-linux-gnueabihf

     

    ffmpeg 소스패키지 다운로드

    https://www.ffmpeg.org/download.html에서 ffmpeg 소스패키지를 다운로드합니다. 본 글에서는 3.2 버전을 사용하며, 다운로드 파일명은 ffmpeg-3.2.tar.bz2 입니다.

     

    ffmpeg 소스패키지 빌드

    다운로드한 소스패키지의 압축을 해제합니다.

    $ tar jxf ffmpeg-3.2.tar.bz2
    $ cd ffmpeg-3.2

     

    소스패키지 폴더 내에 아래와 같은 make.sh(빌드명령을 기술한 쉘 스크립트) 파일을 생성합니다.

    • make.sh 내의 “CCPREFIX”는 각 개발 환경에 맞는 툴체인의 경로로 설정합니다.
    • “arm-linux-gnueabihf-“ 와 같은 컴파일러 프리픽스는 툴체인 환경에 맞게 작성합니다.
    #!/bin/sh
    
    export OUTPUTDIR=$(pwd)/output
    export CCPREFIX="arm-linux-gnueabihf-"
    ./configure --enable-cross-compile --cross-prefix=${CCPREFIX} --arch=armel --target-os=linux --prefix=$OUTPUTDIR
    make
    make install

     

    빌드 스크립트를 실행하여 소스패키지를 빌드합니다.

    $ sh make.sh

     

    빌드에 성공하면, 소스패키지 폴더 내에 output 폴더가 생성되고, 해당 폴더 내에 빌드 결과물(실행파일, 헤더파일, 라이브러리파일 등)들이 생성됩니다.

     

    ffmpeg 실행

    output/bin 폴더에 생성된 “ffmpeg“ 실행 파일을 타겟 플랫폼으로 다운로드합니다.

     

    ffmpeg 실행파일을 이용하여 CAM으로부터 RTSP를 통해 수신한 영상 데이터를 파일로 저장할 수 있으며, 실행 예는 다음과 같습니다.

    $ ./ffmpeg –t 20 –loglevel –8 –i rtsp://11.11.40.250:554/11 –vcodec copy –y video/video.avi

     

    ffmpeg 실행 시 각 옵션의 의미는 다음과 같습니다.

    • -t duration: ffmpeg이 실행되는 시간(초 단위)
      • ffmpeg은 명시된 duration 동안 실행된 후 종료됩니다. 즉, duration 초 동안 영상을 수신하여 파일에 저장합니다.
    • -loglevel level : ffmpeg이 실행되면서 출력하는 로그 메시지의 레벨을 설정합니다.
      • “-8”인 경우 아무 메시지도 출력하지 않습니다.
    • -i INPUT : 데이터 입력
      • 데이터 입력 소스를 명시합니다.
      • 본 예에서는 CAM의 RTSP 스트리밍 경로를 명시합니다.
    • -vcode codec : 출력의 코덱을 설정합니다.
      • copy: 입력 데이터의 코덱을 그대로 따르도록 설정. (코덱 변환이 일어나지 않음)
    • -y : 동일한 출력 명을 갖는 파일이 이미 있으면 물어보지 않고 해당 파일을 삭제 후 재 생성합니다.
    • video/video.avi : 출력파일 이름
    • 그 외에 다양한 옵션이 있으며, 다음 웹사이트에서 확인할 수 있습니다.

    파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

     

    댓글

    Designed by JB FACTORY