Example #1
0
        private void AssignValues(FileInfo file, string thumbnailPath)
        {
            TimeSpan duration;
            int      audioStreamsCount;

            int hr = DSWrapper.MediaFile.GetAudioDuration(file, out duration, out audioStreamsCount);

            if (hr == 0)
            {
                this.DurationTicks = duration.Ticks;
                if (duration.TotalSeconds == 0f)
                {
                    this.Bitrate = 0;
                }
                else
                {
                    this.Bitrate = (int)(file.Length / duration.TotalSeconds);
                }
                this.Genre  = DSWrapper.MediaFile.GetAudioGenre(file).Truncate(60);
                this.Artist = DSWrapper.MediaFile.GetAudioArtist(file).Truncate(60);
                this.Album  = DSWrapper.MediaFile.GetAudioAlbum(file).Truncate(60);
                if (thumbnailPath != null)
                {
                    this.HasThumbnail = DSWrapper.MediaFile.GetAudioThumbnail(file, thumbnailPath);
                }
            }
            else if (hr != -2147024864 && !HelperClass.IsFileLocked(file))
            {
                //Chyba -2147024864 znamena ze subor nie je dostupny - napr. pouziva ho iny proces, nie je kompletne skopirovany,...
                //V pripade inej chyby este overi ci naozaj subor nepouziva iny proces

                //Inak sa uz nepokusaj zistit metadata
                this.DurationTicks = 0;
            }
        }
Example #2
0
        private void AssignValues(ItemManager manager, FileInfo file, string thumbnailPath)
        {
            TimeSpan      duration;
            string        resolution;
            int           audioStreamsCount;
            List <string> subtitlesStreams;

            int hr = DSWrapper.MediaFile.GetVideoInfo(file, thumbnailPath, out duration, out resolution, out audioStreamsCount, out subtitlesStreams);

            if (hr == 0)
            {
                this.Resolution    = resolution;
                this.DurationTicks = duration.Ticks;
                if (duration.TotalSeconds == 0f)
                {
                    this.Bitrate = 0;
                }
                else
                {
                    this.Bitrate = (int)(file.Length / duration.TotalSeconds);
                }

                string name = System.IO.Path.GetFileNameWithoutExtension(file.Name).Truncate(30);
                if (audioStreamsCount > 1)
                {
                    for (int i = 1; i <= audioStreamsCount; i++)
                    {
                        new ItemVideo(string.Format("{0} Audio stream {1}", name, i), string.Format("&audio={0}", i), null, this);
                    }
                }

                for (int i = 0; i < subtitlesStreams.Count; i++)
                {
                    new ItemVideo(string.Format("{0} Subtitles {1}", name, subtitlesStreams[i] == null || subtitlesStreams[i] == string.Empty ? (i + 1).ToString() : subtitlesStreams[i]),
                                  string.Format("&subtitles={0}", i + 1), null, this);
                }
            }
            else if (hr != -2147024864 && !HelperClass.IsFileLocked(file))
            {
                //Chyba -2147024864 znamena ze subor nie je dostupny - napr. pouziva ho iny proces, nie je kompletne skopirovany,...
                //V pripade inej chyby este overi ci naozaj subor nepouziva iny proces

                //Inak sa uz nepokusaj zistit metadata
                this.DurationTicks = 0;
            }
            else
            {
                return;
            }

            //Zisti ci existuje thumbnail subor ak je cesta k nemu zadana
            //Nezistuje pokial je hr -2147024864 alebo zamknuty subor
            if (thumbnailPath != null)
            {
                this.HasThumbnail = File.Exists(thumbnailPath);
            }
        }