コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }