Mpv (미디어 플레이어)

**mpv**는 엠플레이어, mplayer2 및 FFmpeg를 기반으로 하는 자유-오픈 소스 미디어 플레이어이다. 유닉스 계열 운영체제(리눅스, BSD 기반, macOS) 및 마이크로소프트 윈도우를 포함한 여러 운영체제에서 실행되며, mpv-android라는 안드로이드 포트도 있다. 크로스 플랫폼이며 ARM, MIPS, PowerPC, RISC-V, s390x, X86/IA-32, X86-64 및 기타 타사에서 지원되는 일부 플랫폼에서 실행된다.

## 역사
mpv는 2012년에 빈센트 랑(wm4로도 알려짐)이 2010년에 엠플레이어에서 포크된 mplayer2에서 포크했다. 포크의 동기는 유지보수 불가능한 코드를 제거하고 매우 오래된 시스템에 대한 지원을 중단하여 개발자 활동을 장려하기 위함이었다. 그 결과 프로젝트는 많은 기여를 받았다.

2015년 6월부터 프로젝트의 소스 코드는 mpv를 더 많은 애플리케이션에서 라이브러리로 사용할 수 있도록 GNU 일반 공중 사용 허가서 버전 2 이상(GPLv2+)에서 GNU 약소 일반 공중 사용 허가서 버전 2.1 이상(LGPLv2.1+)으로 재라이선싱되고 있다.

## 엠플레이어의 변화
mpv는 엠플레이어에서 포크된 이후 몇 가지 주목할 만한 변화가 있었다. 첫눈에 가장 분명한 변화는 기본적인 마우스 상호작용을 제공하는 최소한의 온스크린 컨트롤러(OSC)가 추가되었다는 점이다. 이는 새로운 사용자가 상호작용하기 쉽도록 하고 정확하고 직접적인 탐색을 가능하게 하기 위함이었다.

***비디오 웹사이트**: yt-dlp를 사용하여 mpv는 유튜브 및 1000개 이상의 지원되는 다른 사이트에서 고화질 콘텐츠 및 오디오 재생을 기본적으로 지원한다. 이를 통해 mpv는 HTML5 기반의 사이트별 비디오 플레이어를 대체할 수 있다.
***고품질 비디오 출력**: mpv는 OpenGL 및 벌컨 API를 기반으로 하는 사용자 지정 비디오 출력 드라이버를 포함하며, 고급 업스케일링 필터, 색 관리, 사용자 정의 픽셀 셰이더 사용 등 재생 품질을 제어하는 100개 이상의 옵션을 지원한다.
***오디오 스케일링 알고리즘**: 플레이어는 일정한 피치에서 속도를 변경하는 `scaletempo2` 매개변수를 갖추고 있으며, 이를 위해 Waveform Similarity Overlap-and-add (WSOLA) 알고리즘을 사용한다. 이는 원래 엠플레이어에서 사용된 오리지널 스케일템포 및 고무 밴드보다 더 부드럽다고 언급된다.
***향상된 클라이언트 API**: mpv는 독립형 미디어 플레이어로 작동하는 것 외에도 `libmpv`라는 라이브러리 인터페이스를 통해 다른 애플리케이션에서 직접 사용되도록 설계되었다. Plex는 이 기능을 사용하는 애플리케이션의 예이다. 결과적으로 모든 mpv 코드는 스레드 안전해야 한다. 이러한 형태의 플레이어 제어는 JSON IPC 메커니즘과 함께 엠플레이어의 "슬레이브 모드"를 대체한다.
***인코딩 서브시스템**: mpv는 다른 형식으로 재생 중인 파일을 저장하는 데 사용할 수 있는 새로운 비디오 인코딩 모드를 포함한다. 이를 통해 mpv는 트랜스코더로 작동하여 많은 비디오 형식을 지원한다. 이 기능은 플레이어에 내장된 것이 아닌 별도의 프로그램이었던 엠플레이어의 MEncoder 구성 요소를 직접 대체한다.
***Lua 스크립팅**: mpv의 동작 및 기능은 Lua 스크립팅 언어로 작성된 작은 프로그램을 사용하여 사용자 정의할 수 있으며, 이는 비디오 자르기, 그래픽 사용자 인터페이스 (GUI) 제공 또는 디스플레이의 주사율 자동 조정과 같은 작업에 사용할 수 있다.

### 제거된 기능
* VCD 디스크에 대한 모든 지원

## 인터페이스 및 그래픽 프론트엔드
원래 엠플레이어와 마찬가지로 mpv는 여전히 주로 명령줄 애플리케이션이다. 그러나 제한된 마우스 제어를 허용하는 기본적인 온스크린 컨트롤러(OSC)도 있다. 이 OSC는 아직 완전한 기능을 갖춘 GUI는 아니며, Qt, GTK 또는 다른 툴킷용 GUI 위젯을 사용하여 더 완벽한 UI를 제공하는 여러 그래픽 프론트엔드가 있다.

