Как включить Аппаратное ускорение

Я установил Ubuntu 16.04, и у меня есть NVIDIA GTX 1070 OC. Я добавил этот PPA:

ppa:graphics-drivers/ppa

И я установил пакет nvidia-370 для своего GTX 1070 OC. Затем я играл 4K видеофайл с Кодеком HEVC и исключил, чтобы аппаратное ускорение было включено к аппаратным средствам, декодирующим кодек HEVC, но mpv игрок использовал программное обеспечение, декодирующее модификацию. Как я могу устранить эту проблему?

3
задан 10 October 2016 в 00:57

1 ответ

Отказ от ответственности: извините, но это ответ для VLC, а не для проигрывателя mpv. Я считаю, что в mpv-плеере есть ошибки или отсутствие поддержки, потому что в моей настройке, в то время как VLC отлично работает с низким процессором, mpv-плеер нет. Вы можете столкнуться с проблемой многопоточности FFmpeg (см. Пункт 4).

Мне очень трудно заставить это работать, и я немного разочарован ограниченной поддержкой NVIDIA GTX 10 * 0 (Pascal) HEVC по сравнению с AMD.

Прежде всего:

Предупреждение: NVIDIA поддерживает только основной профиль HEVC в Linux

На момент написания драйвер 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 ---

1.Перейдите на проприетарные драйверы NVIDIA

Вам нужна как минимум версия R367 ( nvidia-367 ).

 software-properties-gtk &

Перейдите на вкладку Дополнительные драйверы , установите флажок Бинарный драйвер NVIDIA и Применить изменения.

2. Включение аппаратного ускорения в VLC

Конечно, вы должны включить аппаратное ускорение в VLC> Инструменты > Настройки ( Простой )> Вход / Кодеки > Декодирование с аппаратным ускорением = Авто . Для NVIDIA вы можете явно выбрать видеодекодер VDPAU .

3. Обновите VLC до версии 2.2.4 или 3.0

В 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

4.Временно отключите многопоточность VLC FFmpeg

Поскольку этого недостаточно, теперь вы можете столкнуться с этой проблемой:

$ 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.

1
ответ дан 1 December 2019 в 17:32

Другие вопросы по тегам:

Похожие вопросы: