OSX:使用CLI版本的VLC


22

如何在OSX上使用VLC的CLI版本?

在OSX上安装VLC之后,可以通过正常的GUI流程,聚光灯等正常工作。此外,我知道可以这样做

open bla.avi -a vlc

但是,当我vlc在shell中发出命令时,它不起作用。which vlc在shell中也不返回任何东西。

CLI版本的VLC非常适合进行转码,流式传输等。因此,使其正常工作将是一件很不错的事情。


1
您在这里有什么问题?您只是在寻找命令吗?你尝试了什么?
巴恩2012年

在linux下,当我vlc在终端中发出命令时,它告诉我使用,cvlc我猜它在OSX下会是相同的。
巴恩2012年

所以我假设您下载了VLC ...它应该随程序一起提供所需的命令行工具...它可以进行转码,流式传输,“等”,但是您需要为我们提供一个特定的用例提供任何详细信息。
allquixotic

请不要写它不起作用,因为我很确定它会起作用,只是不符合您的期望。因此,请说出您想要什么以及获得什么。
巴恩2012年

3
@allquixotic不幸的是,在OS X上,VLC没有安装命令行版本。
slhck

Answers:


23

该命令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


1
-I rc如果您确实确实希望通过命令行vlc命令打开GUI,请从命令中删除。
MikeiLL

4
@MikeiLL您也可以致电open -a VLC。这适用于OS X中的任何应用
。– slhck

我更喜欢称呼此别名cvlc以使其清楚是命令行VLC(并与Linux版本保持一致)。
lenooh

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 UI。


--intf ncurses标志是很酷
CWD

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

虚拟界面允许在命令行上进行批处理操作。我使用这样的shell脚本保存在/ usr / local / bin / vlc中:

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

1

仅供参考和/或小费。

这里有两种方法来找出使用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.
  • REF:https : //qiita.com/KEINOS/items/5609f3a1543dd752a63b @ Qiita(日语)
  • 参考:https : //stackoverflow.com/questions/51296900/on-macos-how-can-i-find-the-apps-path-which-opens-with-open-command/51806092 @ StackOverflow

0

首先,您需要在VLC Mac应用程序包中找到实际的二进制可执行文件。打开Finder,转到Applications文件夹,右键单击VLC应用程序,然后单击确定Show Package Contents。现在,您可以浏览其中的实际内容。

在这种情况下,VLC二进制Contents/MacOS文件作为文件位于文件夹中VLC。打开Terminal并输入确切的文件路径,您将发现VLC二进制文件执行:/Applications/VLC.app/Contents/MacOS/VLC。如果您不想每次都使用整个路径,则可以进行符号链接并编辑Bash PATH以指向此路径。

现在您可以直接从CLI调用二进制文件,您可能希望选择一个接口,以免弹出通常的GUI。可用接口的完整列表在VLC接口Wiki页面上

找到用于产生预期输出的VLC CLI调用的工作命令集后,您可能希望dummy在程序/批处理中调用VLC时使用该接口。dummy基本上,该界面不过是终端中的输出,就像大多数非交互式CLI程序一样。

最终结果: /Applications/VLC.app/Contents/MacOS/VLC -I dummy [further parameters here]

我建议使用该-vvv参数,以便在测试不同命令时获得大量日志输出,以提供帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.