Beispiel #1
0
        static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            var opencc = new OpenChineseConverter();

            var twText = "這個小丑醜歸醜但很管用,這個滑鼠,長髮散發出香氣,列印中文為何出亂碼,阿拉伯聯合大公國,義大利,尚比亞";
            var cnText = "这个小丑丑归丑但很管用,这个鼠标,长发散发出香气,打印中文为何出乱码,阿拉伯联合酋长国,意大利,赞比亚";

            // 轉台灣正體
            var openccTWText = opencc.ToTaiwanFromSimplifiedWithPhrases(cnText);

            // 轉簡體
            var openccCNText = opencc.ToSimplifiedFromTaiwanWithPhrases(twText);

            // 顯示結果
            Console.WriteLine($"===== 原文 =====\n{cnText}\n===== 轉繁體 =====\n{openccTWText}");

            Console.WriteLine($"\n===== 原文 =====\n{twText}\n===== 轉簡體 =====\n{openccCNText}");

            Console.ReadLine();
        }
Beispiel #2
0
        public static int MuxAV(string videoPath, string audioPath, string outPath, string desc = "", string title = "", string episodeId = "", string pic = "", string lang = "", List <Subtitle> subs = null, bool audioOnly = false, bool videoOnly = false, string aid = "", string cid = "")
        {
            desc  = EscapeString(desc);
            title = EscapeString(title);

            if (outPath.Contains("/") && !Directory.Exists(Path.GetDirectoryName(outPath)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(outPath));
            }
            //----分析并生成-i参数
            StringBuilder inputArg = new StringBuilder();
            StringBuilder metaArg  = new StringBuilder();

            if (!string.IsNullOrEmpty(videoPath))
            {
                inputArg.Append($" -i \"{videoPath}\" ");
            }
            if (!string.IsNullOrEmpty(audioPath))
            {
                inputArg.Append($" -i \"{audioPath}\" ");
            }
            if (!string.IsNullOrEmpty(pic))
            {
                inputArg.Append($" -i \"{pic}\" ");
            }
            string[] files = System.IO.Directory.GetFiles(Directory.GetCurrentDirectory(), $"temp/{aid}/{aid}.{cid}.*.srt");
            if (subs != null)
            {
                for (int i = 0; i < subs.Count; i++)
                {
                    if (File.Exists(subs[i].path) && File.ReadAllText(subs[i].path) != "")
                    {
                        inputArg.Append($" -i \"{subs[i].path}\" ");
                        metaArg.Append($" -metadata:s:s:{i} handler_name=\"{SubDescDic[subs[i].lan]}\" -metadata:s:s:{i} language={SubLangDic[subs[i].lan]} -metadata:s:s:{i} title=\"{SubTitleDic[subs[i].lan]}\"");
                    }
                }
                if (files.Length > 0 && subs.Count < 1)
                {
                    Log("正在合併現有字幕...");
                    for (int e = 0; e < files.Length; e++)
                    {
                        inputArg.Append($" -i \"{files[e]}\" ");
                    }
                }
            }
            if (!string.IsNullOrEmpty(pic))
            {
                metaArg.Append(" -disposition:v:1 attached_pic ");
            }
            var inputCount = Regex.Matches(inputArg.ToString(), "-i \"").Count;

            for (int i = 0; i < inputCount; i++)
            {
                inputArg.Append($" -map {i} ");
            }
            var    converter = new OpenChineseConverter();
            string titletcov = converter.ToTaiwanFromSimplifiedWithPhrases(title);
            string desccov   = converter.ToTaiwanFromSimplifiedWithPhrases(desc);
            //----分析完毕
            var arguments = $"-loglevel warning -y " +
                            inputArg.ToString() + metaArg.ToString() + $" -metadata title=\"" + titletcov + "\" " +
                            (lang == "" ? "" : $"-metadata:s:a:0 language={lang} ") +
                            $"-metadata description=\"{desccov}\" " +
                            (episodeId == "" ? "" : $"-metadata album=\"{titletcov}\" ") +
                            (audioOnly ? " -vn " : "") + (videoOnly ? " -an " : "") +
                            $"-c copy " +
                            (subs != null ? " -c:s mov_text " : "") +
                            $"\"{outPath}\"";

            LogDebug("ffmpeg命令:{0}", arguments);
            return(ffmpeg(arguments));
        }