-
ffmpeg으로 동영상 이어붙이기, 사이즈 바꾸기, 프레임 추출, 프레임으로 영상만들기, 코덱 변경, 영상에 프레임넘버 출력하기 (계속 추가중)Computer Vision & AI/Computer Vision 2022. 5. 24. 18:34
🙋♂️여러가지 편한 영상 편집을 위해 먼저 ffmpeg을 다운받아야합니다.
(UI가 아닌 CLI기반이라 처음에는 어려울 수 있으나 한번 해보면 굉장히 편함)
🎬여러 동영상을 하나의 동영상으로 붙이기
1. 폴더를 하나 만들어서 다운받은 ffmpeg의 dll, exe등의 파일들을 복사한다.
2. 해당경로에 txt 파일을 생성한다.
내용은
file <경로/이름.확장자>
예시)
file C:\\test\\test_1.mp4
file C:\\test\\test_2.mp4
file C:\\test\\test_3.mp4
....
....
또는
file C:/test/test_1.mp4
.....
3. cmd창에서 다음과 같은 명령어를 입력해준다.
ffmpeg -safe 0 -f concat -i <txt파일이름> -c copy <output파일이름>
(예시)
ffmpeg -safe 0 -f concat -i mylist2.txt -c copy output.mp4
ffmpeg만 있으면 간단하게 짧은 영상들을 이어붙일 수 있음!
4K영상의 경우 다른 프로그램을 사용하면 뚝뚝 끊기거나 저장을 다운스케일로 지원해서
이 방법이 좋은것 같다!
사용방법만 한 번 알아두면 꿀
추가 팁 - 파일 리스트 빨리 생성하는 방법 -
cmd창에서
dir /b *.mp4 > list.txt
입력해서 파일이름 자동으로 만든 후에
메모장 바꾸기 기능으로 앞에 file (경로)를 추가해줬다.
-> 굉장히 번거로워서 따로 tool을 만들기로 함...
📏사이즈 바꾸기
ffmpeg -i input.mp4 -vf "scale=1920x1080" output.mp4
✂프레임 추출하기
ffmpeg -ss 00:00:0 -i input.mp4 -r 30 -f image2 frame/frame-%03d.png
frame라는 폴더를 하나 생성해줘야 함! (같은 폴더내에 이미지가 여러장 생기면 폴더가 어지러우니.._)
-ss start 시간
-i input파일 이름
-r 프레임레이트 (예시는 30fps)
-f image2 (정확한 의미는 모르겠음...) output파일 이름(%d넣으면 순서대로 숫자추가됨)
꿀팁!
%d를 %03d로 바꾸면 프레임이 3자리수로 맞춰서 나온다.
이렇게 하는 이유는 1번 다음에 2번이 와야하는데 컴퓨터는 1 다음에 10으로 인식하기 때문에
001 002 ... 010 이런식으로 자리수를 맞춰주어야 한다.
🔁프레임레이트 바꾸기
ffmpeg -i input.mp4 -r 30 output.mp4
🕑시작시간 끝시간 구간 자르기
ffmpeg -i input.mp4 -ss 시작시간 -to 끝시간 output.mp4
🔄영상 코덱 변경
ffmpeg -i input.mp4 -c:v libx264 filename.mp4
📽프레임을 영상으로 만들기
위에서 영상 -> 프레임으로 만든 후 그 프레임 이미지들을 가지고 영상으로 만드는 방법이다.
ffmpeg -f image2 -r 30 -i frame\frame-%03d.png -vcodec libx264 -preset slow -crf 22 -vf format=yuv420p output.mp4
ffmpeg -f image2 -r 30 -i frame\frame-%03d.png -vcodec libx264 output.mp4
두 가지 방법이 있는데 아래 명령어로 하다가 이후 영상 작업에 문제가 발생하여 (팟플레이어에서는 실행되나, 윈도우 영화 및 TV로는 실행이 안 된다. 이것자체가 문제는 아니지만 이 현상이 문제가 되었음)
위의 명령어로 실행하니 잘 메이킹이 되었다.
💬영상에 프레임넘버 출력하기
정확한 frame값을 보고싶을 때 해당 프레임에 0부터 순차적으로 표시해주는 기능이다.
ffmpeg -i input.mp4 -vf "drawtext=fontfile=Arial.ttf: text='%{frame_num}': start_number=0: x=(w-tw)/2: y=(h-lh)/3: fontcolor=black: fontsize=40: box=1: boxcolor=white: boxborderw=5" -c:a copy output.mp4
'Computer Vision & AI > Computer Vision' 카테고리의 다른 글
clamped B spline 참고 문서 정리 2 (0) 2022.11.22 [MediaInfo] 비디오 파일(영상 파일)의 GOP 확인하기 (+팟플레이어) (0) 2022.10.27 [B-Spline] gsl라이브러리/knot vector/clamped spline 스플라인 삽질 (0) 2022.08.10 LUT (Look up table) 정리 + 예시코드 모음 (0) 2022.05.17 OpenCV imread, pixel 접근 기초 정리 (0) 2022.05.16