FFmpeg 하는일
- 동영상을 변환하고 재생시간을 자르고 화면 크기를 확대/축소 화면을 잘라내는 작업을 제공해 주는 라이브러리입니다.
모든 동양상 음악 사진 폼의 디코딩와 인코딩 지원을 목표로 진행되고 있는 오픈 소스 프로젝트입니다. 거의 대부분의 동영상 관련 애플리케이션들이 FFmpeg을 기반으로 하고 있습니다.
- 비디오만 추출하기
- 오디오만 추출하기
- 비디오와 오디오 합치기
- Scale 변경하기
- Crop, Pad
설치는 apt 명령으로 할 수 있습니다.
sudo apt install ffmpeg
유튜브 동영상을 다운 받을수 있는 youtube-dl도 인스톨 하겠습니다.
sudo apt install youtube-dl
다운로드 받을 youtube 동영상의 https://www.youtube.com/watch?v=1fl7uhUrO1w 다양한 품질의 비디오와 오디오의 목록을 확인하기 위해서는 옵션 -F 로 확인할 수 있습니다.
youtube-dl https://www.youtube.com/watch?v=1fl7uhUrO1w -F
youtube-dl 1fl7uhUrO1w -F (전체주소 대신 비디오ID만 입력해도 됩니다.)
다운로드 받을때에는 -f옵션과 비디오,오디오코드를 플로스로 연결한 형식으로 지정하면 됩니다.
youtube-dl 1fl7uhUrO1w -f 303+258
다운로드 받은 동영상을 17초 구간부터 10초간 잘라서 mp4 파일로 만들어 보겠습니다.
ffmpeg -i Big\ Buck\ Bunny\ 60fps\ 4K\ -\ Official\ Blender\ Foundation\ Short\ 1fl7uhUrO1w.mkv -ss 00:00:17 -t 00:00:10 fhd.mp4
동영상에서 오디오만 mp3로 추출하고 싶을때
ffmpeg -i fhd.mp4 audio_only.mp3
동영상에서 오디오를 제거하고 비디오만 남기고 싶다면 an 옵션을 사용하면 됩니다.
ffmpeg -i fhd.mp4 -an video_only.mp4
비디오만 있는 파일과 오디오만 있는 파일을 합쳐 보겠습니다.
ffmpeg -i video_only.mp4 -i audio_only.mp3 video_audio.mp4
ffmpeg -i video_audio.mp4 -f null -
비디오 변환 작업은 filter:v로 사용합니다. 간단히 줄여서 vf로 사용해도 됩니다.
vf는 변환 작업에 따라 수 많은 옵션들이 존재합니다. 그중에서 scale, crop, pad, setpts, zoompan 을 살펴보겠습니다.
오디오 변환 작업은 filter:a로 사용합니다. 간단히 줄여서 af 로 사용합니다. atempo 를 살펴보겠습니다.
해상도 변경
ffmpeg -i fhd.mp4 -vf scale=1280:720 scale01.mp4
ffmpeg -i scale01.mp4 -f null -
16:9 비율을 4:3비율로 스케일 변경
ffmpge -i fhd.mp4 -vf scale=480:360 scale02.mp4
ffmpeg -i scale02.mp4 -f null -
비율이 다르기 때문에 찌그러져서 저장됩니다.
원본과 같은 비율로 늘어나가 변경해 보겠습니다.
ffmpeg -i fhd.mp4 -vf scale=480:360:force_original_aspect_ratio=increase scale03.mp4
화면 비율을 바꾸지 않고 특정 부분을 crop 할때
ffmpeg -i fhd.mp4 crop=960:720 crop01.mp4
좌측상단에 위치하게 하려면
ffmpeg -i fhd.mp4 crop=960:720:0:0 crop02.mp4
빈영역을 녹색으로 채우고 싶을때
ffmpeg -i crop01.mp4 -vf pad=1280:720:160:0:color=green pad.mp4
비디오 변경 속도 변경
ffmpeg -i fhd.mp4 -vf setpts=0.5*PTS speedup_video_only.mp4 => 지속시간을 0.5 줄여주었기 때문에 2배속이 됨
PTS : Presentation Time Stamp
오디오 배속 따로 아래와 같이 설정해야 됩니다.
ffmpeg -i speedup_video_only.mp4 -af atempo=2 speedup01.mp4 2배속
비디오와 오디오를 한꺼번에 2배속으로 설정할 경우는 아래와 같이 설정하면 됩니다.
ffmpeg -i fhd.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2[a]" -map [v] -map [a] speedup02.mp4
0.5배속으로 느리게 변환
ffmpeg -i fhd.mp4 -filter_complex "[0:v]setpts=2*PTS[v];[0:a]atempo=0.5[a]" -map [v] -map [a] speedup02.mp4
연속된 이미지를 동영상 만들 수 있습니다.
hello01~hello14.png
ffmpeg -i hello%02d.png hello_14frames.mp4
ffmpeg -i hello%02d.png -vf setpts=8*PTS hello_speed.mp4
동영상에서 이미지를 추출할 수 있습니다.
ffmpeg -i hello_14frames.mp4 frame%02d.png
추출할 프레임수를 지정할 수도 있습니다.
ffmpeg -i hello_14frames.mp4 -vframes 1 frame_first.png 한프레임
ffmpeg -i hello_14frames.mp4 -vf "select='between(n,1,3)' frame_%d.png
Reference
https://www.youtube.com/watch?v=c4amktP_Kk4
https://www.youtube.com/watch?v=2kL1tsy_4as
'1. Front-end > >> FFmpeg' 카테고리의 다른 글
FFmpeg를 사용하여 두 개의 MP4 파일을 연결하는 방법 (0) | 2023.01.27 |
---|---|
[파이썬] 챕터6.가상 광고판 | 파이썬 추월코스, 최신 파이썬, 코딩, 기초 프로그래밍 강의 (0) | 2023.01.19 |
How to use FFMPEG (0) | 2022.12.19 |
MP3 to Video App using FFMPEG / React (0) | 2022.12.18 |
WASM + React... Easily build video editing software with JS & FFmpeg (0) | 2022.12.18 |
댓글