개발

ffmpeg 기반 영상 편집 명령어

freshplay 2023. 8. 15. 16:36

[원본 퀄리티 유지 옵션] - ffmpeg high quailty video & audio

 -c:v libx264 -c:a pcm_s16le  또는  -c:v copy -c:a pcm_s16le

 

-c:v copy option copies the video stream without re-encoding it. The -c:a pcm_s16le option converts the audio stream to uncompressed PCM audio with 16-bit depth and little-endian byte order. This ensures the best audio quality possible.

 

[영상 해상도 변경하기 - (1) ] - rescale video

ffmpeg -i 4_vid_org.avi -vf "scale=1920x1080"  -c:v libx264 -c:a pcm_s16le 4_vid.avi

 

[영상 해상도 변경하기 - (2) ] - rescale video with black part

ffmpeg -i test.avi -vf "pad=1920:1080:(ow-iw)/2:(oh-ih)/2:black" test_1920x1080.avi

(출처: https://m.blog.naver.com/chandong83/221677551117 )

 

[영상 fps 변경하기]

ffmpeg -i input_v.avi -filter:v fps=23.98 -c:v libx264 -c:a pcm_s16le out_v.avi

 

[일정 시간 동안 무음 오디오 만들기] - silent audio making by time
ffmpeg -f lavfi -i anullsrc=r=11025:cl=mono -t 7 -acodec aac silent.m4a

: 7초 동안 무음인 silent.m4a 파일 생성

[단일 이미지로 영상 만들기 (audio 미포함)] - make video with single image by time, fps, non-audio

ffmpeg -framerate 23.98 -loop 1 -i png_in.PNG -pix_fmt yuv420p -t 7 png_out.avi

: png_in.PNG23.98 fps7초간 유지되는 영상 png_out.avi 생성

 

[단일 이미지와 오디오 파일로 영상 만들기] - make video with one image and audio
ffmpeg -framerate 23.98 -loop 1 -i png_in.PNG -i silent.m4a -c:v libx264 -tune stillimage -c:a aac -b:a 192k -vf "scale='iw-mod(iw,2)':'ih-mod(ih,2)',format=yuv420p" -shortest -movflags +faststart png_out.avi

 

[여러 개의 영상 합치기] - 해상도, 속도 무관 (단, 영상 quailty가 낮아진다는 단점 있음)

ffmpeg -i video1.avi -i video2.avi -filter_complex "[0:v]scale=1920x1080,setpts=PTS-STARTPTS[v0]; [1:v]scale=1920x1080,setpts=PTS-STARTPTS[v1];[v0][0:a][v1][1:a] concat=n={2}:v=1:a=1[v][a]" -map "[v]" -map "[a]" vid_out.avi

 

 

[영상 볼륨 조정] - volume up the sound of video

ffmpeg -i 4_vid_org.avi -c:v libx264 -c:a pcm_s16le -filter:a "volume=2" -y 4_vid.avi

 

 

 

[영상 배속 조정]

- set_pts (영상 속도 조정 옵션)

To double the speed of the video with the setpts filter, you can use:
(https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video)

ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv

 

 

 

 

[ffmpeg 옵션별  의미] (출처: https://peche326.tistory.com/58 )

ffmpeg -y ⓐ -i ⓑ -acodec ⓒ -ab ⓓ -ar ⓔ -ac ⓕ -b:a ⓖ -vcodec ⓗ -level ⓘ -b:v ⓙ
-r ⓚ -s ⓛ -threads ⓜ -strict experimental ⓝ ⓞ
 
ⓐ -y : 출력파일을 쓸 때 같은 이름의 파일이 있어도 확인없이 덮어쓰기를 하겠다는 의미.
ⓑ -i <입력파일이름> : 변환할 원본 동영상 파일 이름을 지정.
ⓒ -acodec <오디오코덱> : 오디오 코덱을 지정한다. 여기서는 aac 로 함.
ⓓ -ab <숫자> : 오디오 비트레이트를 지정한다.
ⓔ -ar <숫자> : 오디오 샘플링 레이트를 지정한다.
ⓕ -ac <숫자> : 오디오 채널을 지정한다.
ⓖ -b:a <숫자> : 오디오 비트레이트를 지정한다.
ⓗ -vcodec <비디오코덱> : 비디오 코덱을 지정한다. 여기서는 libx264 로 함. (H.264 코덱)
ⓘ -level <숫자> : Baseline 값. 30이면, Baseline 3.0
ⓙ -b:v <숫자> : 비디오 비트레이트를 지정한다.
ⓚ -r <숫자> : 출력 동영상 프레임 레이트를 지정한다.
ⓛ -s <숫자> : 화면 크기, 해상도를 지정한다. 원본 해상도보다 크게 할 경우 확대되서 나온다.
프리셋처럼 미리 지정된 문자가 있어서 직접 해상도를 지정하지 않아도 된다.
ex) vga – 640 x 480, sxga 1280 x 1024, wvga 852 x 480, hd720 – 1280 x 720 등
ⓜ -threads <숫자> : 쓰레드수를 지정한다. 속도 향상을 위해 멀티쓰레드를 지정해줄 수 있다.
반드시 CPU 코어 갯수와 일치시킬 필요는 없지만, 보통은 코어 갯수에
맞춘다.
ⓝ -strict experimental : 옵션의 엄격함을 느슨하게 풀어주는 옵션
ⓞ <출력파일이름> : 변환하여 저장할 동영상 파일 이름을 지정한다.