Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        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);
                }
            }
        }
Beispiel #3
0
        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})");
        }
Beispiel #4
0
        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));
        }