Я установил Ubuntu 16.04, и у меня есть NVIDIA GTX 1070 OC. Я добавил этот PPA:
ppa:graphics-drivers/ppa
И я установил пакет nvidia-370 для своего GTX 1070 OC. Затем я играл 4K видеофайл с Кодеком HEVC и исключил, чтобы аппаратное ускорение было включено к аппаратным средствам, декодирующим кодек HEVC, но mpv игрок использовал программное обеспечение, декодирующее модификацию. Как я могу устранить эту проблему?
Отказ от ответственности: извините, но это ответ для VLC, а не для проигрывателя mpv. Я считаю, что в mpv-плеере есть ошибки или отсутствие поддержки, потому что в моей настройке, в то время как VLC отлично работает с низким процессором, mpv-плеер нет. Вы можете столкнуться с проблемой многопоточности FFmpeg (см. Пункт 4).
Мне очень трудно заставить это работать, и я немного разочарован ограниченной поддержкой NVIDIA GTX 10 * 0 (Pascal) HEVC по сравнению с AMD.
Прежде всего:
На момент написания драйвер NVIDIA 367.57 поддерживает только профиль HEVC Основной
, НЕ Основные 10
и другие. См .: Запрос функции на форуме NVIDIA . Это ограничение драйвера NVIDIA для Linux, оборудование (GTX10 * 0) технически поддерживает его (MPC-HC в Windows легко читает Main 10
).
Обратите внимание, что в большинстве фильмов 4K, закодированных с помощью HEVC, теперь используется профиль HEVC Main 10
.
Проверьте профиль HEVC медиафайла: Вы можете проверить профиль HEVC файла, щелкнув файл правой кнопкой мыши> Свойства
> вкладка Аудио / видео
> Видео
> Кодек
.
Проверьте поддержку профиля драйвера HEVC: Переключитесь на проприетарные драйверы NVIDIA (см. Ниже) и запустите:
$ vdpauinfo
Information string: NVIDIA VDPAU Driver Shared Library 367.57 [crop]
Decoder capabilities:
name level macbs width height
----------------------------------------------------
[crop]
HEVC_MAIN 153 262144 8192 8192
HEVC_MAIN_10 --- not supported ---
HEVC_MAIN_STILL --- not supported ---
HEVC_MAIN_12 --- not supported ---
HEVC_MAIN_444 --- not supported ---
Вам нужна как минимум версия R367 ( nvidia-367
).
software-properties-gtk &
Перейдите на вкладку Дополнительные драйверы
, установите флажок Бинарный драйвер NVIDIA
и Применить
изменения.
Конечно, вы должны включить аппаратное ускорение в VLC> Инструменты
> Настройки
( Простой
)> Вход / Кодеки
> Декодирование с аппаратным ускорением
= Авто
. Для NVIDIA вы можете явно выбрать видеодекодер VDPAU
.
В VLC 2.2.2 (Ubuntu 16.04) есть несколько ошибок, исправленных в более поздних версиях ( см .: журнал изменений ), которые приводят к этой вводящей в заблуждение ошибке :
$ vlc --version
VLC media player 2.2.2 Weatherwax
$ vlc <file>
[crop]
[00007fa4b42cc5d8] vdpau_avcodec generic error: unsupported codec 1211250229 or profile 1
Это явно вводящая в заблуждение и ошибочная ошибка. Трудно сказать, но 1211250229
действительно означает AV_CODEC_ID_HEVC
(можно проверить, скомпилировав с rustc
этот ржавый код ) . Из vdpauinfo
мы видели, что поддерживается профиль HEVC 1
( = Main
).
В настоящее время VLC 2.2.4 недоступен из официального VLC PPA ( проверьте стабильную версию здесь ). Поэтому обновитесь до VLC 3.0 из основной ветки ( проверьте главную версию здесь ), но имейте в виду, что это ночной выпуск:
$ sudo add-apt-repository ppa:videolan/master-daily
$ sudo apt update
$ sudo apt install vlc
$ vlc --version
[crop]
VLC version 3.0.0-git Vetinari
Поскольку этого недостаточно, теперь вы можете столкнуться с этой проблемой:
$ vlc <file> --verbose
[crop]
[00007f6bc4ccc688] avcodec decoder warning: thread type 1: disabling hardware acceleration
Пояснения к этой ветке на форуме VLC:
Это означает, что вы используете FFmpeg, который больше не позволяет одновременно включать аппаратное ускорение и многопоточность. Вам необходимо использовать libav [но] это решается при компиляции VLC. Вы не можете изменить его во время выполнения .
В том же потоке есть обходной путь: В VLC> Инструменты> Настройки (Все)> Вход / Кодеки> Видеокодеки> FFmpeg, измените значение Threads
с 0
(авто) на 1
.
Готово!
Но это ручной обходной путь: имейте в виду, что для просмотра видео без ускорения на GPU вам следует сбросить настройку VLC FFmpeg Threads
, чтобы использовать все ядра процессора ... или скомпилировать VLC из исходного кода с libav.