Good

ffmpeg encoding 예제 - 주로 video 파일을 mp3 파일로 변환 하기

mulderu 2012. 3. 24. 14:15
- 작성중 -

요즘 오디션천국이다... 다들 노래를 왜그렇게들 잘 하는지... 대단한 KOREA... !!!
오디션 프로그램을 다운로드 해서 보는편인데, 좋은 노래를 mp3로 만들어서 아이폰에서 듣고 싶을때가 많습니다.
이렇게 손노가다가 조금 들어 가지만 내가 원하는 파일을 만들어서 사용하는 기쁨이 있죠.

일단 ffmpeg 을 다운로드 해서 적당한 위치에 풀고 PATH 변수에 bin 디렉토리를 등록 합니다.
ffmpeg 은 워낙 유명한 녀석이라서 위키나 구글에서 찾아 보시면 내용을 쉽게(???) 이해 하실수 있을 겁니다.

-- ffmpeg download and install --



- download URL : http://ffmpeg.zeranoe.com/builds/ 
  개인의 pc os 에 맞는 버전을 다운로드 하세요. static build를 권장 합니다.


- unzip 과 설치
  설치는 다운된 파일을 원하는 폴더에 푸시면 됩니다. (setup 과정이 없습니다.)


 - 사용 편의를 위해서 ffmpeg/bin  디렉토리를 pc 환경변수 (PATH) 에 등록 합니다. (참고 그림 참조)



자, 이제 DOS 창에서 ffmpeg 을 사용할 준비가 완료 되었습니다.




-------------- ffmpeg simple command example ------------

1. avi 파일을 통으로 mp3로 변환하기 (전체 변환) - (avi to mp3)
  ffmpeg -i sourceVideoFileName.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 outputFileName.mp3

example)
mulder@~/downloads$ 
  bea.mp3downloads$ ffmpeg -i "배근석-신데렐라(서인영) 보이스코리아 the voice 1회.mp4" -vn -ar 44100 -ac 2 -ab 192 -f mp3 
ffmpeg version 0.10.2 Copyright (c) 2000-2012 the FFmpeg developers
  built on Apr  6 2012 11:40:12 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3)
  configuration: --enable-libmp3lame --enable-shared --disable-mmx --arch=x86_64
  libavutil      51. 35.100 / 51. 35.100
  libavcodec     53. 61.100 / 53. 61.100
  libavformat    53. 32.100 / 53. 32.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 61.100 /  2. 61.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  6.100 /  0.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '배근석-신데렐라(서인영) 보이스코리아 the voice 1회.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2012-02-09 15:03:14
  Duration: 00:02:00.96, start: 0.000000, bitrate: 2557 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 2402 kb/s, 30 fps, 30 tbr, 60 tbn, 60 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 151 kb/s
    Metadata:
      creation_time   : 2012-02-09 15:03:14
      handler_name    : 
The bitrate parameter is set too low. It takes bits/s as argument, not kbits/s
Output #0, mp3, to 'bea.mp3':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    TDEN            : 2012-02-09 15:03:14
    TSSE            : Lavf53.32.100
    Stream #0:0(und): Audio: mp3, 44100 Hz, 2 channels, s16, 0 kb/s
    Metadata:
      creation_time   : 2012-02-09 15:03:14
      handler_name    : 
Stream mapping:
  Stream #0:1 -> #0:0 (aac -> libmp3lame)
Press [q] to stop, [?] for help
size=    1891kB time=00:02:00.99 bitrate= 128.0kbits/s    
video:0kB audio:1891kB global headers:0kB muxing overhead 0.016271%
mulder@~/downloads$ 


2. avi 파일에서 초기 54분 11초 이후(offset) 164초 만 잘라서 mp3 파일로 만들기 (구간 자르기)
  ffmpeg -i sourceVideoFileName.avi  -vn -ar 44100 -ac 2 -ab 192 -f mp3
               -ss 00:54:11.00 -t 164 outputCuttingFileName.mp3

  -ss option : start position
  -t option : duration
  % 여기서 사용되는 시간값은 초기 몇분을 제외하면 원본의 값과 같거나 1/3 값이 되기도 한다. (테스트 후 확인 필요)

ffmpeg simple option >

화질 관련 옵션

-b : video bitrate, 320k 정도면 그럭저럭 괜찮게 볼 수 있음.
-r : frame rate, 보통 24정도면 적당.

음질 관련 옵션

-ab : audio bitrate, 128k정도면 일반 mp3음질과 동일.
-ar : audio sampling rate, 44100 또는 22050을 많이 이용.
-ac : audio channel, 1이면 mono, 2이면 stereo 


 

example1 avi to mp4) 

포맷: ffmpeg -i sourceFile.avi -f mp4 -vcodec mpeg4 -b 250000 -ar 24000 -ab 64 -ac 2 resultFile.mp4


아래는 Mnet VKO avi 소스를 mp4 (iphone/ipad) 포팻으로 초기 10초 이후 9초만 인코딩하는 예제 입니다.
화면에 표시된 내용을 일부 소개 합니다.

  1번 : 명령라인 --- 원하는 옵션은 구글링하면 대부분 나옵니다.
  2번 : ffmpeg 에서 사용할 수 있는 라이브러리입니다. 특히 codec 이 몇개로만 제한 되어 있습니다. (static build)
  3번 : 소스파일의 메타데이터

 



example2 avi to mp3)

- 결국 제가 감명깊이 들었던 보코의 its rainning man 을 잘라 보겠습니다. (손승연,이소정 대단한 무대 였습니다.)

  ffmpeg -i "Mnet 보이스 코리아.E06.120316.HDTV.H264.450p-MonG.avi" -vn -ar 44100 -ac 2 -ab 192 -f mp3
                  -ss 00:11:15.00 -t 51 mnetVoiceKroeaItsRainningMan.mp3

- 자르는 구간 설정값 구하기 

  원본 avi 에서의 커팅한 타임라인 : 33분 44초 ~ 36분 18초 (153 초)
  시작시간은 : -ss 00:11:15.0   <------ 시작시간의 1/3 (경우에 따라 다름, 원본과 일치 하는 경우도 있다)
  인코딩 구간시간은 : -t 51   <------  153초의 1/3 (경우에 따라 다름, 원본과 일치 하는 경우도 있다)

- 어제 했던 불후의 명곡에서 알리가 부른 패티김 "초우" 부분만 잘라서 mp3로 만들기 (time offset, duration 값이 1:1 이다)
  ffmpeg -i "자유선언 토요일.E43.불후의명곡 2.120324.720p.H264.AC3.YoTo.avi" -vn -ar 44100 -ac 2 -ab 192 -f mp3 -ss 01:24:57.00 -t 303 ali01.mp3 

   



mov To mp4

ffmpeg -i  input.mov  -f mp4 -vcodec copy -acodec copy output.mp4




mp4 To mp3



mulder@~/bin$ cat mp4-to-mp3.sh 
#!/bin/bash

ffmpeg -i "$1.mp4" -vn -acodec libmp3lame -ac 2 -ab 160k -ar 48000 "$1.mp3"
mulder@~/bin$