설치와 초기 설정
형식은 세 가지이고 모두 독립적입니다 — Python, Qt, libmpv, ffmpeg가 내려받은 파일 안에 들어 있어 옆에 따로 설치할 것이 없습니다.
AppImage — 잘 모르겠다면 이걸 받으세요. 어떤 배포판에서도 실행됩니다:
chmod +x dopeIPTV-*.AppImage
./dopeIPTV-*.AppImage
데비안이나 우분투에서는 .deb:
sudo apt install ./dopeiptv_*_amd64.deb
Flatpak:
flatpak install --user dopeIPTV-*.flatpak
셋 다 arm64 빌드가 있어 라즈베리 파이나 ARM 서버에서도 쓸 수 있습니다.
.dmg를 열고 dopeIPTV를 응용 프로그램 폴더로 끌어다 놓으세요. macOS 15 이상이 필요하고 Apple Silicon에서 동작합니다 — Intel 빌드가 있던 마지막 릴리스는 1.2.10입니다.
첫 실행은 거부됩니다. Apple의 공증을 받지 않았기 때문입니다. 앱을 오른쪽 클릭해 열기를 고르고, 대화상자에서 다시 열기를 누르세요. 그래도 안 되면 아래의 「macOS가 앱을 열 수 없다고 합니다」를 보세요.
설치 프로그램은 없습니다. dopeIPTV-*-windows-x64.zip을 원하는 곳에 풀고 — 사용자 폴더면 충분하고 관리자 권한도 필요 없습니다 — 안에 있는 dopeiptv.exe를 실행하세요.
스냅드래곤 노트북용 네이티브 arm64 빌드가 있습니다. x64 빌드도 거기서 돌지만 에뮬레이션을 거치므로 더 느립니다.
시작 메뉴나 바탕화면에 바로 가기를 만들려면: 설정 → 인터페이스 → 유지 관리 → 바로 가기 만들기. 압축 파일 안의 README.txt에 흔적 없이 지우고 싶을 때 삭제할 것들이 모두 적혀 있습니다.
첫 실행 때 Xtream Codes 계정에서 세 가지를 묻습니다:
- 서버 — 포트를 포함한 주소, 예를 들어
http://example.com:8080. 재생 목록 전체 주소가 아니라 호스트만입니다. - 사용자 이름과 비밀번호 — 사업자가 준 것입니다.
이 값들은 저장됩니다. 나중에 계정을 더 추가하거나 이걸 수정하려면 설정 → 재생 목록. 앱이 켜진 채로 재생 목록을 바꿀 수 있고, 즐겨찾기와 기록은 목록마다 따로 보관됩니다.
됩니다. 재생 목록을 추가할 때 M3U를 고르고 사업자가 준 주소를 붙여 넣으세요.
다만 Xtream 계정이 앱에서 더 많은 것을 끌어냅니다 — 다시보기, 계정 만료일, 사업자 자체 편성표 — 이런 것은 M3U 목록에는 없는 API에서 오기 때문입니다. M3U 목록도 재생되고 편성표용 XMLTV 주소를 따로 줄 수 있어 대부분의 차이는 메워집니다.
가능합니다. 설정 마법사가 데모 채널을 제공합니다. Mux, Apple, Bitmovin의 무료 공개 테스트 스트림 몇 개라, 아무것도 입력하기 전에 앱이 어떻게 도는지 볼 수 있습니다. 공식 테스트 스트림이지 누군가의 TV 서비스가 아니며, 언제든 실제 재생 목록으로 넘어갈 수 있습니다.
시청
가운데 목록에서 두 번 클릭하거나, 오른쪽 패널의 ▶ 재생을 누르세요. 다른 채널을 고르면 플레이어를 헐고 다시 짓는 대신 스트림을 그 자리에서 바꿉니다 — 채널 넘기기가 빠른 이유가 이것입니다.
플레이어 막대의 이전과 다음은 지금 있는 목록 안에서 움직입니다 — 채널, 시리즈의 회차, 녹화, 기록.
영화, 회차, 녹화, 다시보기 — 길이를 아는 모든 것에서:
- 화면 위로 포인터를 올리면 진행 막대가 올라옵니다. 지난 시간과 전체 시간, −10초 / +30초 단추가 함께 나옵니다.
- 영상을 한 번 클릭하고 화살표 키를 쓰세요. 한 번 누르면 10초를 건너뛰고, 누르고 있으면 계속 이동합니다.
생방송 채널은 이동할 수 없고 진행 막대도 일부러 보여주지 않습니다. 생방송 안에서 움직이려면 타임시프트가 필요합니다 — 아래를 보세요.
화면을 두 번 클릭하거나 F를 누르세요. Esc로 빠져나옵니다 — 떠 있는 조작 막대의 명시적인 전체 화면 나가기 단추도 마찬가지입니다. 아무도 Esc를 몰라도 되도록 일부러 둔 것입니다.
조작부와 마우스 포인터는 몇 초 가만히 있으면 숨고, 조금만 움직여도 돌아옵니다.
있습니다 — 플레이어를 독립 창으로 떼어내 원하는 곳으로 끌어다 놓으세요.
기본적으로 테두리가 없습니다. 화면 아무 데나 잡고 끌면 옮겨집니다. 오른쪽 클릭으로 항상 위, 제목 표시줄, 종료를 고를 수 있습니다. Esc로도 되돌아옵니다. 그동안 주 창은 계속 동작합니다.
플레이어 막대의 ⚙ 단추 — 전체 화면 조작부에도 있습니다 — 에 지금 보는 스트림에 관한 모든 것이 들어 있습니다:
- 음성 트랙과 자막 트랙
- 음성 지연. 소리가 어긋날 때
- 화면 비율(16:9, 4:3, 늘이기 등)
- 네트워크 버퍼 크기
- Stats for nerds: 코덱, 해상도, 프레임 속도, 하드웨어 디코딩, A/V 동기, 놓친 프레임, 캐시와 네트워크 속도를 화면 위에 실시간으로
고른 트랙은 기억되고, 시리즈에서는 다음 회차로 이어집니다. 모든 스트림에 적용할 기본값을 정하려면 아래 설정을 보세요.
- 스페이스 — 일시정지와 재개
- F — 전체 화면, 나가려면 Esc
- ← / → — 10초, 누르고 있으면 계속
- M — 음소거
주 창, 전체 화면, 떼어낸 창에서 모두 똑같이 동작합니다.
기억합니다. 영화, 시리즈 회차, 녹화, 그리고 내 로컬 파일에 적용됩니다. 다시 열면 그 지점부터 이어보기할지 처음부터 볼지 묻습니다.
맨 앞이나 맨 뒤에 아주 가까운 위치는 일부러 무시합니다. 이제 막 시작한 것이나 사실상 다 본 것에 대해 이어보기를 권하지 않기 위해서입니다.
편성표, 타임시프트, 녹화
사업자에게서 옵니다. 목록의 모든 생방송 채널이 진행 막대와 함께 지금 무엇이 나오는지 보여주고, 상세 패널이 다음에 무엇이 오는지 보여줍니다.
편성표는 재생 목록별로 디스크에 저장되므로 앱을 켜는 순간 화면에 있습니다 — 새 사본은 배경에서 내려받아 교체됩니다. 그 내려받기가 실패해도 저장된 편성표가 남으므로 아무것도 못 보는 일은 없습니다.
있습니다. 사이드바의 가이드 단추가 모든 채널을 아우르는 검색 가능한 편성 격자를 열고, 시간 축을 스크롤할 수 있습니다. 검색은 프로그램 이름으로 모든 채널을 가로질러 찾습니다.
다시보기가 있는 채널에서는 이미 방송된 프로그램을 두 번 클릭하면 보관본에서 재생됩니다.
그 재생 목록에 사업자 것 대신 자체 편성표를 주세요:
- 설정 → 재생 목록
- 목록을 골라 편집
- 사용자 편성표 칸에 XMLTV 주소를 넣기
사업자가 보내는 것을 대체합니다. 앱은 먼저 EPG id로, 다음으로 채널 이름으로 채널을 그 편성표에 맞추므로, 다른 출처의 편성표도 보통은 잘 들어맞습니다.
실제 방송과 맞지 않는 시각을 내보내는 사업자가 있습니다. 설정 → 재생에 서로 다른 보정이 두 개 있습니다:
- EPG 보정은 편성표가 보여주는 모든 시각을 옮깁니다.
- 다시보기 보정은 다시보기와 타임시프트가 재생을 시작하는 지점을 옮기며, 편성표 자체는 건드리지 않습니다.
따로 둔 것은 사업자가 둘 중 하나만 틀리는 일이 있기 때문입니다.
일부 사업자는 각 채널의 녹화를 며칠 치 보관합니다. 여러분의 사업자가 그렇게 하는 채널에는 목록에 ⏪ 표시가 붙고, 상세 패널에 보관본이 며칠까지 거슬러 가는지 나옵니다.
표시가 없다면 그 채널에는 보관본이 제공되지 않는 것입니다. 사업자 쪽 설정이라 앱에서 켤 수 있는 것은 없습니다.
플레이어의 ⏪ 단추를 누르거나 — 전체 화면 조작부에도 있습니다 — 채널을 오른쪽 클릭해 타임시프트를 고르세요. 그다음 처음부터를 선택합니다.
재생되는 것은 보관본의 한 조각이라 영화처럼 이동할 수 있습니다. 진행 막대와 화살표 키가 그 안에서 모두 동작합니다.
있습니다. 타임시프트 메뉴가 지난 프로그램을 날짜별로 묶어 보여줍니다 — 보고 싶은 것을 두 번 클릭하세요. 정해진 폭으로 뒤로 건너뛸 수도 있고, 그 폭은 사업자 보관본의 실제 깊이에 맞춰 30분에서 일주일까지 달라집니다.
보관본 요청을 받아들이고는 조용히 생방송을 내주는 사업자도 있습니다. 앱은 그것을 확인해 알려 줍니다. 어제 것을 보고 있다고 착각하게 두지 않습니다.
들어가는 길이 둘입니다:
- 플레이어의 REC 단추. 지금 보고 있는 것을 녹화합니다.
- 아무 채널이나 오른쪽 클릭 → 녹화. 보고 있지 않은 채널을 녹화합니다.
길이를 고르지 않으면 멈출 때까지 녹화합니다. 녹화 중인 파일도 쓰이는 동안 볼 수 있습니다.
둘 다 됩니다. REC 메뉴에 30분, 1, 2, 4시간이 있고, 예약 녹화는 시작 시각과 종료 시각을 받습니다.
예약은 앱을 다시 켜도 남지만, 실행 시각에 앱이 켜져 있어야 합니다 — 이것은 프로그램이지 배경 서비스가 아닙니다. 녹화 → 진행 중 및 예약됨에서 대기 중인 것을 볼 수 있습니다.
보고 있는 채널을 녹화한다면 아닙니다. 플레이어 자신의 스트림에서 갈라져 나오므로 추가 비용이 없고, 동시에 한 스트림만 허용하는 흔한 계정에서도 동작합니다.
반면 다른 채널의 녹화나 나중에 시작되는 예약 녹화는 사업자에게 별도의 연결을 엽니다.
플레이어에서 녹화할 때 알아둘 점 하나: 녹화가 멈출 때 마무리되므로 재생을 멈추거나, 다른 채널로 넘어가거나, 스트림 오류가 나면 녹화도 끝납니다.
있습니다. 두 단계로요. 설정 → 녹화에 모든 녹화에 적용되는 용량 한도가 있습니다 — 숫자에 MB, GB, TB를 붙입니다. 플레이어의 REC 메뉴에는 지금 이번만 적용되는 빠른 한도가 250 MB부터 10 GB까지 있습니다.
설정 → 녹화에서 지정한 곳입니다. 사이드바의 녹화 구역에서 훑어볼 수 있고, 하위 폴더가 분류 역할을 합니다. 폴더를 만들고, 이름을 바꾸고, 폴더 사이로 옮기고, 여럿을 골라 한 번에 지울 수 있습니다.
멀티뷰, 캐스트, Trakt
생방송 채널 2, 4, 6, 9개를 동시에 격자로 보여주는 별도 창입니다. 각각이 독립된 스트림이고, 서로 다른 재생 목록은 물론 서로 다른 계정에서 와도 됩니다.
사이드바에서 엽니다. 격자 크기는 설정 → 멀티뷰에 있습니다. 칸을 두 번 클릭하면 최대화됩니다.
칸을 클릭하면 그 칸에 소리가 갑니다 — 빨간 테두리가 지금 들리는 칸을 표시합니다.
어느 칸이든 오른쪽 클릭하면 음소거, 음성과 자막 트랙, 다른 칸과 자리 옮기기나 바꾸기, 제거를 할 수 있습니다. 다시보기가 있는 채널은 자기 칸 안에 전용 보관본 시간 축을 얻으므로, 나머지는 생방송으로 두고 한 채널만 되돌려 볼 수 있습니다.
실제로 그렇기 때문입니다 — 칸마다 하나씩. 대부분의 IPTV 계정은 동시에 한두 스트림만 허용하므로, 아홉 칸 격자는 대다수 사업자에게 그대로 거부됩니다.
앱은 실패한 스트림의 벽에서 알게 되기 전에 한 번 알려 줍니다. 「연결 한도에 도달했습니다」가 보인다면 대개 이 때문입니다.
채널, 영화, 회차를 오른쪽 클릭 → Chromecast로 전송…, 그다음 기기를 고르세요. 생방송 채널은 HLS로 보내집니다. Cast 수신기가 기대하는 형식입니다.
전송하면 로컬 재생은 멈춥니다 — 둘을 함께 하면 사업자에 두 번째 연결이 되기 때문입니다. 플레이어 위 띠에 기기와 재생 중인 것이 표시되고 정지 단추가 붙습니다. 앱에서 무언가를 재생해도 전송이 끝나고 재생이 돌아옵니다.
일부 채널은 평범한 H.264 영상에 Dolby Digital Plus 음성이 붙어 있습니다. Ultra도 Google TV도 아닌 Chromecast에는 그 디코더가 없어 이유도 말하지 않고 스트림을 거부합니다.
앱은 그런 경우에만 이 컴퓨터에서 변환해 결과를 여러분의 네트워크 안에 내놓습니다. 영상은 손대지 않고 그대로 복사하고 — 다시 인코딩하는 것은 음성뿐이라 부담이 적습니다 — 게다가 기기가 실제로 거부한 뒤에야 그렇게 합니다. 기기가 재생할 수 있는 채널은 언제나 사업자의 원본 스트림을 그대로 받습니다.
여기에는 ffmpeg가 필요한데, 패키지된 모든 내려받기에 들어 있습니다.
설정 → Trakt. trakt.tv에서 애플리케이션을 만들고, 받은 키 두 개를 붙여 넣은 뒤, 열리는 브라우저에서 승인합니다.
그 뒤로 본 것이 기록되고, 볼 목록과 기록을 앱 안에서 훑어볼 수 있습니다. 내 로컬 파일도 TMDB가 파일을 알아본 경우에는 함께 기록됩니다.
내 파일
있습니다. 사이드바의 로컬 파일이 설정 → 로컬 파일에서 추가한 폴더를 훑습니다.
시스템이 이미 마운트해 둔 네트워크 공유는 저절로 나타납니다 — 리눅스의 gvfs SMB 마운트, macOS의 /Volumes 아래 공유, 윈도우의 연결된 드라이브. 앱이 보기에는 평범한 경로일 뿐이라, 안에 말썽을 부릴 SMB 클라이언트가 들어 있지 않습니다.
둘 다이고, 가운데 열에서 전환합니다.
- 폴더는 디스크에 있는 그대로의 트리를 보여줍니다.
- 라이브러리는 파일 이름을 읽어 시즌과 회차를 갖춘 시리즈를 만들고, 영화는 「영화」 아래에 둡니다 — 사업자 쪽 구역과 같은 모양입니다.
TMDB에서 옵니다. 이름과 연도로 맞출 수 있는 것은 거기서 가져옵니다. 맞출 수 없는 것은 영상에서 한 장면을 잘라내 쓰고, 음악은 파일 태그나 폴더 안의 표지 이미지에서 표지를 가져옵니다.
이름에 연도도 릴리스 태그도 없는 파일은 절대 추측하지 않습니다. 의도한 것입니다. 틀린 포스터는 썸네일보다 나쁘니까요. 맞추고 싶다면 파일 이름에 연도를 넣어 바꾸세요.
합니다. 앨범이 한데 모이고, 아티스트·앨범·제목은 태그에서 오며, 재생 대기열이 있습니다. 한 곡 추가, 폴더 전체를 대기열에, 또는 다음에 재생 — 모두 가능합니다. 한 곡이 끝나면 알아서 다음으로 넘어갑니다.
시각화와 10밴드 이퀄라이저도 있습니다.
옮겨졌거나, 이름이 바뀌었거나, 공유가 마운트되어 있지 않습니다. 기록이 셋 중 무엇인지 알려주고, 조용히 실패하는 대신 항목을 지우겠느냐고 묻습니다.
공유라면 마운트하고 다시 해보세요 — 항목은 예전처럼 동작합니다.
설정
설정 → 인터페이스. 인터페이스는 27개 언어로 번역되어 있고 다시 시작하지 않아도 즉시 바뀝니다. 아랍어, 페르시아어, 히브리어, 우르두어는 배치 전체를 좌우로 뒤집습니다.
같은 탭에 다섯 가지 색 테마와 일곱 가지 강조색이 있고, 그 자리에서 적용됩니다.
설정 → 재생은 매번 시키지 않아도 일어나야 할 일을 정합니다:
- 선호하는 음성 언어
- 자막 켬/끔, 그리고 1순위·2순위 선호 언어
- 기본 화면 비율과 네트워크 버퍼
- 「다음 회차」 카드를 얼마나 일찍 띄울지 — 끄거나, 1분에서 10분
플레이어의 ⚙ 메뉴는 지금 보고 있는 스트림에 한해 이 값들을 여전히 덮어쓸 수 있습니다.
있습니다. PIN이 잠긴 분류와 잠긴 즐겨찾기 묶음을 보호합니다. 잠긴 묶음은 PIN을 넣기 전에는 어떤 채널이 들었는지조차 보여주지 않습니다 — 재생만이 아니라 내용을 감춥니다.
PIN은 솔트를 넣어 해시한 형태로 저장되며, 평문으로 두지 않습니다.
채널, 영화, 시리즈를 오른쪽 클릭해 이름 바꾸기나 숨기기를 하세요. 결과는 사실상 여러분이 손본 재생 목록이고 목록마다 따로 저장됩니다. 기본 채널 복원…을 누르면 사업자가 보내는 그대로 전부 되돌아갑니다.
분류 전체도 분류의 오른쪽 클릭 메뉴에서 숨기거나 이름을 바꾸거나 잠글 수 있습니다. 숨긴 분류의 채널은 「전체」에서도 빠집니다.
설정 → 재생 목록에서 원하는 만큼 추가하고, 앱이 켜진 채로 오갈 수 있습니다. 각 목록이 자기 즐겨찾기, 기록, 숨긴 채널, 이름 변경을 따로 갖습니다.
각각 고유한 XMLTV 주소와 갱신 주기도 가질 수 있습니다 — 하지 않음, 시작할 때, 2·6·12시간마다, 매일, 매주.
무언가 잘못됐을 때
로그는 「안 돼요」를 고칠 수 있는 것으로 바꿔 줍니다. 자격 증명은 자동으로 가려지므로 이슈에 붙여도 안전합니다.
터미널에서 DOPEIPTV_LOG_FILE을 지정해 앱을 실행하면 화면 말고도 그 위치에 로그를 씁니다.
리눅스 — AppImage
DOPEIPTV_LOG_FILE=/tmp/dopeiptv.log ./dopeIPTV-*.AppImage
리눅스 — .deb 또는 pipx
DOPEIPTV_LOG_FILE=/tmp/dopeiptv.log dopeiptv
macOS
DOPEIPTV_LOG_FILE=/tmp/dopeiptv.log \
/Applications/dopeIPTV.app/Contents/MacOS/dopeiptv
윈도우 — PowerShell, 압축을 푼 폴더 안에서
$env:DOPEIPTV_LOG_FILE="$env:TEMP\dopeiptv.log"
.\dopeiptv.exe
문제를 재현하고 앱을 닫은 뒤 그 파일을 첨부하세요. 훨씬 자세한 내용이 필요하면 같은 명령 앞에 DOPEIPTV_LOG=debug를 붙이세요.
터미널에서 실행해 보세요 — 위의 답에 여러분 환경에 맞는 정확한 명령이 있습니다 — 그리고 무엇이 찍히는지 읽어 보세요. 대개는 거기에 원인이 적혀 있습니다.
패키지된 빌드는 필요한 것을 모두 안고 있습니다. pipx로 소스에서 설치했다면 배포판의 mpv와 ffmpeg도 필요합니다:
sudo apt install mpv ffmpeg # Debian/Ubuntu
sudo dnf install mpv ffmpeg # Fedora
sudo pacman -S mpv ffmpeg # Arch
내장 플레이어가 영상 표면을 얻지 못하고 있습니다.
⚙ → Stats for nerds를 열어 프레임이 들어오기는 하는지 보세요 — 스트림 문제와 표시 문제를 갈라 줍니다.- Wayland에서는 설정 → 재생 → X11 백엔드로 실행을 시도하고 앱을 다시 켜세요.
- 터미널에서 실행해 GL이나 mpv가 언급된 줄을 찾아보세요.
아직 Apple의 공증을 받지 않았기 때문입니다. 앱을 오른쪽 클릭해 열기를 고르고 대화상자에서 다시 열기를 누르거나 — 시스템 설정 → 개인정보 보호 및 보안 → 그래도 열기에서 허용하세요.
macOS가 대신 앱이 「손상되었다」고 한다면, 그것은 내려받을 때 붙은 격리 표시입니다. 지우세요:
xattr -dr com.apple.quarantine /Applications/dopeIPTV.app
두 경고 모두 앱에 문제가 있다는 뜻이 아닙니다 — 빌드에 서명이 없다는 뜻일 뿐이고, 서명에는 유료 Apple 인증서가 필요합니다.
SmartScreen이 게시자를 알아보지 못해서입니다. 빌드에 서명이 없고, 서명에는 유료 인증서가 필요합니다. 추가 정보를 누른 뒤 실행을 고르세요.
오탐입니다. 그 원인 가운데 둘은 1.2.10에서 해결했습니다. 실행 진입점을 안티바이러스 엔진이 시그니처를 갖고 있는 기성 파일 대신 소스에서 컴파일하게 했고, 실행 파일에 제대로 된 버전 리소스를 넣었습니다.
그래도 엔진이 표시한다면 안티바이러스에서 그 폴더를 허용하고 오탐을 Microsoft에 신고하세요 — 결국 그것이 여러분만이 아니라 모두를 위해 문제를 풀어 줍니다.
앱이 사업자에게 물어보고, 맨 오류 대신 이유를 쉬운 말로 알려 줍니다: 계정 만료, 연결 한도 도달, 스트림 없음, 서버에 닿지 않음 등.
다른 채널이 나온다면 그 채널의 문제입니다. 아무것도 나오지 않는다면 설정 → 재생 목록을 보세요 — 계정 패널에 만료일과 허용 연결 수가 나옵니다.
계정이 허용하는 동시 스트림 수가 모두 차 있습니다. 가능성이 높은 순서로:
- 멀티뷰가 열려 있음 — 칸마다 연결 하나입니다.
- 다른 채널의 녹화가 돌고 있음.
- 다른 기기나 다른 사람이 계정을 쓰고 있음.
- 이전 세션이 사업자 쪽에서 아직 끊기지 않음. 1분쯤 기다리면 풀리는 일이 많습니다.
보고 있는 채널을 녹화하는 것은 두 번째 연결로 세지 않습니다.
Wayland에서 GNOME과 KDE는 창의 아이콘을 그에 맞는 데스크톱 항목에서 가져오고, 프로그램이 스스로 지정한 것은 무시합니다. AppImage에는 무언가가 만들어 주기 전까지 그런 항목이 없습니다.
- 앱이 첫 실행 때 하나 만들자고 제안합니다. 받아들이고 — 그런 다음 앱을 다시 시작하세요. 열려 있는 창은 열릴 때의 아이콘을 그대로 유지하기 때문입니다.
- 거절했다면 같은 스위치가 설정 → 재생에 있습니다.
- 그래도 아이콘이 나오지 않으면 오래된 아이콘 캐시가 가리고 있는 것입니다. GTK는 폴더 대신 그 파일을 읽습니다:
rm ~/.local/share/icons/hicolor/icon-theme.cache
.deb로 설치했다면 항목이 이미 있으므로 여기 적은 것은 해당하지 않습니다.
그 항목은 시스템의 독립 mpv나 vlc를 실행하므로 둘 중 하나가 설치되어 있어야 합니다 — 내장 플레이어는 추가로 필요한 것이 없고 이 일과 무관합니다.
sudo apt install mpv vlc # Debian/Ubuntu
sudo dnf install mpv vlc # Fedora
sudo pacman -S mpv vlc # Arch
일치하는 항목이 없습니다. 더 짧은 낱말로 해보세요 — 검색은 입력한 낱말이 모두 같은 답 안에 있어야 합니다.