如何使用 Windows 脚本设置 Handbrake 默认预设
How to set Handbrake default preset using Windows script
您好,感谢阅读。
所以我使用的是 Handbrake(视频编码)GUI 版本(不是 CLI 版本)。
我有一个配置 GUI 版本设置的脚本。但我想指定默认预设。不幸的是,默认预设不在 settings.json 文件中。
默认预设存储在 presets.json 文件中。
presets.json 文件包含所有预设(例如 Very Fast 1080p30 和 Fast 720p30 等)。我想将 Fast 720p30 设置为默认预设。
所以我可以在 presets.json 中找到这个:
"PresetName": "Fast 720p30",
在上面,我看到了这个:
"Default": false,
那我也找这个:
"PresetName": "Fast 1080p30",
在上面我看到了这个:
"Default": true,
显然 'Fast 1080p30' 是当前的默认值。我想将其更改为 'Fast 720p30'.
要手动执行此操作,我需要将 'Fast 720p30' 的 'Default' 设置为 true,并将 'Fast 1080p30' 的 'Default' 设置为 false(或仅删除该行)。
如何使用脚本执行此操作?我正在使用 Windows 7 SP1,因此可以使用在 Windows 7 上运行的任何脚本语言(批处理、VBScript、PowerShell、JavaScript,甚至可能是 R 等)。
我的主要问题是我找不到访问任何给定预设的“"Default": false,”行的方法,因为 JSON 元素似乎没有名称。所以我想也许我需要找到“"PresetName": "Fast 720p30"”,然后找到上面的“"Default": false”并更改它,全部使用脚本。但我不知道该怎么做。
我无法在此处粘贴完整的 presets.json 文件,因为它有近 9000 行长。但这里是一个包含主要部分的编辑版本:
{
"PresetList": [
{
"ChildrenArray": [
{
"AlignAVStart": true,
"AudioCopyMask": [
"copy:aac"
],
"AudioEncoderFallback": "ac3",
"AudioLanguageList": [],
"AudioList": [
{
"AudioBitrate": 160
}
],
"AudioSecondaryEncoderMode": true,
"AudioTrackSelectionBehavior": "first",
"ChapterMarkers": true,
"ChildrenArray": [],
"Default": false,
"PresetName": "Very Fast 1080p30",
"Type": 0
},
{
"AlignAVStart": true,
"AudioCopyMask": [
"copy:aac"
],
"AudioEncoderFallback": "ac3",
"AudioLanguageList": [],
"AudioList": [
{
"AudioBitrate": 160
}
],
"Default": false,
"PresetName": "Very Fast 720p30",
"Type": 0
},
{
"AlignAVStart": true,
"AudioCopyMask": [
"copy:aac"
],
"AudioEncoderFallback": "ac3",
"AudioLanguageList": [],
"AudioList": [
{
"AudioBitrate": 160
}
],
"AudioSecondaryEncoderMode": true,
"AudioTrackSelectionBehavior": "first",
"ChapterMarkers": true,
"ChildrenArray": [],
"Default": false,
"PresetName": "Very Fast 576p25",
"Type": 0,
},
{
"AlignAVStart": true,
"AudioCopyMask": [
"copy:aac",
"copy:ac3",
"copy:dtshd",
"copy:dts",
"copy:mp3",
"copy:truehd",
"copy:flac",
"copy:eac3"
],
"AudioEncoderFallback": "ac3",
"AudioLanguageList": [],
"AudioList": [
{
"AudioBitrate": 160,
"AudioCompressionLevel": 0.0,
"AudioDitherMethod": null,
"AudioEncoder": "av_aac",
"AudioMixdown": "stereo",
"AudioNormalizeMixLevel": false,
"AudioSamplerate": "auto",
"AudioTrackQualityEnable": false,
"AudioTrackQuality": -1.0,
"AudioTrackGainSlider": 0.0,
"AudioTrackDRCSlider": 0.0
}
],
"AudioSecondaryEncoderMode": true,
"AudioTrackSelectionBehavior": "first",
"ChapterMarkers": true,
"ChildrenArray": [],
"Default": false,
"PresetName": "Very Fast 480p30",
"Type": 0
},
{
"AlignAVStart": true,
"AudioCopyMask": [
"copy:aac",
"copy:ac3",
"copy:dtshd",
"copy:dts",
"copy:mp3",
"copy:truehd",
"copy:flac",
"copy:eac3"
],
"AudioEncoderFallback": "ac3",
"AudioLanguageList": [],
"AudioList": [
{
"AudioBitrate": 160,
"AudioCompressionLevel": 0.0,
"AudioDitherMethod": null,
"AudioEncoder": "av_aac",
"AudioMixdown": "stereo",
"AudioNormalizeMixLevel": false,
"AudioSamplerate": "auto",
"AudioTrackQualityEnable": false,
"AudioTrackQuality": -1.0,
"AudioTrackGainSlider": 0.0,
"AudioTrackDRCSlider": 0.0
}
],
"AudioSecondaryEncoderMode": true,
"AudioTrackSelectionBehavior": "first",
"ChapterMarkers": true,
"ChildrenArray": [],
"Default": true,
"PresetName": "Fast 1080p30",
"Type": 0
},
{
"AlignAVStart": true,
"AudioCopyMask": [
"copy:aac",
"copy:ac3",
"copy:dtshd",
"copy:dts",
"copy:mp3",
"copy:truehd",
"copy:flac",
"copy:eac3"
],
"AudioEncoderFallback": "ac3",
"AudioLanguageList": [],
"AudioList": [
{
"AudioBitrate": 160,
"AudioCompressionLevel": 0.0,
"AudioDitherMethod": null,
"AudioEncoder": "av_aac",
"AudioMixdown": "stereo",
"AudioNormalizeMixLevel": false,
"AudioSamplerate": "auto",
"AudioTrackQualityEnable": false,
"AudioTrackQuality": -1.0,
"AudioTrackGainSlider": 0.0,
"AudioTrackDRCSlider": 0.0
}
],
"AudioSecondaryEncoderMode": true,
"AudioTrackSelectionBehavior": "first",
"ChapterMarkers": true,
"ChildrenArray": [],
"Default": false,
"PresetName": "Fast 720p30",
"Type": 0
}
],
"Folder": true,
"PresetName": "Production",
"PresetDescription": null,
"Type": 0
}
],
"VersionMajor": 40,
"VersionMicro": 0,
"VersionMinor": 0
}
非常感谢。
使用 PowerShell 和 JSON 并不难。
在这种情况下,您可以这样做:
$jsonPath = Join-Path -Path $env:APPDATA -ChildPath 'HandBrake\presets.json'
# load the file and convert from json to get an array of objects
$json = Get-Content -Path $jsonPath | ConvertFrom-Json
# look for the item where the PresetName property is 'Fast 1080p30' and set its Default property to $false
$json.PresetList.ChildrenArray | Where-Object { $_.PresetName -eq 'Fast 1080p30' } | ForEach-Object { $_.Default = $false }
# look for the item where the PresetName property is 'Fast 720p30' and set its Default property to $true
$json.PresetList.ChildrenArray | Where-Object { $_.PresetName -eq 'Fast 720p30' } | ForEach-Object { $_.Default = $true }
# next save the updated data as json file.
# for demo, I'm using a new name so the original file is not overwritten.
# if you have inspected the output file and all is correct, remove or comment out the next line:
$jsonPath = Join-Path -Path $env:APPDATA -ChildPath 'HandBrake\presets2.json'
$json | ConvertTo-Json -Depth 99 | Set-Content -Path $jsonPath
希望对您有所帮助
您好,感谢阅读。
所以我使用的是 Handbrake(视频编码)GUI 版本(不是 CLI 版本)。
我有一个配置 GUI 版本设置的脚本。但我想指定默认预设。不幸的是,默认预设不在 settings.json 文件中。
默认预设存储在 presets.json 文件中。
presets.json 文件包含所有预设(例如 Very Fast 1080p30 和 Fast 720p30 等)。我想将 Fast 720p30 设置为默认预设。
所以我可以在 presets.json 中找到这个:
"PresetName": "Fast 720p30",
在上面,我看到了这个:
"Default": false,
那我也找这个:
"PresetName": "Fast 1080p30",
在上面我看到了这个:
"Default": true,
显然 'Fast 1080p30' 是当前的默认值。我想将其更改为 'Fast 720p30'.
要手动执行此操作,我需要将 'Fast 720p30' 的 'Default' 设置为 true,并将 'Fast 1080p30' 的 'Default' 设置为 false(或仅删除该行)。
如何使用脚本执行此操作?我正在使用 Windows 7 SP1,因此可以使用在 Windows 7 上运行的任何脚本语言(批处理、VBScript、PowerShell、JavaScript,甚至可能是 R 等)。
我的主要问题是我找不到访问任何给定预设的“"Default": false,”行的方法,因为 JSON 元素似乎没有名称。所以我想也许我需要找到“"PresetName": "Fast 720p30"”,然后找到上面的“"Default": false”并更改它,全部使用脚本。但我不知道该怎么做。
我无法在此处粘贴完整的 presets.json 文件,因为它有近 9000 行长。但这里是一个包含主要部分的编辑版本:
{
"PresetList": [
{
"ChildrenArray": [
{
"AlignAVStart": true,
"AudioCopyMask": [
"copy:aac"
],
"AudioEncoderFallback": "ac3",
"AudioLanguageList": [],
"AudioList": [
{
"AudioBitrate": 160
}
],
"AudioSecondaryEncoderMode": true,
"AudioTrackSelectionBehavior": "first",
"ChapterMarkers": true,
"ChildrenArray": [],
"Default": false,
"PresetName": "Very Fast 1080p30",
"Type": 0
},
{
"AlignAVStart": true,
"AudioCopyMask": [
"copy:aac"
],
"AudioEncoderFallback": "ac3",
"AudioLanguageList": [],
"AudioList": [
{
"AudioBitrate": 160
}
],
"Default": false,
"PresetName": "Very Fast 720p30",
"Type": 0
},
{
"AlignAVStart": true,
"AudioCopyMask": [
"copy:aac"
],
"AudioEncoderFallback": "ac3",
"AudioLanguageList": [],
"AudioList": [
{
"AudioBitrate": 160
}
],
"AudioSecondaryEncoderMode": true,
"AudioTrackSelectionBehavior": "first",
"ChapterMarkers": true,
"ChildrenArray": [],
"Default": false,
"PresetName": "Very Fast 576p25",
"Type": 0,
},
{
"AlignAVStart": true,
"AudioCopyMask": [
"copy:aac",
"copy:ac3",
"copy:dtshd",
"copy:dts",
"copy:mp3",
"copy:truehd",
"copy:flac",
"copy:eac3"
],
"AudioEncoderFallback": "ac3",
"AudioLanguageList": [],
"AudioList": [
{
"AudioBitrate": 160,
"AudioCompressionLevel": 0.0,
"AudioDitherMethod": null,
"AudioEncoder": "av_aac",
"AudioMixdown": "stereo",
"AudioNormalizeMixLevel": false,
"AudioSamplerate": "auto",
"AudioTrackQualityEnable": false,
"AudioTrackQuality": -1.0,
"AudioTrackGainSlider": 0.0,
"AudioTrackDRCSlider": 0.0
}
],
"AudioSecondaryEncoderMode": true,
"AudioTrackSelectionBehavior": "first",
"ChapterMarkers": true,
"ChildrenArray": [],
"Default": false,
"PresetName": "Very Fast 480p30",
"Type": 0
},
{
"AlignAVStart": true,
"AudioCopyMask": [
"copy:aac",
"copy:ac3",
"copy:dtshd",
"copy:dts",
"copy:mp3",
"copy:truehd",
"copy:flac",
"copy:eac3"
],
"AudioEncoderFallback": "ac3",
"AudioLanguageList": [],
"AudioList": [
{
"AudioBitrate": 160,
"AudioCompressionLevel": 0.0,
"AudioDitherMethod": null,
"AudioEncoder": "av_aac",
"AudioMixdown": "stereo",
"AudioNormalizeMixLevel": false,
"AudioSamplerate": "auto",
"AudioTrackQualityEnable": false,
"AudioTrackQuality": -1.0,
"AudioTrackGainSlider": 0.0,
"AudioTrackDRCSlider": 0.0
}
],
"AudioSecondaryEncoderMode": true,
"AudioTrackSelectionBehavior": "first",
"ChapterMarkers": true,
"ChildrenArray": [],
"Default": true,
"PresetName": "Fast 1080p30",
"Type": 0
},
{
"AlignAVStart": true,
"AudioCopyMask": [
"copy:aac",
"copy:ac3",
"copy:dtshd",
"copy:dts",
"copy:mp3",
"copy:truehd",
"copy:flac",
"copy:eac3"
],
"AudioEncoderFallback": "ac3",
"AudioLanguageList": [],
"AudioList": [
{
"AudioBitrate": 160,
"AudioCompressionLevel": 0.0,
"AudioDitherMethod": null,
"AudioEncoder": "av_aac",
"AudioMixdown": "stereo",
"AudioNormalizeMixLevel": false,
"AudioSamplerate": "auto",
"AudioTrackQualityEnable": false,
"AudioTrackQuality": -1.0,
"AudioTrackGainSlider": 0.0,
"AudioTrackDRCSlider": 0.0
}
],
"AudioSecondaryEncoderMode": true,
"AudioTrackSelectionBehavior": "first",
"ChapterMarkers": true,
"ChildrenArray": [],
"Default": false,
"PresetName": "Fast 720p30",
"Type": 0
}
],
"Folder": true,
"PresetName": "Production",
"PresetDescription": null,
"Type": 0
}
],
"VersionMajor": 40,
"VersionMicro": 0,
"VersionMinor": 0
}
非常感谢。
使用 PowerShell 和 JSON 并不难。
在这种情况下,您可以这样做:
$jsonPath = Join-Path -Path $env:APPDATA -ChildPath 'HandBrake\presets.json'
# load the file and convert from json to get an array of objects
$json = Get-Content -Path $jsonPath | ConvertFrom-Json
# look for the item where the PresetName property is 'Fast 1080p30' and set its Default property to $false
$json.PresetList.ChildrenArray | Where-Object { $_.PresetName -eq 'Fast 1080p30' } | ForEach-Object { $_.Default = $false }
# look for the item where the PresetName property is 'Fast 720p30' and set its Default property to $true
$json.PresetList.ChildrenArray | Where-Object { $_.PresetName -eq 'Fast 720p30' } | ForEach-Object { $_.Default = $true }
# next save the updated data as json file.
# for demo, I'm using a new name so the original file is not overwritten.
# if you have inspected the output file and all is correct, remove or comment out the next line:
$jsonPath = Join-Path -Path $env:APPDATA -ChildPath 'HandBrake\presets2.json'
$json | ConvertTo-Json -Depth 99 | Set-Content -Path $jsonPath
希望对您有所帮助