public static void CreateAudio(Part[] parts, string script, int framerate, bool bigEndian, bool signed, int bps, int sample, int channels, int delay, bool aac, int aacRate) { StreamWriter writer = new StreamWriter(Path.GetDirectoryName(script) + "\\audio.bat"); string endian = bigEndian ? "big" : "little"; writer.WriteLine("eac3to audio.pcm temp.wav -" + channels + " -" + bps + " -" + sample + " -" + (bigEndian ? "big" : "little")); writer.Write("mkvmerge -o audio.mka --split parts:"); int startTime; bool first = true; for (int i = 0; i < parts.Length; i++) { if (parts[i].Enabled) { startTime = parts[i].StartFrame; while (i < parts.Length - 1 && parts[i + 1].Enabled && parts[i].EndFrame == parts[i + 1].StartFrame - 1) i++; if (!first) writer.Write(",+"); else first = false; writer.Write(FrameToTimeStamp(startTime, framerate, delay) + "-" + FrameToTimeStamp(parts[i].EndFrame + 1, framerate, delay)); } } writer.WriteLine(" temp.wav"); writer.WriteLine("eac3to audio.mka temp.pcm"); writer.WriteLine("flac --best --endian=" + endian + " --sign=" + (signed ? "signed" : "unsigned") + " --bps=" + bps + " --sample-rate=" + sample + " --channels=" + channels + " -f -o audio.flac temp.pcm"); if (aac) { writer.WriteLine("eac3to audio.flac audio.wav"); writer.WriteLine("neroaacenc -br " + aacRate + " -lc -if audio.wav -of audio.aac"); writer.WriteLine("del \"audio - Log.txt\""); writer.WriteLine("del \"audio.wav\""); } writer.WriteLine("del \"temp - Log.txt\""); writer.WriteLine("del \"temp.pcm\""); writer.WriteLine("del \"temp.wav\""); writer.WriteLine("del \"audio.mka\""); writer.WriteLine("pause"); writer.Close(); }
public static void CreateQP(Part[] parts, string script) { StreamWriter writer = new StreamWriter(Path.GetDirectoryName(script) + "\\qpfile.txt"); int current = 0; for (int i = 0; i < parts.Length - 1; i++) { if (!parts[i].Enabled) continue; current += parts[i].EndFrame - parts[i].StartFrame + 1; writer.WriteLine(current + " I -1"); } writer.Close(); }
public static void CreateChapters(Part[] parts, string script, int framerate) { StreamWriter writer = new StreamWriter(Path.GetDirectoryName(script) + "\\chapters.xml"); writer.WriteLine("<?xml version=\"1.0\"?>"); writer.WriteLine("<!-- <!DOCTYPE Chapters SYSTEM \"matroskachapters.dtd\"> -->"); writer.WriteLine("<Chapters>"); writer.WriteLine(" <EditionEntry>"); writer.WriteLine(" <EditionFlagHidden>0</EditionFlagHidden>"); writer.WriteLine(" <EditionFlagDefault>0</EditionFlagDefault>"); writer.WriteLine(" <EditionUID>" + RandomUID() + "</EditionUID>"); int current = 0; foreach (Part p in parts) { writer.WriteLine(" <ChapterAtom>"); writer.WriteLine(" <ChapterFlagHidden>0</ChapterFlagHidden>"); writer.WriteLine(" <ChapterFlagEnabled>1</ChapterFlagEnabled>"); if (!p.Enabled) writer.WriteLine(" <ChapterSegmentUID format=\"hex\">" + p.SUID + "</ChapterSegmentUID>"); else writer.WriteLine(" <ChapterUID>" + RandomUID() + "</ChapterUID>"); writer.WriteLine(" <ChapterDisplay>"); writer.WriteLine(" <ChapterString>" + p.Name + "</ChapterString>"); writer.WriteLine(" <ChapterLanguage>jpn</ChapterLanguage>"); writer.WriteLine(" </ChapterDisplay>"); writer.WriteLine(" <ChapterTimeStart>" + FrameToTimeStamp(p.Enabled ? current : 0, framerate) + "</ChapterTimeStart>"); writer.WriteLine(" </ChapterAtom>"); if (p.Enabled) current += p.EndFrame - p.StartFrame + 1; } writer.WriteLine(" </EditionEntry>"); writer.WriteLine("</Chapters>"); writer.Close(); }