동영상 인코더

 

1. 개요
2. 상세
3. 하드웨어별 인코딩 방식
3.1. CPU (소프트웨어) 인코딩
3.2. GPU 인코딩
3.2.1. GPGPU 인코딩
3.2.2. 인코딩 전용 하드웨어
4. 동영상 인코더 목록
4.1. 네이티브(코덱)
4.2. FFmpeg 계열
5. 인코더 설정 방법


1. 개요


동영상인코딩#s-4하는 프로그램의 총칭.

2. 상세


동영상 인코딩 기능을 내장한 프로그램은 다양한 종류가 있겠지만, 특정 프로그램을 가리켜 동영상 인코더라 할 경우에는 편집 기능은 없거나 최소한으로만 갖고 있고 인코딩 기능에 집중한 것을 말한다. 별 것 아닌 것 같지만 동영상이 손실 압축 포맷인 만큼 화질 열화를 가능한 제어하면서 용량을 줄이는 기술에 의미가 있다. 혹은 다른 영상 편집기와 달리 클릭 한두 번으로 인코딩이 끝날 정도로 쓰기 쉽다는 데에 의미가 있을 수도 있다.
이미 존재하는 파일을 다른 용도로 사용하기 위해 변환하는 부류와, 실시간으로 영상과 오디오 입력 등을 받아 파일형태로 인코딩(녹화)하는 형태 등 크게 두 가지 부류로 나눌 수 있다.
일반적으로 지나치게 큰 용량을 줄여서 특정 기기에서 돌아가도록 하거나(재인코딩) 혹은 UCC 업로드를 위해서 사용하며, PMP스마트폰, MP4 플레이어가 본격적으로 보급되기 시작한 2000년대 들어서 널리 보급되기 시작했지만 2010년대에 들어서며 안드로이드폰이 코덱을 가리지 않게 되고, 대부분 동영상이 h264 코덱을 쓰면서 점점 잊히기 시작했다.

3. 하드웨어별 인코딩 방식



3.1. CPU (소프트웨어) 인코딩


다른 장치를 이용해서 인코딩하는게 아니라면 기본적으로 CPU를 통해 인코딩하게 되는데, 다른 하드웨어 없이 소프트웨어에 의해서만 처리하기 때문에 소프트웨어 인코딩이라고도 부른다. 단, CPU 성능에 절대적으로 의존하기 때문에 고성능 CPU에서 구동하는 것이 좋다. '인코딩은 닥치고 클럭 빨'이라는 말이 나올 정도로 CPU 성능에 크게 좌우된다. 코어 개수와 고클럭 모두 중요. 단, 멀티코어를 제대로 자원하지 않는다면 코어빨은 의미가 없어진다. GPU를 이용하는 인코딩 프로그램도 있으며 그 인코딩 속도는 CPU 따위 저리가라 할 정도로 빠르다. CPU는 서버용이래봐야 칩 하나당 코어가 64개지만(2019년 기준), GPU는 칩 하나에 그래픽 전용 병렬연산 코어가 요즘 기준으로 '''최소 수 백개, 최대 수 천개나 들어가는 매니코어 프로세서이다.''' 하지만 GPU를 이용하면 OpenGL 기반 인코더를 사용하는 경우에는 화질이 떨어진다고 한다. OpenGL이 3D 그래픽 처리용 라이브러리라 정밀도는 신경을 안 쓰기 때문. OpenCL 혹은 CUDA 기반은 이론상으로 품질이 떨어지지 않는다. 반면에 동영상 디코딩 시에는 GPU를 사용하는 것이 이득이다 (DXVA를 이용하는 NVIDIA PureVideo와 AMD UVD, VCN의 디코딩 영역, 인텔의 퀵 싱크 비디오 등).
업무용 인코더의 경우는 별도의 하드웨어 인코더가 장착된 가속장비와 영상입출력 인터페이스를 내장한 형태로 카메라나 VCR 등에서의 입력을 실시간으로 압축하여 파일 형태로 보관하게 된다. 대개의 경우 영상의 재편집이나 납품의 특정한 포맷을 위한 경우가 많다. 여기서 더 발전된 형태로는 스트리밍 기능을 부여하여 생방송용 장비로 운용된다.
그리고 멀티코어 CPU를 지원하는 코덱 및 프로그램을 이용하는 것이 좋다. x264는 멀티 코어를 완전히 지원한다. CPU 코어 수가 많을 수록 다다익선. 본인의 CPU가 멀티코어인데 멀티코어를 지원하지 않는 코덱 및 프로그램을 사용하면 효율이 떨어진다.
현존하는 x264를 제외한 모든 인코더는 완전 무료인 FFmpeg를 기반으로 하며, FFmpeg에서 지원하는 기능이 없을 수 있어도 FFmpeg에 없는 기능을 보유하는 경우는 없다. 물론 다른 프로그램과 연계하는 경우는 제외. 멀티코어 CPU 또한 코덱이 지원한다면 당연히 사용 가능하며, 기본 설정부터가 멀티코어 CPU 사용이다. 심지어 몇몇 프로그램은 구버전을 고집하거나 몇 년 전에 최적화된 프리셋을 사용하는 등 시스템 자원은 더 먹으면서 결과물은 더 안 좋은 상황이 발생하기도 한다. 단지 FFmpegCUI 환경만 지원하므로 접근성이 떨어진다는 문제가 있을 뿐이다. 때문에 개인이 한 두번 인코딩 하는 거면 몰라도, 자주 인코더를 한다면 FFmpeg의 기본적인 명령어와 배치파일 짜는 방법을 익혀 FFmpeg를 사용하는 것이 유료 동영상 인코더를 쓰는 것보다 훨씬 좋다.
CPU만 이용해서 인코딩하는 x264의 경우 옵션을 낮추면 속도가 비약적으로 증가한다. 특수한 경우가 아니면 굳이 속도를 위해 GPU 인코딩을 할 이유가 없다.

