덕질을 위한 툴 정보

컴맹이 알려주는 ffmpeg 사용법

ᛰᚼᛥ 2017. 12. 14. 00:48
반응형

 

 

시작

 

1. 컴맹이라 쓴 거는 컴에 대해 잘 모르는 분들도 할 수 있다 강조하기 위해 쓴 것임. 그리고 컴맹이 맞긴 함. 시우민 덕질하면서 필요해서 배운거 빼면 컴퓨터에 대해서 잘 모름

 

2. 잘 모르겠으면 그냥 해보는게 좋음. 이렇게 저렇게 하다 보면 방법을 깨우치게 됨

 

 

 

 

 

본론

 

* PC에서 사진 클릭하면 원본 사이즈로 보임

 

 

 

1. ffmpeg 다운 & 설치

 

http://ffmpeg.org/download.html 로 이동

 

 

자기가 사용하는 거에 맞게 클릭하자

 

 

  • Version <- 아무거나. 나는 위에 걸로 다운받았었음
  • Architecture <- 본인 컴에 맞게. 

본인 컴이 몇 비트인지는

내 pc 오른클릭 후 속성을 누르면 나온다

 

  • 나머지는 내가 화살표 표시한대로. 파란 버튼 클릭하면 다운 받아짐
 
다 다운 받았으면 아무데나 본인이 원하는 곳에 압축 풀면 설치 끝임
 

 

 

 

 

2. 기본적인 사용법
 
ffmpeg.exe 파일은 압축 풀은 폴더의 bin 폴더에 있다.
 
나는 여기다 인코딩할 파일들을 옮겨놓고 여기서 ffmpeg를 이용한다.
 
만약 여러분도 같은 방식으로 한다면
① bin 폴더에 재료들을 옮겨 준다 (필요없는 경우도 있음)
② bin 폴더 빈 곳에 shift 키 + 오른 클릭 -> 여기서 명령창 열기를 누른다
③ 내가 하고 싶은 일에 맞는 명령어를 찾아 재료 파일명 등을 알맞게 조합해서 입력한다
 

 

 
 
3. 명령어 모음
 
시우민 덕질하면서 필요했던, 또는 썼던 명령어들만 
출처에서 긁어서 모아놨음을 밝힌다
 
출처1 : http://horangi.tistory.com/290 [ffmpeg 사용방법
 
출처2 : http://idchowto.com/?p=6653 [FFMPEG 을 이용한 동영상 인코딩]
 
출처3 : https://superuser.com/questions/277642/how-to-merge-audio-and-video-file-in-ffmpeg [How to merge audio and video file in ffmpeg : ffmpeg에서 오디오와 비디오 파일을 합치는 법]
 
그외는 출처 까먹음
 
 
  • ffmpeg로 스트리밍 추출
 
ffmpeg로 스트리밍을 받으려면 .m3u8이나 .mp4로 된 주소를 알아야 한다
 
ffmpeg -i "m3u8주소" -c copy 저장할파일명.ts 
 
자세한 방법 보려면 (ffmpeg로 스트리밍 추출 예를 보려면)
https://blog.naver.com/peche99/220816504552 [멜론 영상 추출법] 으로 가서 보면 됨
 
나는 생방송(실시간 스트림)은 스트림링크, 다시보기는 ffmpeg로 추출한다
 
 
 
  • 동영상 인코딩
 
 
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 : 옵션의 엄격함을 느슨하게 풀어주는 옵션
ⓞ <출력파일이름> : 변환하여 저장할 동영상 파일 이름을 지정한다.
 
동영상 변환 옵션 예)
 
ffmpeg -y -i 변환전동영상파일명.avi -acodec aac -ab 192k -ar 48000 -ac 2 -b:a 300k  -vcodec libx264 -level 30 -b:v 3000k -r 29.97 -s 1280:720 -threads 4 -strict -2 변환후동영상파일명.mp4
 
* 덧붙임: 본인이 생각하기에 필요없거나 중요치 않다고 생각하는 부분은 생략할 수 있다. 나는 f, i, m, n은 항상 안 쓴다.
아예 다른 부분은 다 생략하고 
 
ffmpeg -i 변환전동영상파일명.avi 변환후동영상파일명.mp4
 
이렇게 입력해도 ffmpeg가 알아서 인코딩 해준다. 
 
 
 
 
 
반응형

 

 
 
  • 동영상 분할(일정구간 자르기)
 
 
 
– 지정된 시간 사이의 동영상 분할 명령 및 설명
 
ffmpeg -i ⓐ -ss ⓑ -t ⓒ -vcodec copy ⓓ -acodec copy ⓔ ⓕ
 
ⓐ -i <분할파일이름> : 분할할 동영상 파일 이름을 지정합니다.
ⓑ -ss <숫자> : 분할 시작할 시간 값. 초 단위로 적어주거나, HH:MM:SS 로 지정할 수 있다.
ⓒ -t <숫자> : 분할 완료할 시간 값. 초 단위로 적어주거나, HH:MM:SS 로 지정할 수 있다.
ex) 30으로 적어주면 분할을 시작한 시간으로 부터 30초간만 분할된다.
ⓓ -vcodec copy : 비디오 코덱은 원본 동영상과 같게 한다.
ⓔ -acodec copy : 오디오 코덱은 원본 동영상과 같게 한다.
ⓕ <출력파일이름> : 분할하여 저장할 동영상 파일 이름을 지정한다.
 
 
* 덧붙임: ss 옵션값이 없으면 시작부터 지정한 시간까지 분할하고, t 옵션값이 없으면 시작으로부터 끝까지 분할한다.
 
