본문 바로가기
카테고리 없음

영상 편집과 인코딩(Clipchamp, ffmpeg, H264)

by newearlymorning 2023. 8. 26.

살다보니 영상을 편집할일이 오게됩니다.

 

영상 편집은 다른 사람의 일이라 생각했는데, 자녀들의 영상이나 핸드폰에 찍어둔 영상을 보기좋게 만들다보니

영상 편집을 하게 되었습니다.

 

영상편집을 하다 알게된 점이 있는데, 생각보다 일반인이 이해할만하게 영상편집을 어떻게 하는지, 프로그램을 무엇을 써야하는지 인터넷상에 정보가 많지 않더군요. 그리고 최근(2022~2023년)의 정보도 많지 않고 3~4년 전의 정보만 찾을수 있었습니다. 제가 구글링을 잘 못했을 수도 있지만, 대충 예기해도 찾아주는 구글도 내가원하는 정보를 찾아주지 못하는 것을 보니 정보가 없는 것은 맞는것 같습니다.

 

또한, 저같은 영상편집 "알못"들이 영상편집을 할 필요가 없는 세상이기도 합니다. 핸드폰에 들어있는 영상 기록들을 다시한번 열어보지도 않는 경우가 많은것 같습니다. 핸드폰안에 고이 저장되어 있는 영상들을 꺼낼 필요도 없습니다.

 

제가 이번에 사용했던 영상편집 환경은 2017년에 산 삼성노트북이었습니다.

CPU : intel pentium kaby lake (Max TDP 15W, 14nm 공정)

내장그래픽 : Intel HD Graphics 610 

RAM : 12GB(기본 4GB, 추가 8GB)

Storage : SSD

OS : Win 10

 

Microsoft Clipchamp

윈도우 10에서 제공하는 무료 영상편집프로그램 Clipchamp를 사용했습니다.

Window 10 영상 편집 프로그램 Clipchamp

프로그램 자체는 직관적입니다. 

제 경우에는 영상의 불필요한 부분을 잘라내는 작업 밖에없었습니다.

영상을 자를때 단축키(s)를 이용하고, 시간을 100분의 1초까지 정하여 영상을 자를 부분을 정할 수 있었습니다.

그리고 잘라낸 영상을 드러낸 부분을 한번에 삭제해주는 것까지, 매우 직관적이기 때문에 누군가의 설명 없이도 잘 사용하실 수 있을겁니다. 저도 사용했으니까요.

 

70분 2GB 영상이 30분 5GB 영상이 되는 기적 

생각지도 못한 일이 일어났습니다. 영상은 분명 반이상 줄었는데, 용량은 두배이상이 되는 기적이 일어났습니다.

영상이 16개가 되다보니, 핸드폰에서 추출해낸 영상을 편집하고 다시 집어넣을 수 없게 되었습니다. 이참에 안쓰는 앱들까지 모조리 지웠더니 겨우 우겨넣을 수는 있었지만, 256GB 전체 저장공간 중 남는 공간은 얼마 없게 되었습니다. 

 

이해가 되지않아 구글링을 해보니 인코딩이 문제였습니다. 

인코딩과 디코딩에 대해서 chatgpt에게 물어보았습니다.

 

  • 인코딩 (Encoding)
    • 인코딩은 원본 데이터를 특정 형식이나 알고리즘에 따라 변환하는 과정이에요. 예를 들어, 촬영한 원본 비디오 파일을 작은 크기로 압축하거나 다른 형식으로 바꾸려면 인코딩을 해야 해요. 이 과정에서는 특정 비디오 코덱(예: H.264, H.265 등)을 사용하게 돼요.
    • 원본 영상 데이터를 압축하거나 변환해서 저장 공간을 절약하거나 전송 속도를 빠르게 만드는 과정이에요.
      예를 들어, 4K 해상도의 원본 영상을 H.264 코덱을 사용해서 압축하면, 파일 크기가 줄어들겠죠.
  • 디코딩 (Decoding)
    • 디코딩은 인코딩된 데이터를 다시 원래의 형태나 형식으로 변환하는 과정이에요. 예를 들어, 인터넷에서 다운로드한 비디오 파일을 재생할 때, 컴퓨터나 스마트폰은 그 파일을 디코딩해서 원본 영상과 같은 내용을 화면에 표시해줘요.
    • 저장되거나 전송된 압축된 영상 데이터를 다시 원래대로 풀어서 화면에 표시하거나 편집할 수 있게 만드는 과정이에요. 예를 들어, YouTube에서 영상을 재생할 때, 서버에서 압축된 영상 데이터를 받아와서 디코딩해서 화면에 표시해주는 거죠.
  • 인코딩과 디코딩의 이해
    • 인코딩과 디코딩은 마치 '번역기' 같은 역할을 해요. 원본 데이터(원문)를 특정 규칙(언어)에 따라 변환(번역)하고, 필요할 때 다시 원래대로 복원(역번역)하는 거죠. 이렇게 하면 데이터를 효율적으로 저장하고 전송할 수 있어요.
    • 인코딩은 마치 '물건을 짐에 꽉 눌러넣는 것' 같고, 디코딩은 '그 짐을 다시 풀어서 원래대로 되돌리는 것' 같아요. 

역시 명쾌한 chatgpt

다시 구글링을 해보니, ffmpeg이라는 오픈소스 인코딩 프로그램이 있었습니다.

