Subtitle CreateSubtitle(SubtitleInfomation subtitleInfomation) { if (subtitleInfomation.type != SubtitlePacketType.SUBTITLE_ASS && subtitleInfomation.type != SubtitlePacketType.SUBTITLE_TEXT) { return(null); } Subtitle subtitle = null; string nameFormat = "[MKV] {0}"; subtitle = new Subtitle() { SubtitleFileKind = SubtitleFileKind.Internal }; subtitle.AddLanguage(subtitleInfomation.language + ":" + subtitleInfomation.streamIndex, new List <KeyValuePair <string, string> >()); if (subtitleInfomation.type == SubtitlePacketType.SUBTITLE_ASS) { //ASS의 경우 스타일 로딩 AssParser assParser = new AssParser(); assParser.LoadHeader(subtitleInfomation.header); subtitle.Parser = assParser; subtitle.Title = string.Format(nameFormat, GetSubtitleName(subtitleInfomation)); } else if (subtitleInfomation.type == SubtitlePacketType.SUBTITLE_TEXT) { subtitle.Parser = new SrtParser(); subtitle.Title = string.Format(nameFormat, GetSubtitleName(subtitleInfomation)); } return(subtitle); }
void ffmpegSubtitleSupport_SubtitleUpdatedEvent(SubtitleSupport sender, SubtitleInfomation subtitleInfomation) { Subtitle subtitle = CreateSubtitle(subtitleInfomation);; if (subtitle != null) { PickerItem <string, string> item = new PickerItem <string, string> { Key = subtitleInfomation.streamIndex.ToString(), Name = subtitle.Title, Payload = subtitle, Payload2 = (byte)4 }; //재생패널 콤보 변경 MessengerInstance.Send <Message>(new Message("SubtitleUpdated", item), TransportControlViewModel.NAME); } }
void ffmpegSubtitleSupport_SubtitleFoundEvent(SubtitleSupport sender, SubtitleInfomation subtitleInfomation) { Subtitle subtitle = CreateSubtitle(subtitleInfomation);; if (subtitle != null) { List <PickerItem <string, string> > list = new List <PickerItem <string, string> >(); list.Add(new PickerItem <string, string> { Key = subtitleInfomation.streamIndex.ToString(), Name = subtitle.Title, Payload = subtitle, Payload2 = (byte)4 }); //재생패널 콤보에 추가 MessengerInstance.Send <Message>(new Message("SubtitlesLoaded", list), TransportControlViewModel.NAME); } }
private string GetSubtitleName(SubtitleInfomation subtitleInfomation) { string nativeName = string.Empty; string engName = string.Empty; if (!string.IsNullOrEmpty(subtitleInfomation.language)) { System.Globalization.CultureInfo cultureInfo = null; try { if (subtitleInfomation.language.Length == 2 || (subtitleInfomation.language.Length == 5 && subtitleInfomation.language.ElementAt(2) == '-')) { cultureInfo = new System.Globalization.CultureInfo(subtitleInfomation.language); } else if (subtitleInfomation.language.Length == 3) { cultureInfo = LanguageCodeHelper.LangCodeToCultureInfo(subtitleInfomation.language); } if (cultureInfo != null) { nativeName = cultureInfo.NativeName; engName = cultureInfo.EnglishName; } } catch (Exception) { } } if (!string.IsNullOrEmpty(subtitleInfomation.title)) { if (string.IsNullOrEmpty(nativeName)) { nativeName = subtitleInfomation.title; } else { string[] titles = subtitleInfomation.title.Split(new char[] { ':' }); if (titles.Length >= 1) { nativeName += " : "; if (titles[0] != engName && titles[0] != nativeName) { nativeName += subtitleInfomation.title; } else if (titles.Length >= 2 && !string.IsNullOrEmpty(titles[1])) { nativeName += titles[1]; } } } } if (string.IsNullOrEmpty(nativeName)) { nativeName = LanguageCodeHelper.UNKOWN_LANGUAGE; } return(nativeName); }