/
ffmpeg - stream audio/video encoder/conveter
ffmpeg - stream audio/video encoder/conveter
개요
패브리스 밸라드 가 개발한 오픈소스 비디오/오디오 변환기 및 레코더.
대부분의 플레이어가 사용하고 있으며 라이선스는 LGPL 이나 일부 모듈이 GPL 을 사용하고 있음.
ffmpeg 를 사용하여 개발시 LGPL 을 만족하려면 https://www.ffmpeg.org/legal.html 에 따라 작업해야 함.
Linux Build
개발 툴 설치
sudo yum install yasm gcc
- Source download
LGPL 로 사용하려면 --enable-gpl --enable-nonfree 2개의 옵션을 절대 사용하면 안 됨.
./configure --enable-gpl --enable-nonfree
configure 로 빌드 환경 구성
./configure --enable-shared
빌드
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
동영상 포맷 변경
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
- https://ffmpeg.org/ffmpeg.html
- https://www.ostechnix.com/20-ffmpeg-commands-beginners/
- https://www.catswhocode.com/blog/19-ffmpeg-commands-for-all-needs
- https://www.tecmint.com/ffmpeg-commands-for-video-audio-and-image-conversion-in-linux/
, multiple selections available,
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