무슨 무료 써드파티 느낌을 풍기는 이름이 처음에는 신뢰가 가지 않았는데(f가 두개!) 첫인상과 다르게, 매우 널리 사용되고 고 있는 중요한 프로그램이었습니다.

 

ffmpeg (Fast Forward mpeg)

마이클 니더마이어(Michael Niedermayer)의 주도하에 개발되고 있는 모든 동영상, 음악, 사진 포맷들의 디코딩과 인코딩을 목표로 만들어지고 있는 오픈 소스 프로젝트(https://namu.wiki/w/FFmpeg)

 

ffmpeg을 이용하여 H264 코덱의 영상 압축이 가능하다고 하여 이 프로그램을 사용해보기로 했습니다.

 

다운로드를 하기 위해 ffmpeg 홈페이지에 접속합니다.

https://ffmpeg.org/

 

다운로드 버튼을 누르면

첫번째 줄 링크로 들어가서

저걸 다운로드 받습니다.

제 경우에는 D drive에 설치했습니다.  

그리고 환경변수에 ffmpeg이 설치된 폴더를 추가해줍니다.

제 경우에는 D:\ffmpeg-6.0-essentials_build\bin 였습니다. 

그리고 ffmpeg.exe 가 있는 윈도우탐색기 창에서 주소표시줄에 cmd를 입력하여 커맨드창을 아래와 같이 열어줍니다.

 

여기까지만 해도 다한겁니다.

 

제 경우에는 편집하려는 영상을 저 폴더에 두고 작업을 했습니다.

 

저 커맨드 창에 아래와 같은 명령어를 입력해주시면 됩니다.

 

 

ffmpeg -i input.mp4 -c:v libx264 output.mp4

 

  • ffmpeg
    이 부분은 FFmpeg 프로그램을 실행시키는 명령어에요.
  • -i input.mp4
    -i는 'input'의 약자로, 다음에 오는 input.mp4 파일을 입력 파일로 사용하겠다는 의미에요. 변환시키고 싶은 파일의 이름을 쓰시면 됩니다.
  • -c:v libx264
    -c:v는 'codec:video'의 약자로, 비디오 코덱을 지정하는 옵션이에요.
  • libx264는 H.264 비디오 코덱 라이브러리를 사용하겠다는 의미에요.
  • output.mp4
    이 부분은 출력 파일의 이름을 지정하는 거에요. 여기서는 output.mp4라는 이름으로 저장하겠다는 의미죠. 변환된 결과물 파일이름을 지정해주시면 됩니다.

 

chatgpt에게 h264 변환에서 영상과 음향 품질을 사람이 감지할 수 있는 수준에서 가장 높게 설정해달라고 부탁보았고, 아래와 같은 명령어를 알려주었습니다.

 

ffmpeg -i input.mp4 -c:v libx264 -crf 18 -c:a aac -b:a 192k output.mp4

 

 

제가 테스트 해본 결과로는 h265가 더 높은 압축률을 보여주었습니다.

다만, 제 환경에서는 압축 시간이 시간이 h264 대비 2배가 소요되었습니다. 

그래도 기존 파일보다 3분의 1이나 줄어드는 것 자체만으로도 만족스러운 결과였기에 h264로 진행하였습니다.

 

인코딩 중인 커맨드창을 보면 speed=0.36x 이런식으로 표시가 됩니다. 이것으로 영상 인코딩 시간을 유추해볼 수 있으며, 영상의 길이가 30분이라면 60분 / 0.36 = 166.7분 인코딩에 걸리는 시간을 파악해 볼수 있습니다.

그리고 기존 3GB 였던 영상이 1GB로 줄었으며, 영상의 품질도 거의 차이를 느끼지 못할정도였습니다.

정말 대단한 기술..

 

H.264 (AVC: Advanced Video Coding)
장점: 널리 사용되고 있어 대부분의 장치와 호환됩니다. 좋은 압축 효율과 품질을 제공해요.
단점: H.265에 비해 압축 효율이 떨어져서, 같은 품질의 영상을 만들려면 더 큰 파일 크기가 필요해요.
사용처: YouTube, Vimeo, Blu-ray 디스크 등 다양한 곳에서 사용되고 있어요.

 

H.265 (HEVC: High Efficiency Video Coding)
장점: H.264보다 약 25~50% 더 효율적인 압축을 제공해요. 이로 인해 더 작은 파일 크기나 더 높은 품질의 영상을 만들 수 있어요.
단점: 새로운 기술이라서 아직 모든 장치나 플랫폼에서 지원되지 않을 수 있어요. 인코딩과 디코딩에 더 많은 컴퓨팅 자원이 필요해요.
사용처: 4K UHD 영상, HDR 영상 등에서 주로 사용되고 있어요.

 

아직까지는 H264 만으로도 충분한것 같습니다.

 

제가 경험했던 바를 기록도 할겸 공유해봤습니다.

누군가에겐 도움이 되길 바라며, 이만 글을 마칩니다.

 

--------

추가

powershell 을 이용해서 한 폴더내에 있는 파일 전체를 인코딩 할때 쓰는 명령어입니다.

변환은 알파벳 순으로 진행됩니다.

 

Get-ChildItem *.mp4 | ForEach-Object { ffmpeg -i $_.Name -c:v libx264 -crf 18 -c:a aac -b:a 192k ("encoded_" + $_.Name) }