ffmpeg 사용 방법

 FFmpeg 사용 방법에 대해 설명해 드리겠습니다. 특히 제공해주신 예시를 바탕으로 비디오 자르기(트리밍)에 초점을 맞춰 설명하겠습니다.


FFmpeg 이란?

FFmpeg은 오디오 및 비디오 파일을 변환, 스트리밍, 녹화하는 데 사용되는 강력한 오픈 소스 명령줄 도구 모음입니다. 거의 모든 미디어 형식을 지원하며, 매우 다양한 기능을 제공합니다.

FFmpeg 설치 방법

FFmpeg을 사용하려면 먼저 시스템에 설치해야 합니다. 운영체제별 설치 방법은 다음과 같습니다.

1. Windows (윈도우)

  1. FFmpeg 다운로드: FFmpeg 공식 웹사이트 (ffmpeg.org)의 Download 페이지로 이동합니다.

  2. Windows 빌드 선택: Windows 아이콘 아래의 "Windows builds from gyan.dev" 또는 "Windows builds by BtbN" 링크를 클릭합니다.

  3. 압축 파일 다운로드: ffmpeg-*-full_build.zip과 같이 이름이 지정된 최신 버전을 다운로드합니다. (예: ffmpeg-n6.1.1-latest-full_build.zip)

  4. 압축 해제: 다운로드한 ZIP 파일을 원하는 위치에 압축 해제합니다. (예: C:\ffmpeg)

  5. 환경 변수 설정:

    • Windows 검색에서 "환경 변수"를 검색하여 "시스템 환경 변수 편집"을 엽니다.

    • "환경 변수(N)..." 버튼을 클릭합니다.

    • "시스템 변수" 섹션에서 Path를 찾아 선택한 후 "편집(I)..." 버튼을 클릭합니다.

    • "새로 만들기(N)"를 클릭하고 FFmpeg을 압축 해제한 폴더 내의 bin 폴더 경로를 추가합니다. (예: C:\ffmpeg\bin)

    • 모든 창에서 "확인"을 클릭하여 설정을 저장합니다.

  6. 설치 확인: 명령 프롬프트 또는 PowerShell을 열고 ffmpeg -version을 입력하여 FFmpeg이 올바르게 설치되었는지 확인합니다. 버전 정보가 표시되면 성공입니다.

2. macOS (맥)

macOS에서는 Homebrew를 사용하여 쉽게 설치할 수 있습니다.

  1. Homebrew 설치 (설치되어 있지 않다면): 터미널을 열고 다음 명령어를 입력합니다.

    Bash
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  2. FFmpeg 설치: Homebrew가 설치된 후 다음 명령어를 입력합니다.

    Bash
    brew install ffmpeg
    
  3. 설치 확인: 터미널에서 ffmpeg -version을 입력하여 FFmpeg이 올바르게 설치되었는지 확인합니다.

3. Linux (리눅스 - Ubuntu/Debian 기준)

대부분의 리눅스 배포판에서는 패키지 관리자를 통해 FFmpeg을 설치할 수 있습니다.

  1. 패키지 목록 업데이트:

    Bash
    sudo apt update
    
  2. FFmpeg 설치:

    Bash
    sudo apt install ffmpeg
    
  3. 설치 확인: 터미널에서 ffmpeg -version을 입력하여 FFmpeg이 올바르게 설치되었는지 확인합니다.


FFmpeg 기본 사용법 (비디오 자르기 예시)

FFmpeg 명령어는 일반적으로 다음과 같은 구조를 가집니다.

ffmpeg [전역 옵션] [입력 옵션] -i [입력 파일] [출력 옵션] [출력 파일]

제공해주신 예시를 바탕으로 비디오 자르기 명령어를 자세히 설명해 드리겠습니다.

예시 명령어:

Bash
ffmpeg -i flutter_chatting_exacode_1.mp4 -ss 00:00:00 -t 00:05:00 -c copy output_first_half.mp4
ffmpeg -i flutter_chatting_exacode_1.mp4 -ss 00:05:00 -t 00:05:00 -c copy output_second_half.mp4