3.2. GPU 인코딩


사실 엄밀히 말해 GPU 가속이 화질을 떨어트릴 이유는 없지만, GPU 회사들에서 품질보다는 속도를 위주로 작성되는 가속 지원 라이브러리나, GPU 내장 하드웨어 인코더의 성능 등의 이유로 대부분의 경우에서 떨어지지만 일반인 수준에서는 큰 상관 없는 화질 저하라 속도를 위해 자주 사용되며, 유료 코덱 등으로 이러한 저하를 억제할 수 있다. 작업용 소스나 소장용이 아니고 유튜브, Vimeo, dailymotion 같은 비디오 사이트에 올릴 목적이라면 어차피 업로드 과정에서 압축을 위한 재인코딩 도중 화질 열화가 일어나기 때문에 사용해도 상관없다.
GPU 가속에 사용되는 장치는 크게 두 가지로 나뉘는데, 하나는 게임에서는 셰이딩에 주로 사용되고 게임 외에 다른 전문 분야에서는 범용 연산(GPGPU)에 사용되는 '''스트림 프로세싱 유닛'''(NVIDIA의 CUDA, AMD의 스트림 프로세서, 인텔의 실행 유닛 등)이랑 다른 하나는 오로지 동영상 인코딩을 위한 '''전용 하드웨어 인코더'''로 나뉜다. 그래픽 하드웨어에 따라 쓸 수 있는 기능이 다르다.
GPU 인코딩이 가장 많이 쓰이는 곳은 유튜브 업로드 같은 동영상 서비스인데, 이유는 간단하다. 비트레이트를 넓게 줘도 자체 프로그램으로 어차피 화질 손상이 일어나기 때문이다. 그래서 비트레이트를 평소보다 1.5배 정도 주고 업로드해 버리면 화질을 너무 해치지 않으면서 시간이 절약되는 효율적인 환경을 구축할 수 있다. 실제로 어도비 프리미어 프로에서는 인코딩 할 때 선택할 수 있는 유튜브 프리셋을 보면 비트레이트 설정이 유튜브 권장 비트레이트보다 1.5배 높게 잡혀있는 것을 볼 수 있다.
게임 원컴 방송이나, 녹화시에도 유용한데, NVENC나 퀵 싱크의 경우 게임과 별도의 전용 하드웨어 장치를 활용하기 때문에 게임성능을 거의 떨어뜨리지 않는다. 특히 녹화위주의 유튜버의 경우는 일단 최대 비트레이트로 녹화 해두고 나중에 인코딩을 해서 용량을 줄이는 식으로 사용도 가능하다. 물론 하드웨어 가속으로 비트레이트 최대로 잡고 녹화를 한다면 화질은 좋은 편이겠지만, 무손실 압축마냥 용량이 커지기는 한다.

