我有一堆视频要转换,从flv到mp4。在Handbrake gui中,在Ubuntu中,我已经整理了所有设置。我已将其保存为名为“all-tablets”的预设。
我需要在不同的ubuntu机器上使用HandBrakeCLI,这只是命令行。所以,我有两个选择,我可以看到,我无法弄清楚如何做其中任何一个:
1)看看手刹gui使用的设置是什么,所以我可以复制它们并直接使用HandBrakeCLI,根据需要替换文件名。
2)保存我的“全片”预设,以便我可以将其复制到另一台机器并在那里与HandBrakeCLI一起使用。
选项2似乎更好。当我在HandBrakeCLI中列出可用的预设时,它不会列出我的自定义预设,建议GUI版本将它们保存到与cli版本不同的地方。
有什么建议吗?谢谢,Max
答案 0 :(得分:8)
我实际上最终搞清楚了:我在Windows 7虚拟机中尝试了Windows版本的Handbrake。在Windows中,GUI版本只是CLI的包装器,不像Linux,它们是两个完全独立的东西。 (我不确定Mac上的情况是什么)。
我首先尝试导入我从linux版本中保存的预设plist文件,但是windows gui无法正确解析它,或者对它不满意:它似乎正在处理其中一个布尔值好像它是一个变量名(即试图做true = "foo"
之类的东西):我无法弄清楚在我的plist文件中导致这个的原因:一边用一个保存的 out < / em>的窗户,它看起来很好。
所以,我从头开始在Windows GUI中。界面的样式有点不同,但我能够设置我在linux gui中的所有选项。然后我使用这些设置进行了转换:因为windows gui使用CLI版本,您可以在转换日志中看到发送到cli的命令。我复制了这个,并在linux CLI中尝试了相同的选项集,它运行良好。
我从没想过我会把它写成任何问题的答案,但答案似乎是“使用窗户”;-)谁是一个thunk它。
答案 1 :(得分:3)
〜/ .ghb / presets将您的GUI预设存储为PropertyList(它是一种XML文档)。您可以从此处获取设置并将其转换为CLI的命令行参数。遗憾的是,CLI不会读取GUI的配置文件或任何其他配置。如果您可以使用C(++)进行编码,那么添加该支持可能不会太难。 CLI位于Handbrake源代码树中的test / test.c中。
这是一个快速而肮脏的Python,可以帮助您入门。可以在http://winappdbg.sourceforge.net/blog/PList.py找到Plist.py:
#!/usr/bin/env python
import sys
import PList
def translate(item):
args = []
if "AudioList" in item:
args.append(("-E", item["AudioList"][0]["AudioEncoderActual"]))
return args
def invoke(args):
print "HandbrakeCLI " + " ".join(" ".join(arg) for arg in args)
presets = sys.argv[1]
name = sys.argv[2]
data = PList.fromstring(open(presets).read())
for item in data:
if isinstance(item, dict):
if 'PresetName' in item:
if item['PresetName'] == name:
invoke(translate(item))
祝你好运,玩得开心。