/// <summary> /// Get the available audio streams from a video file /// </summary> /// <param name="file">The video file</param> public static List <InfoStream> getAvailableAudioStreams(string file) { string videoInfo = ""; List <InfoStream> streamInfos = new List <InfoStream>(); videoInfo = getVideoInfoStr(file); MatchCollection lineMatches = Regex.Matches(videoInfo, @".*Stream #(?<AudioStreamNum>\d\:\d)\(?(?<AudioStreamLang>\w*)\)?: Audio: (?<AudioStreamType>.*)", RegexOptions.Compiled); if (lineMatches.Count != 0) { int count = 0; foreach (Match match in lineMatches) { string streamNum = match.Groups["AudioStreamNum"].ToString().Trim(); streamNum = streamNum.Replace(".", ":"); string streamLang = UtilsLang.LangThreeLetter2Full(match.Groups["AudioStreamLang"].ToString().Trim()); string streamType = match.Groups["AudioStreamType"].ToString().Trim(); streamInfos.Add(new InfoStream(streamNum, count.ToString(), streamLang, streamType)); count++; } } return(streamInfos); }
private void backgroundWorkerMain_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; MkvExtractProgress progress = new MkvExtractProgress(); progress.MaxEpisode = selectedMkvFiles.Count; foreach (string file in selectedMkvFiles) { progress.CurEpisode++; List <MkvTrack> tracks = null; if (trackTypeToExtract == "All subtitle tracks") { tracks = UtilsMkv.getSubtitleTrackList(file); } else if (trackTypeToExtract == "All audio tracks") { tracks = UtilsMkv.getAudioTrackList(file); } else { tracks = UtilsMkv.getTrackList(file); } progress.CurTrack = 0; progress.MaxTrack = tracks.Count; foreach (MkvTrack track in tracks) { if (worker.CancellationPending) { e.Cancel = true; return; } progress.CurTrack++; worker.ReportProgress(0, progress); string displayLang = UtilsLang.LangThreeLetter2Full(track.Lang); if (displayLang == "") { displayLang = "Unknown"; } string fileName = $"{outDir}{Path.DirectorySeparatorChar}{Path.GetFileNameWithoutExtension(file)} - Track {Convert.ToInt32(track.TrackID):00} - {displayLang}.{track.Extension}"; UtilsMkv.extractTrack(file, track.TrackID, fileName); } } }
public override string ToString() { string displayLang = UtilsLang.LangThreeLetter2Full(Lang); string displayedExtension = Extension.ToUpper(); if (Lang == "und" || Lang == "" || displayLang == "") { displayLang = "Unknown Language"; } if (TrackType == UtilsMkv.TrackType.SUBTITLES) { if (displayedExtension == "SUB") { displayedExtension = "VOBSUB"; } } return($"{TrackID} - {displayedExtension} ({displayLang})"); }
public override string ToString() { string displayLang = UtilsLang.LangThreeLetter2Full(this.Lang); string displayedExtension = this.Extension.ToUpper(); if ((this.Lang == "und") || (this.Lang == "") || (displayLang == "")) { displayLang = "Unknown Language"; } if (this.TrackType == UtilsMkv.TrackType.SUBTITLES) { if (displayedExtension == "SUB") { displayedExtension = "VOBSUB"; } } return(String.Format("{0} - {1} ({2})", this.TrackID, displayedExtension, displayLang)); }