간단 버젼
 
ffmpeg -i 동영상.avi -ss 600 -t 120 결과물.avi
 
(동영상.avi 의 600초 지점부터 120초간 자르고 결과물.avi로 저장)
 
 
 
  • 동영상 합치기
 
분할된 동영상을 합칠때 사용한다.
 
file abcdefg.mp4
file smile.mp4
 
 
먼저 합칠 동영상 파일을 텍스트 파일로 열거해준다.
 
file 동영상파일명1
file 동영상파일명2
 
 
ffmpeg -f concat -i “ⓐ” -c copy ⓑ 
 
ⓐ -i <텍스트파일명> : 합칠 동영상 목록이 적혀 있는 텍스트 파일명
ⓑ  <출력파일이름> : 합쳐서 저장할 동영상 파일 이름을 지정한다.
 
 
  • 동영상에서 오디오 추출
 
 
ffmpeg -i Sample.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 Sample.mp3
 
 
  • 동영상에 오디오 합치기
 
오디오 넣을 영상에 오디오가 없는 경우-재인코딩할때
 
 
ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental output.mp4
 
 
오디오나 비디오 둘 중하나가 더 길때, -shortest 옵션을 넣으면 ffmpeg가 짧은 쪽이 끝날 때 자동으로 중지한다고 함
 
오디오 넣을 영상에 오디오가 없는 경우-재인코딩없이 카피
 
 
ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv
 
오디오 넣을 영상에 이미 오디오가 있는 경우-오디오 교체
 
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 output.mp4
 
 
  • 동영상 크롭(Crop)
 
ffmpeg -i 원본영상.mp4 -filter:v "crop=영상가로:영상세로:X:Y" 결과물.mp4
(원본영상.mp4 를 X,Y 지점부터 영상가로x영상세로 영역만큼만 뽑아냄)
 
  • 두개의 영상을 한화면에 양옆으로 나란히(Side by Side)
 
ffmpeg -i 영상1.mp4 -vf "[in] pad=2*iw:ih [left]; movie=영상2.mp4 [right]; [left][right] overlay=main_w/2:0 [out]" 결과물.mp4
 
(화면크기가 같은 2개의 동영상 영상1.mp4, 영상2.mp4 를 나란히 좌우로 붙여 결과물.mp4로)
 
 
 
  • 두개의 영상을 한화면에 아래 위로
 
ffmpeg -i input0 -i input1 -filter_complex vstack output
 
ffmpeg -i ver1-5.mp4 -vf "[in] pad=iw:2*ih [top]; movie=ver2-5.mp4 [bottom]; [top][bottom] overlay=0:main_h/2 [out]" ver5-2.mp4
 
 
 
  • 동영상 프레임 늘리기(슬로우/패스트 비디오 만들기)
 
ffmpeg -i ~baekrokdam.mov -vf "setpts=(1/4)*PTS" -an baekrokdam4x.mov
 
setpts=(1/4)*PTS의 1/4를 원하는 배속으로 수정.
 
오디오는 재생 속도가 변경되지 않으므로 -an 옵션으로 오디오 제거.
 
 
  • 화면회전
 
ffmpeg -i in.mov -vf "transpose=1" out.mov
 
0 = 90CounterCLockwise and Vertical Flip (default)
1 = 90Clockwise
2 = 90CounterClockwise
3 = 90Clockwise and Vertical Flip
 
 
  • 자막파일 smi -> srt 변환
 
ffmpeg -i 자막파일.smi 자막파일.srt
 

 


 

메인옵션

 

-L : 라이센스 표시

 

-h : 헬프표시

 

-formats : 현재 사용할 수 있는 포맷, 코덱, 프로토콜을 표시

 

-f fmt : 포맷을 지정 (fmt의 부분에 -formats 그리고 조사한 포맷명이 들어간다)

 

-img img_fmt : 화상의 포맷을 지정 (img_fmt의 부분에 -formats 그리고 조사한 포맷명이 들어간다)

 

-i filename : 입력파일명

 

-y : 동일 파일 존재시 덮어쓰기

 

-t duration : 완성되는 파일의 시간을 지정한다 (duration의 부분에 0을 넣으면 10초 부분까지 기록)

 

-ss : 변환시작할 시간

 

 

영상옵션

 

-s : 사이즈 (가로x세로)

 

-sameq : 원본과 동일화질

 

-qscale : 0 ~ 255 (낮을수록 고화질)

 

-r : frame rate (Hz value, fraction or abbreviation)

 

-aspect : 비율 (4:3, 16:9 or 1.3333, 1.7777)

 

-b : bitrate (ex 512k)

 

 

 

 

 

 

대댓글 달지 않는 댓글 유형

 

1. 본문에 있는 내용을 묻는 경우

2. 난 모르겠다 네가 대신해달라 

3. 나도 모르는 경우

 

반응형