/
ffmpeg - stream audio/video encoder/conveter

ffmpeg - stream audio/video encoder/conveter

개요

패브리스 밸라드 가 개발한 오픈소스 비디오/오디오 변환기 및 레코더.

대부분의 플레이어가 사용하고 있으며 라이선스는 LGPL 이나 일부 모듈이 GPL 을 사용하고 있음.

ffmpeg 를 사용하여 개발시 LGPL 을 만족하려면 https://www.ffmpeg.org/legal.html 에 따라 작업해야 함.

Linux Build

  1. 개발 툴 설치

    sudo yum install yasm gcc
  2. Source download
  3. LGPL 로 사용하려면 --enable-gpl --enable-nonfree 2개의 옵션을 절대 사용하면 안 됨.

    ./configure --enable-gpl --enable-nonfree
  4. configure 로 빌드 환경 구성

    ./configure --enable-shared
  5. 빌드

    make

Command line 에서 사용

ffmpeg 주요 옵션














사용 예제

ffmpeg -i source_media.mp4 -y -c:v libx264 -subq 5 -flags global_header -trellis 0 -refs 1 -level 30 -coder 0 -bf 0 -weightp 0 -threads 12 -b:v 1007k  -c:a aac -ab 128k -ac 2 outout.mp4


https://stackoverflow.com/questions/27568254/how-to-extract-1-screenshot-for-a-video-with-ffmpeg-at-a-given-time


동영상 포맷 변경

mov to mp4

ffmpeg -i movie.mov -vcodec copy -acodec copy out.mp4
폴더내 모든 mov 를 mp4 로 변경
for i in *.mov; do f=`basename "$i" .mov`;ffmpeg -i "$i" -vcodec copy -acodec copy "$f.mp4";done


m4v

ffmpeg -i input.m4v out.mp4


개발 언어에서 사용

ffmpeg 는 C 언어로 된 SDK 를 제공하며 다양한 언어에 바인딩 되어 있음.

PHP

ffmpeg C library 를 바인딩한 것은 아니며 fork() 로 ffmpeg 프로세스 호출


go

go 는 ffmpeg Library 를 직접 binding 한 제품이 많으므로 fork 방식의 php 라이브러리보다는 성능이 훨등히 우수할 것으로 판단되며 fork 방식을 사용하더라도 backend 에 적합한 go 의 특성상 go 로 제작하는 것이 좋음 

Ref


Related content

WSL 개발 환경을 위한 git 파일 별로 CR/LF 설정하기
WSL 개발 환경을 위한 git 파일 별로 CR/LF 설정하기
More like this
XML 파일을 검증해주고 예쁘게 포맷팅해주는 xmllint
XML 파일을 검증해주고 예쁘게 포맷팅해주는 xmllint
More like this
mbed TLS(구 polarssl) 빌드하기
mbed TLS(구 polarssl) 빌드하기
More like this
OpenSSL Windows 에서 Visual Studio 로 빌드
OpenSSL Windows 에서 Visual Studio 로 빌드
More like this
Linux Command line 에서 PDF 파일을 이미지로 저장하기
Linux Command line 에서 PDF 파일을 이미지로 저장하기
More like this
zlib windows 에서 빌드하기
zlib windows 에서 빌드하기
More like this