20

Как я могу использовать версию CLI VLC на OSX?

После установки VLC на OSX, он работает нормально через обычный процесс графического интерфейса, прожектор и т.д. Кроме того, я знаю, что это можно сделать

open bla.avi -a vlc

Однако, когда я запускаю команду vlc в оболочке, она не работает. which vlc в shell тоже ничего не возвращает.

CLI-версия VLC очень удобна для транскодирования, потоковой передачи и т.д. Поэтому было бы неплохо, чтобы она работала.

6 ответов6

22

Команда open bla.avi -a vlc работает, потому что OS X использует свою базу данных Launch Services для открытия VLC приложения. Это не имеет ничего общего с двоичным файлом командной строки с тем же именем, который не устанавливается по умолчанию.

Бинарный файл, который вы ищете, находится в пакете VLC.app , так что вы можете ввести его в терминал:

/Applications/VLC.app/Contents/MacOS/VLC -I rc

Откроется интерактивная командная строка VLC. Или выполните следующее, чтобы указанная выше строка была зарегистрирована как псевдоним для vlc:

echo "alias vlc='/Applications/VLC.app/Contents/MacOS/VLC -I rc'" >> ~/.bash_profile

После того, как вы добавили это, вам нужно перезапустить свой терминал. Теперь введите vlc и вы попадете в командную строку.

Если вам не нравится интерактивный интерфейс или вы хотите использовать VLC с другими параметрами, вам необходимо соответствующим образом отредактировать ваш ~/.bash_profile , например, через open -e ~/.bash_profile .

3

Приложения OS X обычно не устанавливают какие-либо исполняемые файлы программы за пределами пакета приложений. Поскольку вы обычно не взаимодействуете с ними из командной строки, они не помещаются ни в одну папку в вашем PATH .


Если вы установили VLC в /Applications , фактическим исполняемым файлом является /Applications/VLC.app/Contents/MacOS/VLC .

/Applications/VLC.app/Contents/MacOS/VLC -h покажет некоторую помощь, а /Applications/VLC.app/Contents/MacOS/VLC --intf ncurses запустит пользовательский интерфейс ncurses.

2

Чтобы получить доступ к vlc из командной строки, вы можете создать локальную символическую ссылку, как показано ниже:

mkdir ~/bin
ln -vs /Applications/VLC.app/Contents/MacOS/VLC ~/bin/vlc

Чтобы эта команда была доступна для всех пользователей, вы можете вместо этого связать ее с /usr/local/bin .

Убедитесь, что ваш ~/bin (или /usr/local/bin) находится в переменной окружения PATH , другими словами, что ваш файл ~/.profile содержит что-то вроде:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Выше код является поведением по умолчанию в Linux.

1

Пустой интерфейс позволяет выполнять пакетные операции в командной строке. Я использую такой скрипт, который был сохранен в /usr /local /bin /vlc:

    export VLC_PLUGIN_PATH=/Applications/VLC.app/Contents/MacOS/plugins
    /Applications/VLC.app/Contents/MacOS/VLC -I dummy "${@}"
1

К вашему сведению и / или чаевые.

Вот 2 способа узнать фактический путь к приложению, которое запускается с помощью команды open .

Полезно, если VLC размещен в другом каталоге, а не в /Applications , например /Users/<user>/Applications (~/Applications) или в других каталогах.

Через AppleScript

Просто, но запускает приложение.

$ osascript -e 'POSIX path of (path to application "VLC")'
/Applications/VLC.app/
$ 
$ osascript -e 'POSIX path of (path to application "GIMP")'
/Volumes/External_HDD/Applications/GIMP/GIMP_v2.8/GIMP.app/

Через команду lsregister

Немного сложно, но приложение не запустится.

$ # Path of `lsregister` command
$ #   /System/Library \
$ #     /Frameworks/CoreServices.framework/Versions/A \
$ #     /Frameworks/LaunchServices.framework/Versions/A/Support/
$ 
$ cd /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/
$ 
$ ls
lsregister
$ 
$ # Sample usage
$ ./lsregister -dump | grep -o "/.*\Google Chrome.app" | head -1
/Applications/Google Chrome.app
$ 
$ # Find VLC
$ NAME_APP=VLC
$ ./lsregister -dump | grep -o "/.*${NAME_APP}.app" | grep -v -E "Caches|TimeMachine|Temporary|/Volumes/${NAME_APP}" | uniq
/Applications/VLC.app

Протестировано на: macOS HighSierra (OSX 10.13.6)

$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)
Copyright (C) 2007 Free Software Foundation, Inc.
0

Во-первых, вам нужно найти фактический двоичный исполняемый файл в пакете приложения VLC Mac. Откройте Finder , перейдите в папку « Applications », щелкните правой кнопкой мыши приложение VLC и выберите « Show Package Contents . Теперь вы можете просматривать, что на самом деле внутри.

В этом случае двоичный файл Contents/MacOS находится в папке VLC как файл VLC . Откройте Terminal и введите точный путь к файлу, и вы увидите, что двоичный файл VLC выполняет: /Applications/VLC.app/Contents/MacOS/VLC . Если вы не хотите каждый раз использовать весь этот путь, вы можете создать символическую ссылку и отредактировать вашу Bash PATH, чтобы указать на это.

Теперь, когда вы можете вызывать двоичный файл прямо из интерфейса командной строки, вы, вероятно, захотите выбрать интерфейс, чтобы у вас не выскочил обычный графический интерфейс. Полный список доступных интерфейсов находится на вики-странице VLC Interfaces.

Как только вы найдете рабочий набор команд для вызовов CLI VLC, который выдает намеченный результат, вы, вероятно, захотите использовать dummy интерфейс при вызове VLC в вашей программе / пакетной обработке. dummy интерфейс в основном представляет собой ничего, кроме вывода в терминале, как и большинство неинтерактивных программ CLI.

Конечный результат: /Applications/VLC.app/Contents/MacOS/VLC -I dummy [further parameters here]

Я рекомендую использовать параметр -vvv чтобы получить расширенный вывод журнала, чтобы помочь при тестировании различных команд.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .