Skip to content

Commit

Permalink
Retified audio conversion rules.
Browse files Browse the repository at this point in the history
  • Loading branch information
LittlePox committed Aug 10, 2019
1 parent bde3976 commit 5d287e2
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 23 deletions.
4 changes: 2 additions & 2 deletions OKEGui/OKEGui/JobProcessor/Demuxer/EACDemuxer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,8 @@ public EacOutputTrackType(TrackCodec codec, string rawOutput, string extension,
private static List<EacOutputTrackType> s_eacOutputs = new List<EacOutputTrackType> {
new EacOutputTrackType(TrackCodec.RAW_PCM, "RAW/PCM", "flac", true, TrackType.Audio),
new EacOutputTrackType(TrackCodec.DTSMA, "DTS Master Audio", "flac", true, TrackType.Audio),
new EacOutputTrackType(TrackCodec.TRUEHD_AC3, "TrueHD/AC3", "thd", true, TrackType.Audio),
new EacOutputTrackType(TrackCodec.TRUEHD_AC3, "TrueHD", "thd", true, TrackType.Audio),
new EacOutputTrackType(TrackCodec.TRUEHD_AC3, "TrueHD/AC3", "flac", true, TrackType.Audio),
new EacOutputTrackType(TrackCodec.TRUEHD_AC3, "TrueHD", "flac", true, TrackType.Audio),
new EacOutputTrackType(TrackCodec.AC3, "AC3", "ac3", true, TrackType.Audio),
new EacOutputTrackType(TrackCodec.DTS, "DTS", "dts", true, TrackType.Audio),
new EacOutputTrackType(TrackCodec.MPEG2, "MPEG2", "m2v", false, TrackType.Video),
Expand Down
6 changes: 5 additions & 1 deletion OKEGui/OKEGui/JobProcessor/ExceptionParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public OKETaskException(string message, Exception inner)

static class ExceptionParser
{
public static ExceptionMsg parse(OKETaskException ex, TaskDetail task)
public static ExceptionMsg Parse(OKETaskException ex, TaskDetail task)
{
ExceptionMsg msg;
if (task != null)
Expand Down Expand Up @@ -86,6 +86,10 @@ public static ExceptionMsg parse(OKETaskException ex, TaskDetail task)
msg.errorMsg = string.Format(Constants.qaacErrorMsg);
break;

case Constants.audioFormatMistachSmr:
msg.errorMsg = string.Format(Constants.audioFormatMistachMsg, ex.Data["SRC_FMT"], ex.Data["DST_FMT"], task.InputFile);
break;

case Constants.unknownErrorSmr:
default:
msg.errorMsg = string.Format(Constants.unknownErrorMsg, task.InputFile);
Expand Down
4 changes: 2 additions & 2 deletions OKEGui/OKEGui/JobProcessor/Muxer/AutoMuxer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ private struct Episode
}

private static List<string> s_AudioFileExtensions = new List<string> {
".flac", ".wav", ".ac3", ".thd", ".aac", ".m4a"
".flac", ".wav", ".ac3", ".dts", ".aac", ".m4a"
};

private static List<string> s_VideoFileExtensions = new List<string> {
Expand Down Expand Up @@ -168,7 +168,7 @@ private string GenerateMp4MergeParameter(Episode episode)
for (int i = 0; i < episode.AudioFiles.Count; i++) {
string audioFile = episode.AudioFiles[i];
FileInfo ainfo = new FileInfo(audioFile);
if (ainfo.Extension.ToLower() == ".aac" || ainfo.Extension.ToLower() == ".m4a" || ainfo.Extension.ToLower() == ".ac3") {
if (ainfo.Extension.ToLower() == ".aac" || ainfo.Extension.ToLower() == ".m4a" || ainfo.Extension.ToLower() == ".ac3" || ainfo.Extension.ToLower() == ".dts") {
parameters.Add($"-i \"{audioFile}\"?language={episode.AudioLanguages[i]}");
}
}
Expand Down
3 changes: 3 additions & 0 deletions OKEGui/OKEGui/Utils/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ public static class Constants
public const string qaacErrorMsg = "QAAC无法正常运行。请确保你安装了Apple Application Support 64bit";
public const string qaacErrorSmr = "QAAC无法运行";

public const string audioFormatMistachMsg = "无法将{0}格式的音轨转为{1}格式。该文件{2}将跳过处理。请转告技术总监复查。";
public const string audioFormatMistachSmr = "音轨格式不匹配";

//Application configuration file
public const string configFile = "OKEGuiConfig.json";

Expand Down
2 changes: 1 addition & 1 deletion OKEGui/OKEGui/Utils/EnvironmentChecker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ static Boolean CheckQAAC()
e.start();
} catch (OKETaskException ex)
{
ExceptionMsg msg = ExceptionParser.parse(ex, null);
ExceptionMsg msg = ExceptionParser.Parse(ex, null);
MessageBox.Show(msg.errorMsg, ex.Message);
return false;
}
Expand Down
28 changes: 11 additions & 17 deletions OKEGui/OKEGui/Worker/WorkerManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -286,12 +286,6 @@ private void WorkerDoWork(object sender, DoWorkEventArgs e)
continue;
}

// 只处理flac文件和AC3文件
string audioExtension = track.File.GetExtension();
if (audioExtension != ".flac" && audioExtension != ".ac3")
{
continue;
}
AudioJob audioJob = new AudioJob(task.AudioTracks[id].OutputCodec);
audioJob.SetUpdate(task);

Expand Down Expand Up @@ -339,14 +333,8 @@ private void WorkerDoWork(object sender, DoWorkEventArgs e)
if (job is AudioJob)
{
AudioJob audioJob = job as AudioJob;
if (audioJob.CodecString == "FLAC" ||
audioJob.CodecString == "AC3" ||
audioJob.CodecString == "AUTO")
{
// 跳过当前轨道
audioJob.Output = audioJob.Input;
}
else if (audioJob.CodecString == "AAC")
string srcFmt = Path.GetExtension(audioJob.Input).ToUpper().Remove(0,1);
if (srcFmt == "FLAC" && audioJob.CodecString == "AAC")
{
task.CurrentStatus = "音频转码中";
task.IsUnKnowProgress = true;
Expand All @@ -361,11 +349,17 @@ private void WorkerDoWork(object sender, DoWorkEventArgs e)

audioJob.Output = aEncode.Output;
}
else
else if (srcFmt == audioJob.CodecString)
{
// 未支持格式
audioJob.Output = audioJob.Input;
}
else
{
OKETaskException ex = new OKETaskException(Constants.audioFormatMistachSmr);
ex.Data["SRC_FMT"] = srcFmt;
ex.Data["DST_FMT"] = audioJob.CodecString;
throw ex;
}

var audioFileInfo = new FileInfo(audioJob.Output);
if (audioFileInfo.Length < 1024)
Expand Down Expand Up @@ -443,7 +437,7 @@ private void WorkerDoWork(object sender, DoWorkEventArgs e)
}
catch (OKETaskException ex)
{
ExceptionMsg msg = ExceptionParser.parse(ex, task);
ExceptionMsg msg = ExceptionParser.Parse(ex, task);
new System.Threading.Tasks.Task(() =>
System.Windows.MessageBox.Show(msg.errorMsg, msg.fileName)).Start();
task.IsRunning = false;
Expand Down

0 comments on commit 5d287e2

Please sign in to comment.