Skip to content
This repository was archived by the owner on Oct 30, 2022. It is now read-only.

Commit 094604c

Browse files
committed
feat: Add AudioEncodeOperation
1 parent f7211de commit 094604c

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
using System.Collections.Generic;
2+
using Newtonsoft.Json.Linq;
3+
using Ruminoid.Toolbox.Core;
4+
using Ruminoid.Toolbox.Utils.Extensions;
5+
6+
namespace Ruminoid.Toolbox.Plugins.Audio.Operations
7+
{
8+
[Operation(
9+
"Ruminoid.Toolbox.Plugins.Audio.Operations.AudioEncodeOperation",
10+
"音频压制",
11+
"使用 QAAC 压制音频。")]
12+
public class AudioEncodeOperation : IOperation
13+
{
14+
public List<(string Target, string Args, string Formatter)> Generate(Dictionary<string, JToken> sectionData)
15+
{
16+
JToken ioSection =
17+
sectionData[ConfigSectionBase.IOConfigSectionId];
18+
JToken audioSection =
19+
sectionData["Ruminoid.Toolbox.Plugins.Audio.ConfigSections.AudioQualityConfigSection"];
20+
21+
string inputPath = PathExtension.GetFullPathOrEmpty(ioSection["input"]?.ToObject<string>() ?? string.Empty).EscapePathStringForArg();
22+
string outputPath = PathExtension.GetFullPathOrEmpty(ioSection["output"]?.ToObject<string>() ?? string.Empty).EscapePathStringForArg();
23+
24+
int audioBitrate = audioSection["bitrate"].ToObject<int>();
25+
26+
return new List<(string, string, string)>
27+
{
28+
new(
29+
"qaac64",
30+
$" -q 2 --ignorelength -c {audioBitrate} {inputPath} -o {outputPath}",
31+
"null")
32+
};
33+
}
34+
35+
public Dictionary<string, JToken> RequiredConfigSections => new()
36+
{
37+
{ConfigSectionBase.IOConfigSectionId, new JObject()},
38+
{"Ruminoid.Toolbox.Plugins.Audio.ConfigSections.AudioQualityConfigSection", new JObject()}
39+
};
40+
}
41+
}

0 commit comments

Comments
 (0)