이 명령어들은 flutter_chatting_exacode_1.mp4라는 원본 비디오 파일을 두 개의 약 5분짜리 비디오로 나누는 작업을 수행합니다.

명령어 구성 요소 설명:

  • ffmpeg: FFmpeg 프로그램을 실행하는 명령어입니다.

  • -i flutter_chatting_exacode_1.mp4:

    • -i: 입력(input) 파일을 지정하는 옵션입니다.

    • flutter_chatting_exacode_1.mp4: 처리할 원본 비디오 파일의 이름입니다. 이 파일이 현재 명령어를 실행하는 디렉토리에 있거나, 파일의 전체 경로를 지정해야 합니다.

  • -ss [시작 시간]:

    • -ss: 자르기를 시작할 시간을 지정하는 옵션입니다.

    • 시간 형식은 HH:MM:SS (시:분:초) 또는 초 단위(예: 300은 5분)로 지정할 수 있습니다.

    • 00:00:00: 첫 번째 도막은 비디오의 시작(0초)부터 시작합니다.

    • 00:05:00: 두 번째 도막은 비디오의 5분 지점부터 시작합니다.

  • -t [지속 시간]:

    • -t: 자를 비디오의 지속 시간(길이)을 지정하는 옵션입니다.

    • 시간 형식은 -ss와 동일하게 HH:MM:SS 또는 초 단위로 지정할 수 있습니다.

    • 00:05:00: 두 도막 모두 5분 길이로 잘라냅니다.

  • -c copy:

    • -c: 코덱(codec)을 지정하는 옵션입니다.

    • copy: 이 옵션은 비디오와 오디오 스트림을 재인코딩하지 않고 원본 그대로 복사하도록 지시합니다.

      • 장점: 매우 빠르고, 화질 손실이 전혀 없습니다.

      • 단점: 정확한 프레임 단위로 자르지 못할 수 있습니다. FFmpeg은 일반적으로 키프레임(keyframe) 단위로 자르기 때문에, 지정한 시작 시간과 정확히 일치하지 않고 가장 가까운 키프레임에서 시작될 수 있습니다. 또한, -t 옵션이 아닌 -to (종료 시간) 옵션과 함께 사용하면 문제가 발생할 수 있습니다. 단순 자르기에는 -ss-t 조합이 가장 안전합니다.

  • output_first_half.mp4 / output_second_half.mp4:

    • 생성될 출력 파일의 이름입니다. 이 이름으로 새로운 비디오 파일이 생성됩니다.


추가적인 FFmpeg 활용 팁

  • 정확한 자르기 (재인코딩 포함): -c copy를 사용하지 않고 특정 코덱을 지정하면 (예: -c:v libx264 -c:a aac) 정확한 프레임 단위로 자를 수 있지만, 재인코딩 과정에서 시간이 오래 걸리고 화질 손실이 발생할 수 있습니다.

  • 종료 시간 지정 (-to): -ss와 함께 -to [종료 시간] 옵션을 사용하여 특정 시간까지 자를 수도 있습니다.

    • 예: ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:30 output.mp4 (1분부터 2분 30초까지)

  • 파일 형식 변환:

    • ffmpeg -i input.mp4 output.avi (MP4를 AVI로 변환)

  • 비디오 크기 조절:

    • ffmpeg -i input.mp4 -vf scale=640:-1 output_640.mp4 (너비를 640px로, 높이는 비율 유지)

  • 오디오 추출:

    • ffmpeg -i input.mp4 -vn output.mp3 (비디오 스트림 제거하고 오디오만 MP3로 추출)

  • 이미지에서 비디오 생성:

    • ffmpeg -framerate 10 -i image%03d.png output.mp4 (10fps로 image001.png, image002.png... 이미지들을 비디오로)


FFmpeg은 매우 강력하고 다양한 기능을 제공하므로, 더 복잡한 작업이 필요할 경우 FFmpeg 공식 문서나 온라인 튜토리얼을 참고하시는 것을 추천합니다.

댓글 쓰기

0 댓글