手刹:保存自定义预设/编码命令,以便在另一台机器上的handbrake-cli上使用

时间:2014-01-03 14:33:14

标签: ubuntu handbrake

我有一堆视频要转换,从flv到mp4。在Handbrake gui中,在Ubuntu中,我已经整理了所有设置。我已将其保存为名为“all-tablets”的预设。

我需要在不同的ubuntu机器上使用HandBrakeCLI,这只是命令行。所以,我有两个选择,我可以看到,我无法弄清楚如何做其中任何一个:

1)看看手刹gui使用的设置是什么,所以我可以复制它们并直接使用HandBrakeCLI,根据需要替换文件名。

2)保存我的“全片”预设,以便我可以将其复制到另一台机器并在那里与HandBrakeCLI一起使用。

选项2似乎更好。当我在HandBrakeCLI中列出可用的预设时,它不会列出我的自定义预设,建议GUI版本将它们保存到与cli版本不同的地方。

有什么建议吗?谢谢,Max

2 个答案:

答案 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))

祝你好运,玩得开心。