■ 동영상 변환
ffmpeg -y -i sample.avi -threads 0 -r 30 -sn -vcodec libx264 -preset medium -crf 23 -tune film -sws_flags lanczos -vf "scale=-1:720" -acodec libmp3lame -ac 2 -ab 128k -f mp4 output_sample.mp4
동영상의 높이720고정, 30프레임으로 변환해서 저장
■ 동영상 변환 (용량 줄일 때)
ffmpeg -y -i sample.mp4 -threads 0 -r 25 -sn -vcodec libx264 -preset medium -crf 30 -tune film -sws_flags lanczos -vf "scale=-1:720" -acodec libmp3lame -ac 2 -ab 64k -f mp4 output_sample.mp4
-r로 프레임과 -crf 값을 조정하여 용량을 줄인다. (디폴트는 23, 값이 낮을수록 고용량)
■ 오디오 포맷 변환
ffmpeg -i sample.ogg -b:a 320000 output_sample.mp3
320K MP3로 저장
■ 동영상에서 오디오만 뽑아내기
ffmpeg -i sample.mov -vn output_sample.mp3
ffmpeg -y -i sample.mov -vn -acodec libmp3lame -ac 2 -ab 192k -f mp3 "/output_dir\%%~ni.mp3"
■ 이미지 리사이징
fmpeg -i sample.jpg -vf scale=-1:1024 output_sample.png
■ 스트림 리스트 및 언어 보기
ffprobe -loglevel error -show_streams -show_entries "stream=index,codec_name,codec_type:stream_tags=language" -of csv "sample.mkv"
ex)
stream,0,hevc,video,1,0,0,0,0,0,0,0,0,0,0,0
stream,1,ac3,audio,0,0,0,0,0,0,0,0,0,0,0,0,eng
stream,2,aac,audio,1,0,0,0,0,0,0,0,0,0,0,0,kor
stream,3,subrip,subtitle,0,0,0,0,0,0,0,0,0,0,0,0,eng
■ 원하는 스트림만 변환하기
파라메터에 아래를 추가한다.
-map 0:0 -map 0:2
0:0은 영상, 0:2는 더빙된 한국어 사운드 스트림
■ 배치 (bash)
INPUT_DIR=/usbmem/complete/ffmpeg_converted
OUTPUT_DIR=/usbmem/complete
for i in *.avi; do
do name=`echo $i | cut -d'.' -f1`;
echo $name;
ffmpeg -y -i "${INPUT_DIR}/$i" -threads 0 -r 30 -sn -vcodec libx264 -preset medium -crf 23 -tune film -sws_flags lanczos -vf "scale=-1:720" -codec:a aac -b:a 128k -f mp4 "${OUTPUT_DIR}/${name}.mp4";
done
■ 배치 (Windows)
for /f "tokens=1 delims=." %a in ('dir /B *.avi') do ffmpeg -i "%a.avi" -threads 0 -r 30 -sn -vcodec libx264 -preset medium -crf 23 -tune film -sws_flags lanczos -vf "scale=-1:720" -codec:a aac -b:a 128k -f mp4 "%a.mp4"
■ 참조 웹페이지
https://namu.wiki/w/FFmpeg
http://louie0.tistory.com/145