다음은 mpv(libmpv 또는 mpv의 명령줄 버전 기반)의 일부 오픈 소스 프론트엔드이며, mpv보다 더 많은 기능과 더 사용자 친화적인 인터페이스 및 다양한 운영체제 또는 데스크톱 환경과의 더 나은 통합을 제공하려고 노력한다.
* Baka MPlayer - 윈도우, 리눅스, macOS용 미디어 플레이어. macOS 버전은 사용자가 소스에서 컴파일해야 하지만, Qt5 위젯을 사용하고 C++로 작성되었다. 주요 목표는 깔끔하고 단순한 디자인이다. 2017년 1월에 개발이 중단되었고, 동일 개발자가 만든 또 다른 mpv 프론트엔드인 Mochi Player가 아직 완성되지 않았다.
* C-Play - 여러 컴퓨터 및 디스플레이에서 비디오/이미지 콘텐츠를 실행해야 하는 클러스터 환경을 위해 개발된 비디오/미디어 플레이어이다. 디스플레이는 평면 또는 곡면일 수 있으며, 비디오 콘텐츠는 180도 풀돔/어안, 360도 등각 직사각형 또는 등각 입방 맵 또는 일반 평면 콘텐츠뿐만 아니라 입체 영상(나란히 또는 위-아래)도 될 수 있다. 설치 프로그램 및 테스트는 주로 마이크로소프트 윈도우용으로 수행되지만, 코드는 C++로 Qt6/Qt5 QML UI로 작성된 크로스 플랫폼이다.
* Deepin Movie - 리눅스용 - 중국 Deepin 배포판 및 데스크톱 환경에서 작성되고 기본 비디오 플레이어이다.

섬네일|GNOME MPV (셀룰로이드) 0.18 및 설정
* Celluloid (이전 GNOME MPV) - 리눅스용 - GTK 기반이다. 목표는 GNOME Human Interface Guidelines를 충족하는 mpv를 위한 간단한 GTK 기반 그래픽 인터페이스가 되는 것이다.
* Haruna Media Player - 리눅스, 윈도우용 - Qt/QML 기반이다. KDE 미디어 플레이어 프로젝트로, 유튜브 지원 및 사용자 정의 가능한 단축키를 제공한다.
* IINA - macOS 10.10+ 미디어 플레이어로 네이티브 macOS Cocoa 인터페이스를 사용한다. 최신 macOS 버전의 새로운 기능을 활용하는 mpv를 위한 완전한 기능을 갖춘 네이티브 macOS 그래픽 인터페이스이다. mpv 구성 파일 및 스크립트 시스템도 통합되어 있다.
* ImPlay - imgui 인터페이스 라이브러리로 구축된 인터페이스를 갖춘 크로스 플랫폼 미디어 플레이어로, 플레이어와 상호 작용하기 위한 컨텍스트 메뉴와 명령 팔레트를 포함한다.
* Kawaii-Player - 리눅스 및 윈도우 10 - Qt5 위젯을 사용하는 미디어 플레이어 및 미디어 서버이다. 목표는 단순한 멀티미디어 플레이어가 아니라 오디오/비디오 라이브러리 관리자이자 휴대용 미디어 서버 및 토렌트 스트리밍 서버/플레이어가 되는 것이다.
* Media Player Classic Qute Theater (mpc-qt) - 리눅스 및 윈도우 미디어 플레이어로 C++로 작성되었으며 Qt5 위젯을 사용한다. 목표는 윈도우 전용 프로그램인 미디어 플레이어 클래식 홈 시네마 (mpc-hc)의 기능을 복제하고 궁극적으로 개선하여 리눅스와 같은 유닉스 계열 운영체제에서도 작동하는 크로스 플랫폼 mpv 기반 멀티미디어 플레이어가 되는 것이다.
* mpv.net - 윈도우 미디어 플레이어로 네이티브 윈도우 인터페이스를 사용한다. 목표는 윈도우에서 표준 mpv OSC 인터페이스를 제공하고 사용자 정의 가능한 윈도우 컨텍스트 메뉴, C# 스크립팅 및 애드온을 위한 Managed Extensibility Framework (MEF)를 제공하는 것이다.
* OvoPlayer - 리눅스 및 윈도우 음악 플레이어로 많은 백엔드를 지원하며, LCL 위젯세트를 기반으로 파스칼로 작성되었다. 목표는 mpv와 같은 가능한 한 많은 오디오 엔진 백엔드를 지원하는 유연한 오디오 플레이어가 되는 것이다.
* SMPlayer - MPlayer 또는 mpv를 사용할 수 있는 완전한 기능의 크로스 플랫폼 스킨 변경 가능 플레이어로 고급 기능과 유튜브 및 크롬캐스트를 지원한다. 마이크로소프트 윈도우, 리눅스 및 macOS에서 사용할 수 있으며 Qt4/Qt5로 C++로 작성되었다.
* Sugoi Player - Baka MPlayer에서 포크된 윈도우용 미디어 플레이어(리눅스 및 macOS에서도 작동할 수 있지만 테스트되지 않음)로, Qt5 위젯을 사용하고 C++로 작성되었다. Baka MPlayer의 개발이 2017년 1월에 중단된 이후 Baka MPlayer를 기반으로 하는 mpv 프론트엔드의 개발을 개선하고 계속하는 것을 목표로 한다.
* xt7-player-mpv - 리눅스 미디어 플레이어로, 감바스 3(베이직의 방언)으로 작성되었으며 Qt5 또는 Qt4 위젯을 사용한다. 목표는 사용성, 유튜브 및 SHOUTcast 통합, 미디어 태깅, 라이브러리 및 재생 목록 관리와 같은 다양한 추가 기능 및 그 이상의 기능을 추가하는 것이다.

## 같이 보기

* FFmpeg - mpv에 권장되는 디코딩 라이브러리
* Libavcodec – mpv가 디코딩에 사용하는 API
* 비디오 플레이어 소프트웨어 비교

## 각주

## 외부 링크

* 

분류:크로스 플랫폼 자유 소프트웨어