web

ffmpeg 사용법

blackbearwow 2021. 2. 26. 02:11

html video태그에서 mp4파일이 재생되지 않는다면 코덱이 문제인 것이다. mp4파일은 비디오 코덱과 오디오 코덱으로 나뉘고, 비디오 코덱도 여러가지이다. 

비디오 코덱을 h264로, 오디오 코덱을 AAC로 해야지 video tag에서 정상적으로 동작한다.

 

ffmpeg

ffmpeg -i input.mkv output.mp4

cli로 간단히 mp4파일을 만들 수 있다. 이때 비디오 비트레이트와 오디오 비트레이트는 알아서 조정된다.

 

ffmpeg 옵션들

 

비디오 인코딩 옵션 -c:v
복사 -c:v copy
cpu로 h264 인코딩 -c:v libx264
gpu로 h264 인코딩 - nvidia -c:v h264_nvenc
gpu로 h264 인코딩 - intel -c:v h264_qsv
gpu로 h264 인코딩 - amd -c:v h264_amf

 

오디오 인코딩 옵션 -c:a
복사 -c:a copy
cpu로 acc 인코딩 -c:a aac

 

고정 비트레이트 설정  
비디오의 비트레이트 5M/s로 지정 -b:v 5M
오디오의 비트레이트 192kb/s로 지정 -b:a 192k

파일 크기 측면에서는 -crf(가변 비트레이트 방식)이 효율적이다.

가변 비트레이트 설정(비디오만) -crf
고화질(저손실) -crf 20
중간(기본값) -crf 23
저화질 -crf 25

 

같은 비트레이트에 품질 결정 -preset
인코딩 시간은 짧지만 더 나쁜 품질 -preset fast
보통의 품질(기본값) -preset medium
시간이 오래걸리지만 더 나은 품질 -preset slow

 

화질 변경 -vf scale
SD -vf scale= 854×480
HD -vf scale=1280×720
FHD -vf scale=1920:1080
QHD -vf scale=2560×1440
UHD -vf scale=3840×2160

 

ffmpeg -i input.mkv -c:v h264_amf -crf 20 -preset slow -c:a aac -b:a 192k output.mp4

amd gpu로 h264, 고화질 비디오, 더 나은 품질, 오디오를 AAC, 192kbps로 인코드

 

ffmpeg -i input-video.avi -vn -acodec copy output-audio.m4a

video에서 음성만 추출하고싶다면 위 명령어를 사용하면 된다.

 

ffmpeg -i inputVideo.mp4 -ss 00:00:01 -frames:v 1 thumbnail.jpg

1초에서 섬네일 이미지를 생성

 

ffmpeg -i input-video.avi -i thumbnail.jpg -map 0:a -map 1 -c:a copy -c:v mjpeg -metadata:s:v title="Album cover" -disposition:v attached_pic output-audio.m4a

video에서 음성만 추출하되 섬네일도 지정

 


https://ffmpeg.org/ffmpeg.html

-