- Published on
ffmpeg를 활용하여 스크립트로 영상 편집하기
- Authors
- Name
- 테크버킷
소개
ffmpeg은 비디오 및 오디오를 처리하기 위한 오픈 소스 도구입니다. ffmpeg을 사용하면 비디오 및 오디오 파일을 변환하고, 편집하고, 스트림으로 전송하고, 필터링하고, 캡처하고, 재생할 수 있습니다. 다양한 운영 체제에서 작동하며, 커맨드 라인 인터페이스를 통해 사용할 수 있습니다.
여기서 options는 ffmpeg 명령의 옵션을 지정합니다. -i는 입력 파일을 지정하고, input_file은 입력 파일의 경로와 이름입니다. output_file은 출력 파일의 경로와 이름입니다.
조금 어려워 보이기도 하고, 화려한 UI의 영상편집에 비해 퀄리티가 떨어지는게 아닐까 의심스러운 적도 있지만 곰플레이어, VLC Media Player, Youtube, OBS Studio, Vrew, 샤나인코더, 곰인코더 등의 잘 알려진 서비스에서도 내부적으로 ffmpeg을 사용하고 있습니다.
설치 방법
설치하고 사용하는 방법을 본격적으로 알아봅시다.
먼저 ffmpeg을 다운로드하고 설치하는 방법은 운영체제에 따라 다릅니다. 예를 들어, Linux에서는 패키지 관리자를 통해 설치할 수 있으며, Windows에서는 ffmpeg 공식 웹 사이트에서 바이너리 파일을 다운로드하고 설치합니다.
자주 사용되는 명령 모음
자주 사용되는 ffmpeg 명령을 소개합니다.
1. 기본 구문
ffmpeg 명령은 다음과 같은 구문으로 구성됩니다.
ffmpeg [options] -i input_file output_file
여기서 options
는 ffmpeg 명령의 옵션을 지정합니다. -i는 입력 파일을 지정하고, input_file
은 입력 파일의 경로와 이름입니다. output_file
은 출력 파일의 경로와 이름입니다.
2. 변환
예를 들어, MP4 비디오 파일을 AVI로 변환하려면 다음과 같이 입력합니다.
ffmpeg -i input.mp4 output.avi
3. 필터링
예를 들어, 비디오 파일에서 노이즈를 제거하고 밝기를 조정하려면 다음과 같이 입력합니다.
ffmpeg -i input.mp4 -vf "noise=alls=20, eq=brightness=0.1" output.mp4
4. 오디오 추출
예를 들어, 비디오 파일에서 오디오를 추출하려면 다음과 같이 입력합니다.
ffmpeg -i input.mp4 -vn -acodec copy output.mp3
5. 화면 녹화
예를 들어, 화면을 녹화하려면 다음과 같이 입력합니다.
ffmpeg -f x11grab -s 1920x1080 -i :0.0 -f pulse -i default output.mkv
위의 예제는 X11 디스플레이에서 1920x1080 해상도로 화면을 녹화하고, 기본 펄스 오디오 입력에서 오디오를 캡처하여 MKV 파일로 저장합니다.
이 외에도 ffmpeg을 사용하여 다양한 작업을 수행할 수 있습니다. 자세한 내용은 ffmpeg 공식 문서를 참조하십시오.
더 다양한 옵셤 및 응용 구문
입력 옵션
-f
: 입력 파일 형식을 지정합니다. -ss
: 입력 파일에서 시작 시간을 지정합니다. -t
: 입력 파일에서 지속 시간을 지정합니다. -r
: 입력 파일의 프레임 속도를 지정합니다. -loop_input
: 입력 파일을 반복해서 처리합니다.
출력 옵션
-f
: 출력 파일 형식을 지정합니다. -vcodec
: 비디오 코덱을 지정합니다. -acodec
: 오디오 코덱을 지정합니다. -b
: 비디오 및 오디오 비트레이트를 지정합니다. -s
: 비디오 해상도를 지정합니다. -ar
: 오디오 샘플 속도를 지정합니다.
필터링 옵션
-vf
: 비디오 필터를 지정합니다. -af
: 오디오 필터를 지정합니다. -ssim
: 비디오 품질을 비교하는 SSIM 필터를 적용합니다. -scale
: 비디오 크기를 조정합니다. -crop
: 비디오를 자릅니다.
기타 옵션
-y
: 출력 파일을 덮어쓸지 여부를 지정합니다. -loglevel
: 로그 레벨을 지정합니다. -threads
: 스레드 수를 지정합니다. -preset
: 인코딩 프리셋을 지정합니다. -vsync
: 비디오 동기화 방법을 지정합니다.
옵션별 예시
-f
: 입력 또는 출력 파일 형식을 지정합니다. 예시) mp4, avi, mp3, wav, mpeg, h264, aac, flv, mov.-ss
: 입력 파일에서 시작 시간을 지정합니다. 예시) 00:00:10, 120, 1:30:20.5.-t
: 입력 파일에서 지속 시간을 지정합니다. 예시) 00:00:30, 120, 1:30:20.5.-r
: 비디오 프레임 속도를 지정합니다. 예시) 30, 60, 24.-vcodec
: 비디오 코덱을 지정합니다. 예시) libx264, h264, libvpx, vp9, mpeg4, wmv2.-acodec
: 오디오 코덱을 지정합니다. 예시) aac, libmp3lame, opus, vorbis, pcm_s16le.-b
: 비디오 및 오디오 비트레이트를 지정합니다. 예시) 1M, 500K, 256K, 128K-s
: 비디오 해상도를 지정합니다. 예시) 1280x720, 640x480, 1920x1080.-ar
: 오디오 샘플 속도를 지정합니다. 예시) 44100, 48000, 22050.-vf
: 비디오 필터를 지정합니다. 예시) scale=640:360, crop=720:480:0:0, eq=contrast=1.2:brightness=-0.1.-af
: 오디오 필터를 지정합니다. 예시) volume=2.0, equalizer=f=1000:width_type=h:width=200:g=-6.0, highpass=f=200:width_type=h:width=100.-y
: 출력 파일을 덮어쓸지 여부를 지정합니다. 예시) y, n.-threads
: 사용할 스레드 수를 지정합니다. 예시) 1, 4, 8.-preset
: 인코딩 프리셋을 지정합니다. 예시) ultrafast, medium, slow, veryslow.-loglevel
: 로그 레벨을 지정합니다. 예시) quiet, panic, fatal, error, warning, info, verbose, debug, trace.
마무리
ffmpeg은 조금 어렵기도, 화려한 UI의 영상편집 툴에 비하면 여상의 퀄리티가 떨어지지 아닐까 의심스러울 때도 있지만, 잘 사용하면 유용합니다. 무거운 영상편집 프로그램을 열지 않고도 간단한 편집을 코드 몇줄로 마치거나, 여러 비디오 파일의 용량 최적화를 자동으로 하는 등 사용을 할 수가 있습니다. 읽어주셔서 감사합니다.