3.2.1. GPGPU 인코딩


GPU의 셰이딩을 비롯한 범용 연산을 담당하는 주력 장치인 스트림 프로세싱 유닛을 이용하여 가속하는 방식으로, 이론적으로는 GPGPU를 지원하는 모든 그래픽카드가 활용할 수 있어서 범용성 면에서는 장점이 있지만, GPGPU 답게 GPU 체급에 따라 성능에 크게 좌우되어서 빠른 인코딩을 찾는다면 최신의 비싼 그래픽카드를 찾아야 하는 단점이 있다.
  • : 2009년 1월 v181.20 드라이버 버전부터 도입된 NVIDIA CUDA Video Encoder의 약자로, CUDA를 이용하는 인코딩이라서 줄여서 'CUDA 인코더'라고도 부르는데 CUDA 32코어 이상인 모든 NVIDIA 그래픽카드가 지원한다.[1] 속도는 다소 느리고 화질 저하는 보통인데, H.265(HEVC) 동영상을 i5-4460으로 인코딩할 경우 12시간 나올 게 CUDA를 활용하면 대략 35분이면 완성할 수 있을 정도로 속도가 빠르다. 화질 저하는 있지만 그래도 심하지 않아서 일반인이라면 크게 신경 안 써도 될 정도까진 된다. 다만 NVIDIA 측에서 2014년 6월에 발표된 v340.43 베타 드라이버 버전부터 지원을 끊어 버렸기에[2] 사용하기 위해서는 별도의 라이브러리를 설치해야 한다.
  • OpenCL: 사실상 현존 모든 GPU들에서 지원하며, 라이센스가 공개되어 있기 때문에 지원하는 기기가 더욱 많아질 가능성이 높다. 속도는 가장 느리며, 화질 저하는 가장 적다. 과거 TeraScale 3 마이크로아키텍처 이전의 라데온 그래픽카드(주로 HD 2000~6000 시리즈)로 인코딩하려면 이것 말고는 대안이 없었다. VCE가 도입되지 않은 시기였기 때문이다.
  • Metal: Apple 플랫폼에서 주력으로 쓰이며, OpenCL보다 훨씬 빠른 속도를 자랑한다. 어도비 프리미어 프로의 머큐리 엔진이 Metal 가속을 지원하기 시작하며 맥북 프로의 비디오 인코딩 성능이 동급의 윈도우 노트북과 대등 혹은 그 이상의 퍼포먼스를 보여주었을 정도.

3.2.2. 인코딩 전용 하드웨어


GPU 내부에 별도로 탑재된 동영상 인코딩 전용 하드웨어 장치를 이용하여 가속하는 방식으로, GPU의 체급에 상관없는 하드웨어이기 때문에 원하는 인코딩을 위해 굳이 비싼 그래픽카드를 찾을 필요가 없다는 장점이 있다. 하지만 하드웨어의 기능과 성능이 대체로 세대마다 개선되기 때문에 GPU 체급에 상관없이 구형보단 신형 그래픽카드가 절대적으로 더 유리할 수밖에 없으므로, 장기적으로 고려해서 알아볼거면 앞으로를 위해 최신 그래픽카드를 찾는 것이 좋다.
전용 하드웨어 인코더가 인코딩을 전담한다고 해서 GPU 전체적인 이용률이 0%가 되는 것은 아니다. 인코딩과 동시에 출력하는 실시간 인코딩의 경우, 렌더링 및 디스플레이 출력을 위해 GPU 이용률이 어느 정도 나타날 수밖에 없기 때문이다.[3] 최신이지만 비용 아낀다고 무작정 저사양 그래픽카드로 장시간 돌리다간 그래픽카드 자체에 무리를 줄 수 있으므로, 단일 스트림 플랫폼 기준으로 GPU 자원에 어느 정도 여유를 남기려면 최소한 현세대 엔트리~메인스트림 라인의 그래픽카드를 알아보는 것이 안정적이다.
  • 퀵 싱크 비디오: 2011년 샌디브릿지부터 도입된 인텔의 내장 그래픽 내에 들어있는 전용 하드웨어. 브랜드 이름답게 속도에 중점을 둔 인코딩 기술로, 속도가 가장 빠르지만 그만큼 화질 저하도 가장 크다. 저사양 컴퓨터로 방송이나 녹화를 할 수 있게 해 주는 일등공신.
