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
 비디오 플레이어 소프트웨어 비교

 각주 

 외부 링크 

 

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