Ejemplo n.º 1
0
        /// <summary>
        /// Converts IAudioProperties to string.
        /// </summary>
        /// <param name="props">The props.</param>
        /// <returns></returns>
        public static string IAudioPropertiesToString(IAudioProperties props)
        {
            CultureInfo curCulture = Thread.CurrentThread.CurrentUICulture;

            Thread.CurrentThread.CurrentUICulture = LocalizeDictionary.Instance.Culture;

            string res = string.Empty;

            if (props.Language != null)
            {
                res += props.Language.DisplayName + ", ";
            }
            res += string.Format(LocalizeDictionary.Instance.GetLocizedObject <string>("IMovieDataSource", "Resources", "ChannelsText", LocalizeDictionary.Instance.Culture), props.Channels.Value) + ", ";
            if (props.Format != string.Empty)
            {
                res += props.Format;
                if (props.BitRate.HasValue)
                {
                    res += " (" + (props.Encoding != string.Empty ? props.Encoding + " @ " : string.Empty) + (props.BitRate.Value / 1000) + " kbps)";
                }
            }
            res.Trim(',', ' ');

            Thread.CurrentThread.CurrentUICulture = curCulture;

            return(res);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Loads the media file into movie.
        /// </summary>
        public static void LoadMediaFileIntoMovie(IMovie movie, string filename, IMovieDataSourcePlugin dataSource)
        {
            if (filename.Length < 3)
            {
                return;
            }

            movie.MediaFile = dataSource.CreateMediaFile(filename);
            if (File.Exists(filename))
            {
                movie.MediaFile.Size = (new FileInfo(filename)).Length;

                MediaInfoNET.MediaInfo info = new MediaInfoNET.MediaInfo(filename);
                if (info.VideoStreams.Count > 0)
                {
                    movie.MediaFile.Video          = dataSource.CreateVideoProperties(info.VideoStreams[0].Duration);
                    movie.MediaFile.Video.BitRate  = info.VideoStreams[0].BitRate.Value;
                    movie.MediaFile.Video.Encoding = info.VideoStreams[0].EncodedLibrary.Name;
                    movie.MediaFile.Video.Format   = info.VideoStreams[0].Format.Name;
                    movie.MediaFile.Video.Height   = info.VideoStreams[0].Height;
                    movie.MediaFile.Video.Width    = info.VideoStreams[0].Width;
                }

                foreach (MediaInfoNET.AudioStream audio in info.AudioStreams)
                {
                    IAudioProperties props = dataSource.CreateAudioProperties(audio.Channles.Channels);
                    props.BitRate  = audio.BitRate.Value;
                    props.Format   = audio.Format.Name;
                    props.Encoding = audio.CodecID.Hint;
                    props.Language = (audio.Language == null || audio.Language.TwoLetterISOLanguageName == "iv") ? null : audio.Language;
                    movie.MediaFile.Audio.Add(props);
                }

                foreach (string file in Directory.GetFiles(System.IO.Path.GetDirectoryName(filename),
                                                           System.IO.Path.GetFileNameWithoutExtension(filename) + "*", SearchOption.TopDirectoryOnly))
                {
                    if (System.IO.Path.GetExtension(file) == ".ac3" || System.IO.Path.GetExtension(file) == ".dts" || System.IO.Path.GetExtension(file) == ".mka")
                    {
                        MediaInfoNET.MediaInfo audioInfo = new MediaInfoNET.MediaInfo(file);

                        foreach (MediaInfoNET.AudioStream audio in audioInfo.AudioStreams)
                        {
                            IAudioProperties props = dataSource.CreateAudioProperties(audio.Channles.Channels);
                            props.BitRate  = audio.BitRate.Value;
                            props.Format   = audio.Format.Name;
                            props.Language = audio.Language ?? TryGetCulture(file);
                            movie.MediaFile.Audio.Add(props);
                            movie.MediaFiles.Add(dataSource.CreateMediaFile(file));
                        }
                    }
                }
            }
            else if (Directory.Exists(filename))
            {
                movie.MediaFile.Size = 0;

                if (sizeThread != null)
                {
                    sizeThread.Abort();
                }

                sizeThread = new Thread(new ThreadStart(delegate
                {
                    try
                    {
                        foreach (FileInfo fileInfo in (new DirectoryInfo(filename)).GetFiles("*.*", SearchOption.AllDirectories))
                        {
                            try
                            {
                                long size             = fileInfo.Length;
                                movie.MediaFile.Size += size;
                            }
                            catch (Exception exp) { Trace.WriteLine(exp.ToString()); }
                        }
                    }
                    catch (Exception exp) { Trace.WriteLine(exp.ToString()); }
                    finally { sizeThread = null; }
                }));
                sizeThread.IsBackground     = true;
                sizeThread.Priority         = ThreadPriority.Lowest;
                sizeThread.Name             = "Size Thread";
                sizeThread.CurrentCulture   = Thread.CurrentThread.CurrentCulture;
                sizeThread.CurrentUICulture = Thread.CurrentThread.CurrentUICulture;
                sizeThread.Start();
            }
        }