디코딩에 대한 설명은 해당 문서 참조.
  • NVENC: 2012년 케플러 마이크로아키텍처와 함께 소개된 NVIDIA 그래픽카드에 올라가는 전용 하드웨어 인코더. 인텔 퀵싱크처럼 동영상 하드웨어 인코딩을 제어하는 데에 사용되며, 속도는 인텔 퀵싱크에 맞먹지만 화질이 CUDA 인코더라고도 불렀던 GPGPU(CUDA) 방식의 NVCUVENC보다 떨어진다. CUDA는 게임의 경우 3D 그래픽의 셰이딩 역할을 담당하지만 NVENC는 3D 그래픽 코어가 아닌 영상 처리 전용 코어들을 조작한다.
지포스 10 시리즈부터 도입된 5세대에 들어서 화질이 꽤 개선되었고, 지포스 20 시리즈부터 도입된 6세대에 들어서는 x264 fast 옵션과 비슷한 수준이 되었다.[4] 따라서 그냥 엔비디아 최신형 그래픽 하나만 달아놓으면 방송에 지장이 전혀 없기 때문에, 스트리밍으로 돈을 벌정도의 사람이 아니라면 특별히 방송용 견적을 살 필요 없다.
등장한지 2년 뒤에 NVCUVENC의 지원이 중단되었지만 NVENC도 인코딩 전용 하드웨어만으로는 부족하다면 CUDA까지 이용하여 함께 동작해주기도 해서 엄밀히 따지면 하이브리드 인코딩도 지원해주는 유연한 기능이다. 단, 기본적으로 인코딩 전용 하드웨어를 우선으로 동작하므로 반쪽짜리 유연성을 지녔다고 볼 수 있다. OBS Studio 같은 방송 소프트웨어에서 NVENC NEW 인코더를 지원하게 됨으로써 GTX 600번대 이상 그래픽카드 이용자는 게임 프레임 손실 없이 방송이나 녹화가 가능하게 되었다.
참고로 NVDEC는 인코딩이 아닌 디코딩 전용 하드웨어이므로 헷갈리지 말자. 이쪽은 PureVideo와 연계되므로 자세한 내용은 PureVideo 문서 참조.
  • VCE: 2012년 GCN 마이크로아키텍처부터 도입된 AMD 라데온 그래픽 카드의 전용 하드웨어 인코더. 그동안 스트림 프로세서로만 이용해야 했던 TeraScale 3 이전의 마이크로아키텍처와는 다르게 전용 하드웨어 인코더가 탑재되어, 보다 효율적인 인코딩이 가능해졌지만 지원하는 프로그램의 수가 인텔 퀵싱크나 NVENC에 비해서 적다. 2017년 VCE가 VCN에 흡수, 통합되었으므로 현재는 VCN으로 통용된다. 마찬가지로 OBS Studio에서 지원한다. 가능하다면 X264 대신 선택하는게 좋다.
  • VCN: 2017년 1세대 라이젠 APU(레이븐 릿지)부터 도입된 AMD 라데온 그래픽의 인코딩 & 디코딩 전용 하드웨어. 이름만 다를 뿐, 인코딩 부분은 VCE에서 계승되었기 때문에 VCE가 가지고 있는 불리한 점을 고스란히 이어받았다(...).
참고로 디코딩은 UVD에서 계승되었다. 디코딩에 대한 자세한 내용은 해당 문서 참조.

4. 동영상 인코더 목록



