|  |  |  |  | ?

ffmpeg 사용법

1.1. 개요

[https]ffmpeg[] 은 여러가지 멀티미디어 포맷을 다루는 광범위한 라이브러리이자 코덱이고 도구입니다. 이를 사용하여 멀티미디어를 다양하게 다룰 수 있습니다.

Video/Audio Codec, Subtitle, Encapsulation/Container Format, Meta data, Color format/space, Display/Pixel/Input Aspect ratio, I(Intra)/P(Predictive)/B(Bidirectionally predictive) frame, Progressive(순차)/Interlaced(격행) scanning(주사방식) 등을 이해하시고 차이를 알고 계신다고 가정하고 설명합니다. (우리가 일반적으로 부르는 명칭과 표준 명칭 그리고 관습적인 명칭등이 달라서 각각의 구분이 모호한 경우를 이해할 수 있을 필요가 있다고 생각됩니다.)
  • Video Codec
    • MPEG1 video (ISO/IEC 11172-2)
    • MPEG2 video (ISO/IEC 13818-2, H.262)
    • MPEG4 video (ISO/IEC 14496-2, ASP)
    • H.264 video (ISO/IEC 14496-10, AVC)
    • WMV1 (Windows Media Video v7), WMV2 (Windows Media Video v8), WMV3 (Windows Media Video v9), WVC1 (Windows Media Video v9), ...
    • ...
  • Audio Codec
    • MP3 audio (MPEG 1/2 layer I/II/III)
      • MPEG1 Audio / MPEG2 Audio 라고도 하지만 일반적으로 그냥 MPEG Audio 또는 MP3 라고 부릅니다.
    • AAC (MPEG2 AAC)
      • MPEG2 Audio 라고도 하지만 일반적으로 AAC 라고 부릅니다.
    • HE AAC (MPEG4 AAC)
      • MPEG4 Audio 라고도 하지만 일반적으로 AAC 또는 HE AAC 라고 부릅니다.
    • AC3
    • DTS
    • ...
  • Subtitle
    • DVB subtitle
    • Teletext
    • Subrip, '.srt'
    • SAMI(Synchronized Accessible Media Interchange), '.smi'
    • ...
  • Encapsulation/Container Format (저장용과 스트림용으로 목적이 거의 대부분 명확히 구분되어 각 Codec을 묶어 동기 정보 및 메타 정보등을 담고 있습니다.)
    • MPEG1 system ('.mpg', '.mpeg', '.mp1')
      • MPEG1 에서 기술하는 저장용 포맷입니다.
    • MPEG2 Program stream (MPEG2 PS) ('.mpg', '.mpeg', '.mp2', '.ps')
      • MPEG2 에서 기술하는 저장용 포맷입니다.
    • ES (Elementary stream) ('.es')
      • 개별적인 Video/Audio codec 에 시간동기정보 및 부가적인 Codec을 기술하는 MPEG하위 포맷입니다. MPEG1, MPEG2, MPEG4 등에서 Video및 Audio 에 대한 ES 를 동기정보와 함께 묶어서 Encapsulation됩니다.
    • MPEG Transport Stream (MPEG2 TS, ISO/IEC 13818-1) ('.ts', '.m2t')
      • MPEG2 에서 기술하는 스트림용 포맷입니다. 전송 구간에서 일부 손실이 있어도 어느정도 내성을 가지고 복구 또는 손실처리를 할 수 있지만 빠른 탐색등에 필요한 Indexing 정보가 없어 탐색에는 불리합니다.
      • 일정 간격마다 반복되는 기술정보가 포함됩니다.
      • 일반 케이블 및 IPTV 실시간 스트림 방송에 사용합니다.
    • MP4 ('.mp4')
      • Atom header 등을 이용해서 구조화된 저장용 포맷입니다.
    • MKV ('.mkv')
      • 공개용 저장포맷 중에 하나입니다.
    • RIFF AVI (DivX), OpenDML AVI File Extensions, ... ('.avi', '.divx')
      • 저장용 포맷입니다.
    • ADIF (Audio Data Interchange Format) ('.adif')
      • 저장용 Audio 포맷입니다.
    • ADTS (Audio Data Transport Stream) ('.adts')
      • 스트림용 Audio 포맷입니다.
    • ...
  • Color format/space
    • RGB (Red/Green/Blue)
      • 빨강, 초록, 파랑 3가지 색상 정보로 나타내는 색 표현방식입니다.
      • 부가적으로 Alpha (투명도) 와 ChromaKey (색 분리 필터) 를 포함하여 사용하기도 합니다.
      • 각 색상의 단계(bits)를 세분화 할 수록 색 표현력이 증가합니다. (예: 그라데이션 특성을 갖는 하늘색에서 색 단계의 변화에 경계가 이러한 단계 세분화에 따라서 품질 차이가 있습니다.)
    • Yuv (Y/Cb/Cr)
      • 빛의 세기와 색차신호 정보로 나타내는 색 표현방식입니다.
      • 보통 Cb/Cr 은 그 값의 변화 차이가 사람의 시각적인 인지에는 차이를 못느끼는 특성이 있어서 영상 압축에 많이 사용되는 표현방식입니다.
        • 색차 신호 단계를 bits로 표현시 그 bits단계를 낮추면 그만큼 압축 효과를 보인다는 것
    • Audio channel
      • mono (1 channel)
        • 오디오를 하나의 채널로 표현
      • stereo (2 channels)
        • 오디오 좌/우를 나누어 각각 저장하는 채널 표현 방식
      • joint stereo (2 channels)
        • 좌/우의 차이를 저장하는 채널 표현 방식
      • 5 channels
        • 전/후/좌/우/센터를 나누어 각각 저장하는 채널 표현 방식
    • ...

1.2. ffmpeg 옵션 별 설명 및 예시

1.3. 사용법

  • TODO

작성할까 고민 중에 맛보기로 하나 초간단 요약
  • 기본적인 ffmpeg 의 옵션 순서
    $ ffmpeg [<기타옵션>] [<입력 옵션>] [<코덱 옵션>] [<출력 옵션>]
    
  • Transcoding - Format:MP4, Video:H.264 (by NVENC), Audio:AAC, Subtitle:mov_text
    $ ffmpeg -hide_banner -loglevel warning -stats -hwaccel auto -i "<변환하고자 하는 입력 파일>" -threads "0" -vsync "vfr" -c:v "h264_nvenc" -preset p7 -tune hq -rc:v vbr -rc-lookahead 8 -cq:v 26 -b:v 0 -bufsize:v 240M -maxrate:v 128M -profile:v high -level:v auto -pix_fmt yuv420p -c:a "aac" -ab "192k" -ac "2" -c:s "mov_text" -f "mp4" -max_muxing_queue_size 1024 "<변환하여 저장할 파일명>.mp4"
    
  • 배포판마다 다를 수 있으나 보통은 render group 퍼미션이 주어진 계정에서 HW 가속을 사용할 수 있습니다. (예: Quick Sync Video)


Copyright ⓒ MINZKN.COM
All Rights Reserved.