Невозможно воспроизвести видео HEVC (H.265) без лаг (Ubuntu 16.04)

Правильный путь

Вы действительно должны использовать gtk-launch, если он доступен. Обычно это часть пакета libgtk-3-bin (это может варьироваться в зависимости от дистрибутива).

gtk-launch используется следующим образом:

gtk-launch APPLICATION [URI...]
gtk-launch app-name.desktop
gtk-launch app-name

Обратите внимание, что gtk-launch требует установки файла .desktop (т.е. находится в /usr/share/applications или ~/.local/share/applications).

Итак, чтобы обойти это, мы можем использовать хакерскую маленькую функцию Bash, которая временно устанавливает желаемый [d5 ] .desktop перед запуском. «Правильный» способ установить файл .desktop через desktop-file-install, но я проигнорирую это.

launch(){

    # Usage: launch PATH [URI...]

    # NOTE: The bulk of this function is executed in a subshell, i.e. `(..)`
    #       This isn't strictly necessary, but it keeps everything
    #       out of the global namespace and lessens the likelihood
    #       of side effects.

    (

    # where you want to install the launcher to
    appdir=$HOME/.local/share/applications

    # the template used to install the launcher
    template=launcher-XXXXXX.desktop

    # ensure $1 has a .desktop extension, exists, is a normal file, is readable, has nonzero size
    # optionally use desktop-file-validate for stricter checking
    # desktop-file-validate "$1" 2>/dev/null || {
    [[ $1 = *.desktop && -f $1 && -r $1 && -s $1 ]] || {
        echo "ERROR: you have not supplied valid .desktop file" >&2
        return 1
    }

    # ensure the temporary launcher is deleted upon exit
    trap 'rm "$launcherfile" &>/dev/null' EXIT

    # create a temp file to overwrite later
    launcherfile=$(mktemp -p "$appdir" "$template")

    launchername=${launcherfile##*/}

    # overwrite temp file with the launcher file
    if cp "$1" "$launcherfile" &>/dev/null; then
        gtk-launch "$launchername" "${@:2}"
    else
        echo "ERROR: failed to copy launcher to applications directory" >&2
        return 1
    fi

    )

}

Вы можете использовать его так же (а также передать дополнительные аргументы или URI если вы хотите):

launch PATH [URI...]
launch ./path/to/shortcut.desktop

Альтернативный вариант

Если вы хотите вручную разобрать и выполнить .desktop файл, вы можете сделать это со следующей командой awk:

awk '/^Exec=/ {sub("^Exec=", ""); gsub(" ?%[cDdFfikmNnUuv]", ""); exit system($0)}' app-name.desktop

Если вы хотите рассматривать команду awk как скрипт «все-в-одном»; мы можем даже показать сообщение об ошибке и выйти с кодом возврата 1 в случае, если команда Exec не найдена:

awk 'BEGIN {command=""} /^Exec=/ {sub("^Exec=", ""); gsub(" ?%[cDdFfikmNnUuv]", ""); command=$0; exit} END {if (command!="") {exit system(command)} else {if (FILENAME == "-") {printf "ERROR: Failed to identify Exec line\n" > "/dev/stderr"} else {printf "ERROR: Failed to identify Exec line in \047%s\047\n", FILENAME > "/dev/stderr"} close("/dev/stderr"); exit 1}}'

Вышеупомянутые команды будут:

Найти строка, начинающаяся с Exec = Удалить Exec = Удалить любые переменные Exec (например, %f, %u, %U). Их можно заменить позиционными аргументами, как это предусмотрено спецификацией, но это может значительно усложнить проблему. См. Последнюю спецификацию рабочего стола. Выполнение команды Немедленно выйдите с соответствующим кодом выхода (чтобы не выполнять несколько строк Exec)

Обратите внимание, что этот AWK-скрипт обращается к нескольким краевым случаям, которые могут быть или не быть надлежащим образом устранены некоторыми другими ответы. В частности, эта команда удаляет несколько переменных Exec (если не удалять символ%), будет выполняться только одна команда линии Exec и будет вести себя как ожидалось, даже если команда линии Exec содержит один или больше знака равенства (например, script.py --profile=name).

Просто несколько других предостережений ... Согласно спецификации, Exec :

Путь к исполняемый файл на диске, используемый для определения того, действительно ли программа установлена. Если путь не является абсолютным путем, файл просматривается в переменной среды $ PATH. Если файл отсутствует или если он не является исполняемым, запись может быть проигнорирована (например, не используется в меню).

Имея это в виду, нет смысла исполнять его значение.

Некоторые другие проблемы - это Path и Exec . Путь состоит из рабочего каталога для запуска программы. Терминал - это логическое значение, указывающее, запускается ли программа в окне терминала. Все это можно решить, но нет смысла изобретать колесо, поскольку уже есть реализация спецификации. Если вы хотите реализовать Path, имейте в виду, что system() создает подпроцесс, поэтому вы не можете изменить рабочий каталог, выполнив что-то вроде system("cd \047" working_directory "\047"); system(command). Однако вы могли бы сделать что-то вроде system("cd \047" working_directory "\047 && " command). Примечание. \ 047 - одинарные кавычки (поэтому команда не разбивается на пути с пробелами).

Альтернатива Python

Я краду страницу у Карло, которая предложила создать скрипт Python для использования модуля Path . Вот минимальный способ выполнить один и тот же код из оболочки без необходимости создавать файл и беспокоиться о вводе / выводе.

launch(){

# Usage: launch PATH [URI...]

python - "$@" <<EOF
import sys
from gi.repository import Gio
Gio.DesktopAppInfo.new_from_filename(sys.argv[1]).launch_uris(sys.argv[2:])
EOF

}

Затем выполнить функцию запуска следующим образом:

launch ./path/to/shortcut.desktop

Обратите внимание, что использование URI не является обязательным. Кроме того, проверка ошибок не выполняется, поэтому вы хотите убедиться, что пусковая установка существует и доступна для чтения (перед ее использованием), если вы хотите, чтобы ваш скрипт был долговечным.

1
задан 10 January 2018 в 14:38

3 ответа

Что касается этой темы, отправьте номер 4: https://forums.geforce.com/default/topic/981372/geforce-basics/which-gpus-support-hevc-akah-265-/

Потребительский класс: список поддержки GeForce (только набор функций «D» или выше) Набор функций «D» поддерживает H.264 (до 4032 × 4048 пикселей). Набор функций E, F и H поддерживают H.265 (вверх до 8192x8192 / 8k)

по сравнению с таблицей в https://forums.geforce.com/default/topic/981372/geforce-basics/which-gpus-support-hevc-akah -265 - /

Потребительский класс: список поддержки GeForce (только набор функций «D» или выше) Набор функций «D» поддерживает H.264 (до 4032 × 4048 пикселей .) Набор функций E, F и H поддерживают H.265 (разрешение до 8192x8192 / 8k)

GT 750M - GK107 - VP5 - D - март 2012 г.

The fifth generation PureVideo HD The fifth generation of PureVideo HD, introduced with the GeForce GT 520 (Fermi (microarchitecture)) and also included in the Nvidia GeForce 600/700 (Kepler (microarchitecture)) series GPUs has significantly improved performance when decoding H.264.[11] It is also capable of decoding 2160p 4K Ultra-High Definition (UHD) resolution videos at 3840 × 2160 pixels (doubling the 1080p Full High Definition standard in both the vertical and horizontal dimensions) and, depending on the driver and the used codec, higher resolutions of up to 4032 × 4080 pixels. The fifth generation PureVideo HD is sometimes called "PureVideo HD 5" or "VP5", although this is not an official Nvidia designation. This generation of PureVideo HD corresponds to Nvidia Feature Set D (or "VDPAU Feature Set D").
1
ответ дан 22 May 2018 в 15:39
  • 1
    Моя вина! Я не понял, что прошло 5 лет с момента моего GPU, о котором было объявлено в 2013 ... – packmad 10 January 2018 в 14:55

Что касается этой темы, отправьте номер 4: https://forums.geforce.com/default/topic/981372/geforce-basics/which-gpus-support-hevc-akah-265-/

Потребительский класс: список поддержки GeForce (только набор функций «D» или выше) Набор функций «D» поддерживает H.264 (до 4032 × 4048 пикселей). Набор функций E, F и H поддерживают H.265 (вверх до 8192x8192 / 8k)

по сравнению с таблицей в https://forums.geforce.com/default/topic/981372/geforce-basics/which-gpus-support-hevc-akah -265 - /

Потребительский класс: список поддержки GeForce (только набор функций «D» или выше) Набор функций «D» поддерживает H.264 (до 4032 × 4048 пикселей .) Набор функций E, F и H поддерживают H.265 (разрешение до 8192x8192 / 8k)

GT 750M - GK107 - VP5 - D - март 2012 г.

The fifth generation PureVideo HD The fifth generation of PureVideo HD, introduced with the GeForce GT 520 (Fermi (microarchitecture)) and also included in the Nvidia GeForce 600/700 (Kepler (microarchitecture)) series GPUs has significantly improved performance when decoding H.264.[11] It is also capable of decoding 2160p 4K Ultra-High Definition (UHD) resolution videos at 3840 × 2160 pixels (doubling the 1080p Full High Definition standard in both the vertical and horizontal dimensions) and, depending on the driver and the used codec, higher resolutions of up to 4032 × 4080 pixels. The fifth generation PureVideo HD is sometimes called "PureVideo HD 5" or "VP5", although this is not an official Nvidia designation. This generation of PureVideo HD corresponds to Nvidia Feature Set D (or "VDPAU Feature Set D").
1
ответ дан 17 July 2018 в 23:31

Что касается этой темы, отправьте номер 4: https://forums.geforce.com/default/topic/981372/geforce-basics/which-gpus-support-hevc-akah-265-/

Потребительский класс: список поддержки GeForce (только набор функций «D» или выше) Набор функций «D» поддерживает H.264 (до 4032 × 4048 пикселей). Набор функций E, F и H поддерживают H.265 (вверх до 8192x8192 / 8k)

по сравнению с таблицей в https://forums.geforce.com/default/topic/981372/geforce-basics/which-gpus-support-hevc-akah -265 - /

Потребительский класс: список поддержки GeForce (только набор функций «D» или выше) Набор функций «D» поддерживает H.264 (до 4032 × 4048 пикселей .) Набор функций E, F и H поддерживают H.265 (разрешение до 8192x8192 / 8k)

GT 750M - GK107 - VP5 - D - март 2012 г.

The fifth generation PureVideo HD The fifth generation of PureVideo HD, introduced with the GeForce GT 520 (Fermi (microarchitecture)) and also included in the Nvidia GeForce 600/700 (Kepler (microarchitecture)) series GPUs has significantly improved performance when decoding H.264.[11] It is also capable of decoding 2160p 4K Ultra-High Definition (UHD) resolution videos at 3840 × 2160 pixels (doubling the 1080p Full High Definition standard in both the vertical and horizontal dimensions) and, depending on the driver and the used codec, higher resolutions of up to 4032 × 4080 pixels. The fifth generation PureVideo HD is sometimes called "PureVideo HD 5" or "VP5", although this is not an official Nvidia designation. This generation of PureVideo HD corresponds to Nvidia Feature Set D (or "VDPAU Feature Set D").
1
ответ дан 24 July 2018 в 17:03

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

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