4.1. 네이티브(코덱)


  • x264(H.264): 무료이고 오픈소스이다. x264는 FFmpeg에 종속된 프로젝트가 아니며 독립되어 있고 오히려 FFmpeg 쪽에서 x264 소스를 받아다 쓰는 관계이다.
  • x265(H.265)
  • libvpx(VP8, VP9)
  • libaom(AV1)
  • VideoToolbox(H.264, H.265)

4.2. FFmpeg 계열


  • Adobe Media Encoder(유료, 어도비): 이쪽은 독립적인 프로그램이라기보다는 프리미어 프로애프터 이펙트에 딸려있는 프로그램에 가깝다. 독립적으로도 사용 가능 하지만, 프리미어 프로나 애프터 이펙트로 편집한 뒤에 결과물을 미디어 인코더로 내보내서 인코딩 하는 용도로 많이 사용된다. 프리미어나 에펙 자체에서 내보내면 인코딩 하는 동안 그 무거운 프리미어/에펙을 계속 켜둬야 하지만, 미디어 인코더로 내보내서 인코딩하면 무거운 프리미어/에펙을 종료해서 PC 리소스를 인코딩 쪽으로 더 돌릴 수 있는 장점이 있다.

    단품으로 살 수는 없고, 크리에이티브 클라우드에서 프리미어 프로나 애프터 이펙트를 구독하면 같이 딸려온다.
  • Hybrid(무료, FFmpeg 프론트엔드): MeGUI와 기반이 되는 프론트엔드는 다르지만 기능은 비슷하다.
  • IRIVER PLUS(무료, 아이리버)
  • KIES(무료, 삼성전자)
  • Mencoder (무료, 오픈소스) MPlayer에 포함되어 있고 수많은 인코더에서 활용하고 있음
  • MeGUI(무료, Mencoder 프론트엔드): 인코딩을 전문적으로 한다면 꼭 배워야 할 프로그램임.
  • 곰인코더(유료, 그래택)
  • 바닥#s-2(무료, Mencoder 프론트엔드): 키플에서 개발한 프로그램으로 2009년경에 지원을 중단한다고 발표했다.
  • 샤나인코더[5](무료, 부분오픈소스): 키라라 인코더의 후신.[6] 커뮤니티도 있으며 최신 QnA가 하단 표시줄에 등장한다. 팟인코더가 지원중단되고 카카오인코더가 맬웨어 삽입으로 타락한 이후 국산 프리웨어 인코더계의 얼마 안되는 보루이다.
  • 엔젤인코더(무료)
  • : 현재 홈페이지 링크 접속 불가
  • 제트오디오VX (무료 혹은 유료, 코원)
  • : 다음카카오의 이름과 유사한 점을 이용해 인지도를 올린 것을 더해, 실제로는 인코더를 가장한 악성코드이다. Kakao가 아니라 Cacao다.[7] 다음의 서비스들이 카카오로 이름이 변경되면서 이것도 다음팟인코더가 이름이 변한 것이라고 착지하는 경우가 있는데(색깔도 카카오 제품과 똑같은 노란색을 쓴다) 전혀 다른 제품이다. [8]

    2018년 6월 한국교육학술정보원 교육사이버안전부 공식 발표로 카카오인코더를 한번이라도 설치한 적이 있다면 프로그램을 지웠더라도 sch.exe라는 파일이 혼자서 업데이트를 하여 mon.exe를 깔고 다시 smartpoint.exe를 설치하여 사용자 몰래 컴퓨터 소스를 사용하여 그리드를 하고 있다는 것이 밝혀졌다. 언론 기사가 나고 기자가 연락을 취했음에도 카카오툴즈 제작자는 묵묵 부답. 절대 설치하지 않도록 주의해야 하며, 한번이라도 사용했다면 폴더 째로 찾아서 삭제를 하고 바이러스 탐색 프로그램으로 채굴 설치파일과 실행파일 모두 찾아서 지워야 한다. 현재 casebell이라는 유저가 수시로 해당 악성코드에 대한 내용을 지우고 다시 복구하는 반달을 일으키는 중이다. 네이버에 casebell이라는 닉네임을 직접 검색해 본 결과, 카카오 인코더 개발자 본인의 이메일임이 확인되었다.

    2018년 7월 2일에 카카오인코더를 설치하면 사용자의 동의 없이 몰래 악성 프로그램을 설치해 암호화폐 채굴기로 사용한다는 기사가 올라왔다. # 2018년경 버전[9]부터 그랬던것으로 보아 어느샌가 업데이트로 슬그머니 집어넣은 모양.

    2019년 후반 1.95버전 Windows Server 2008 32비트 기준으로는 SCH.EXE나 관련 서비스가 없는 것이 확인되었다. 다만 작동 방식이 변경된 것일 수도 있다. 2020년 현재에도 멀웨어가 숨어져있다. Windows 10을 쓰는 사람이면 방화벽이 잡아내긴 한다.

    2020년 초부터 2020년 8월 현재 현재 공식 사이트(카카오툴즈)에 들어가보면 새로운 브랜드명으로 찾아뵙겠다는 내용, 새로운 브랜드명을 권유하는 프로그램을 설치한다거나, 다음 카카오와는 상관없다는 내용이 들어가있다. 또한 암호화폐 채굴기를 설치하지 않는다는 내용이 올라와있다.
  • : 현재 개발 중단됨
  • 핸드 브레이크(무료, 오픈소스)
  • 미디어 코더(무료)
  • 파워디렉터

5. 인코더 설정 방법


코덱#인코딩설정 또는 FFmpeg#s-4.4 문서 참고.
컨테이너, 퀀타이저,비트레이트, 퀄리티 등 각종 설정방법이 담겨있다.

[1] 지포스 8 시리즈에서는 지포스 8600 GT 이상, 지포스 9 시리즈에서는 9500 GT 이상, 지포스 200 시리즈에서는 GT 220 이상부터 해당된다. 지포스 400 시리즈부터 사용된 페르미 마이크로아키텍처부터는 로우엔드의 CUDA 스펙이 최소 48코어이므로 모든 체급의 그래픽카드들이 지원하는 것으로 보면 된다.[2] WHQL 인증받은 정식 드라이버 기준으로는 2014년 7월에 발표된 v340.52 버전부터[3] 이는 하드웨어 디코딩할 때, 디코딩 처리를 전용 하드웨어 디코더가 전담한다 해도 결과물을 보려면 렌더링 및 디스플레이 출력 과정이 필요하므로 GPU 전체 이용률이 0%가 될 수 없는 것과 비슷한 맥락이다.[4] 실제 성능은 X264 MEDIUM에 필적하는 수준이다.[5] 공식 홈페이지, SourceForge[6] 한때 샤나 인코더 홈페이지에서 키라라 인코더도 다운로드 할 수 있게 배포하였으나 홈페이지 개편 이후 예전 버전들을 한번 정리하면서 현재는 삭제 되었다.[7] 보통 상식적인 개발자들은 자신이 만드는 프로그램명이 다른 기업과 혼동되는 등의 상황을 굉장히 꺼리며, 자신이 만들었기 때문에 오히려 색다른 이름을 쓰고자 하는 경우도 많다. 카카오라는 기업이 이미 있는 상황에서 '카카오'(cacao)라는 이름으로 개발을 시작했다는 것은, 애초에 이름 혼동을 노리고 일부러 저렇게 명명한 것이다. 그렇다면 그 유명세에 묻어가서 광고나 암호화폐 채굴 등의 이익을 얻으려 했을 가능성이 높은, 일종의 계획범죄다. 공교롭게도 카카오인코더 저작권에 명시된 시작 연도가 2011년인데, 그때가 카카오톡이 등장한 2010년 이후 한창 카카오톡 열풍이 불던 때였음을 생각하면 의미심장하다. 공식 홈페이지만 보더라도 줄바꿈조차 제대로 안 되어 있는 텍스트 위주의 사이트로, 개인이 재미삼아 만드는 오픈소스 프로그램들도 GitHubReadme.md 정도의 단장은 하는 것에 비해 매우 정성이 없다. 애초에 그런 것을 만들 능력도 의지도 없으며 사람들 등쳐먹는 데에만 그 의의를 두기 때문이다.[8] 네이버 소프트웨어에서 주의사항에 다음카카오에서 제작한 것이 아니라고 명시되어 있었다. 현재는 네이버 소프트웨어에서 삭제되었다.[9] 암호화폐가 화제가 되던 시기였다.