コード例 #1
0
            /// <summary>
            /// Update ID3v1 tag using properties
            /// Feature is supported in version 18.2 or greater of the API
            /// </summary>
            public static void UpdateID3v1TagUsingProperties()
            {
                try
                {
                    // init Mp3Format class
                    using (Mp3Format mp3Format = new Mp3Format(Common.MapSourceFilePath(filePath)))
                    {
                        // get id3v1 tag
                        Id3v1Tag id3Tag = mp3Format.Id3v1Properties;

                        // set artist
                        id3Tag.Artist = "A-ha";

                        // set comment
                        id3Tag.Comment = "By GroupDocs.Metadata";

                        // set title
                        id3Tag.Title = "Take on me";

                        // set year
                        id3Tag.Year = "1986";

                        // and commit changes
                        mp3Format.Save();
                    }
                }
                catch (Exception exp)
                {
                    Console.WriteLine(exp.Message);
                }
            }
コード例 #2
0
            /// <summary>
            /// Updates ID3v1 tag in MP3 format
            /// </summary>
            ///
            public static void UpdateID3v1Tag()
            {
                try
                {
                    //ExStart:UpdateID3v1Tag
                    // initialize Mp3Format class
                    using (Mp3Format mp3Format = new Mp3Format((Common.MapSourceFilePath(filePath))))
                    {
                        // create id3v1 tag
                        Id3v1Tag id3Tag = new Id3v1Tag();

                        // set artist
                        id3Tag.Artist = "A-ha";

                        // set title
                        id3Tag.Title = "Take on me";

                        // update ID3v1 tag
                        mp3Format.UpdateId3v1(id3Tag);

                        // and commit changes
                        mp3Format.Save();
                    }
                    //ExEnd:UpdateID3v1Tag
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
コード例 #3
0
        public Id3v1Tag Read( Stream mp3Stream )
        {
            Id3v1Tag tag = new Id3v1Tag();
            //Check wether the file contains an Id3v1 tag--------------------------------
            mp3Stream.Seek( -128 , SeekOrigin.End);

            byte[] b = new byte[3];
            mp3Stream.Read( b, 0, 3 );
            mp3Stream.Seek(0, SeekOrigin.Begin);
            string tagS = new string(System.Text.Encoding.ASCII.GetChars( b ));
            if(tagS != "TAG"){
                throw new CannotReadException("There is no Id3v1 Tag in this file");
            }

            mp3Stream.Seek( - 128 + 3, SeekOrigin.End );
            //Parse the tag -)------------------------------------------------
            string songName = Read(mp3Stream, 30);
            //------------------------------------------------
            string artist = Read(mp3Stream, 30);
            //------------------------------------------------
            string album = Read(mp3Stream, 30);
            //------------------------------------------------
            string year = Read(mp3Stream, 4);
            //------------------------------------------------
            string comment = Read(mp3Stream, 30);
            //------------------------------------------------
            string trackNumber = "";

            mp3Stream.Seek(- 2, SeekOrigin.Current);
            b = new byte[2];
            mp3Stream.Read(b, 0, 2);

            if ( b[0] == 0 ) {
                trackNumber = b[1].ToString ();
            }
            //------------------------------------------------
            byte genreByte = (byte) mp3Stream.ReadByte();
            mp3Stream.Seek(0, SeekOrigin.Begin);

            tag.SetTitle( songName );
            tag.SetArtist( artist );
            tag.SetAlbum( album );
            tag.SetYear( year );
            tag.SetComment( comment );
            tag.SetTrack( trackNumber );
            tag.SetGenre( tag.TranslateGenre(genreByte) );

            return tag;
        }
コード例 #4
0
            /// <summary>
            /// Read ID3v1 tag in MP3 format
            /// </summary>
            ///
            public static void ReadID3v1Tag()
            {
                try
                {
                    //ExStart:ReadID3v1Tag
                    // initialize Mp3Format class
                    Mp3Format mp3Format = new Mp3Format((Common.MapSourceFilePath(filePath)));

                    // get ID3v1 tag
                    Id3v1Tag id3V1 = mp3Format.Id3v1;

                    //NOTE: please remember you may use different approaches to getting metadata

                    // second approach
                    //id3V1 = (Id3v1Tag)MetadataUtility.ExtractSpecificMetadata(file, MetadataType.Id3v1);

                    // check if ID3v1 is presented. It could be absent in Mpeg file.
                    if (id3V1 != null)
                    {
                        // Display version
                        Console.WriteLine("ID3v1 version: {0}", id3V1.Version);

                        // Display tag properties
                        Console.WriteLine("Album: {0}", id3V1.Album);
                        Console.WriteLine("Artist: {0}", id3V1.Artist);
                        Console.WriteLine("Comment: {0}", id3V1.Comment);
                        Console.WriteLine("Genre: {0}", id3V1.Genre);
                        Console.WriteLine("Title: {0}", id3V1.Title);
                        Console.WriteLine("Year: {0}", id3V1.Year);

                        if (id3V1.Version == "ID3v1.1")
                        {
                            // Track number is presented only in ID3 v1.1
                            Console.WriteLine("Track number: {0}", id3V1.TrackNumber);
                        }
                    }

                    //ExEnd:ReadID3v1Tag
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
コード例 #5
0
ファイル: Form1.cs プロジェクト: 307509256/EasyX265EncoderGui
        private void StartOneThread()
        {
            int isHandling = -1;

            while (true)
            {
                lock (handledlock)
                {
                    hasHandle++;
                    isHandling = hasHandle;
                }
                if (isHandling >= listView1.Items.Count)
                {
                    return;
                }
                ListViewItem item = null;

                this.Invoke((Action) delegate()
                {
                    item = listView1.Items[isHandling];
                    listView1.Items[isHandling].SubItems["States"].Text = "转码中";
                });
                AudioInfo info = item.Tag as AudioInfo;

                string output = string.Empty;
                string copyto = string.Empty;
                if (cbKeepFileTree.Checked)
                {
                    string ralative = FileUtility.MakeRelativePath(info.DirPath + "/", Path.GetDirectoryName(info.FullName));
                    string outpath  = Path.Combine(textBox1.Text, ralative);
                    output = Path.Combine(outpath, Path.GetFileNameWithoutExtension(info.FullName) + ".m4a");
                    string copytopath = Path.Combine(textBox2.Text, ralative);
                    copyto = Path.Combine(copytopath, Path.GetFileNameWithoutExtension(info.FullName) + ".m4a");
                    if (!Directory.Exists(outpath))
                    {
                        Directory.CreateDirectory(outpath);
                    }
                    if (!Directory.Exists(copyto))
                    {
                        Directory.CreateDirectory(copyto);
                    }
                }
                else
                {
                    output = Path.Combine(textBox1.Text, Path.GetFileNameWithoutExtension(info.FullName) + ".m4a");
                    copyto = Path.Combine(textBox2.Text, Path.GetFileNameWithoutExtension(info.FullName) + ".m4a");
                }

                string           bat         = getbat(info.FullName, output);
                ProcessStartInfo processinfo = new ProcessStartInfo();
                processinfo.FileName               = Environment.GetEnvironmentVariable("ComSpec");
                processinfo.Arguments              = "/c " + bat;
                processinfo.UseShellExecute        = false; //输出信息重定向
                processinfo.CreateNoWindow         = true;
                processinfo.RedirectStandardInput  = true;
                processinfo.RedirectStandardOutput = true;
                processinfo.RedirectStandardError  = false;
                processinfo.WindowStyle            = ProcessWindowStyle.Hidden;
                Process ffmpeg = new Process();
                ffmpeg.StartInfo = processinfo;
                ffmpeg.Start();

                var result = ffmpeg.StandardOutput.ReadToEnd();
                ffmpeg.WaitForExit();
                //ffmpeg.Kill();//等待进程结束
                ffmpeg.Dispose();

                if (cbCopyID3.Checked == true)
                {
                    try
                    {
                        using (var mp3 = new Mp3File(info.FullName))
                        {
                            if (mp3.HasTagOfFamily(Id3TagFamily.FileStartTag))
                            {
                            }
                            else
                            {
                                using (var outputmp3 = new Mp3File(output, Mp3Permissions.ReadWrite))
                                {
                                    Id3v1Tag id3tag = Id3Tag.Create <Id3v1Tag>();
                                    TagConsole.ReadTagToID3(id3tag, info.FullName);
                                    outputmp3.WriteTag(id3tag, id3tag.MajorVersion, id3tag.MinorVersion, WriteConflictAction.Replace);
                                }
                            }
                        }
                    }
                    catch { }
                }
                if (cbCompleteDo.Checked)
                {
                    try
                    {
                        if (cblCompeteAction.SelectedIndex == 0)
                        {
                            this.Invoke((Action) delegate()
                            {
                                listView1.Items[isHandling].SubItems["States"].Text = "拷贝中";
                            });

                            File.Copy(output, copyto, true);
                        }
                        else if (cblCompeteAction.SelectedIndex == 1)
                        {
                            this.Invoke((Action) delegate()
                            {
                                listView1.Items[isHandling].SubItems["States"].Text = "剪切中";
                            });
                            if (File.Exists(copyto))
                            {
                                File.Delete(copyto);
                            }
                            File.Move(output, copyto);
                        }
                    }
                    catch { }
                }

                this.Invoke((Action) delegate()
                {
                    listView1.Items[isHandling].SubItems["States"].Text = "完成";
                });
            }
        }
コード例 #6
0
        private void StartOneThread()
        {
            int isHandling = -1;

            while (true)
            {
                lock (handledlock)
                {
                    hasHandle++;
                    isHandling = hasHandle;
                }
                if (isHandling >= listView1.Items.Count)
                {
                    return;
                }
                ListViewItem item = null;

                this.Invoke((Action) delegate()
                {
                    item = listView1.Items[isHandling];
                    listView1.Items[isHandling].SubItems["States"].Text = "转码中";
                });
                AudioInfo info = item.Tag as AudioInfo;

                string extension = ".m4a";

                if (cbAudioEncoder.Text == "Opus")
                {
                    extension = ".opus";
                }
                else if (cbAudioEncoder.Text == "FLAC")
                {
                    extension = ".flac";
                }

                string output = string.Empty;
                string copyto = string.Empty;
                if (cbKeepFileTree.Checked)
                {
                    string ralative = FileUtility.MakeRelativePath(info.DirPath + "/", Path.GetDirectoryName(info.FullName));
                    string outpath  = Path.Combine(textBox1.Text, ralative);
                    output = Path.Combine(outpath, Path.GetFileNameWithoutExtension(info.FullName) + extension);
                    string copytopath = Path.Combine(textBox2.Text, ralative);
                    copyto = Path.Combine(copytopath, Path.GetFileNameWithoutExtension(info.FullName) + extension);
                    if (!Directory.Exists(outpath))
                    {
                        Directory.CreateDirectory(outpath);
                    }
                    if (!Directory.Exists(copyto))
                    {
                        Directory.CreateDirectory(copyto);
                    }
                }
                else
                {
                    output = Path.Combine(textBox1.Text, Path.GetFileNameWithoutExtension(info.FullName) + extension);
                    copyto = Path.Combine(textBox2.Text, Path.GetFileNameWithoutExtension(info.FullName) + extension);
                }

                AudioConfig ac = new AudioConfig();
                ac.Encoder = info.Encoder;
                ac.Input   = info.FullName;
                ac.Quality = float.Parse(txtQuality.Text);
                int.TryParse(txtCh.Text, out ac.Channel);
                if (string.IsNullOrEmpty(output))
                {
                    output = Path.GetFileNameWithoutExtension(ac.Input) + extension;
                }
                ac.Output = output;

                if (info.Encoder == AudioEncoder.aac)
                {
                    CommandHelper.RunFFmpegToAAC(ac);
                }
                else if (info.Encoder == AudioEncoder.opus)
                {
                    CommandHelper.RunFFmpegToOpus(ac);
                }
                else if (info.Encoder == AudioEncoder.flac)
                {
                    CommandHelper.RunFFmpegToFlac(ac);
                }


                if (cbCopyID3.Checked == true && ac.Encoder == AudioEncoder.aac)
                {
                    try
                    {
                        using (var mp3 = new Mp3File(info.FullName))
                        {
                            if (mp3.HasTagOfFamily(Id3TagFamily.FileStartTag))
                            {
                            }
                            else
                            {
                                using (var outputmp3 = new Mp3File(output, Mp3Permissions.ReadWrite))
                                {
                                    Id3v1Tag id3tag = Id3Tag.Create <Id3v1Tag>();
                                    TagConsole.ReadTagToID3(id3tag, info.FullName);
                                    outputmp3.WriteTag(id3tag, id3tag.MajorVersion, id3tag.MinorVersion, WriteConflictAction.Replace);
                                }
                            }
                        }
                    }
                    catch { }
                }
                if (cbCompleteDo.Checked)
                {
                    try
                    {
                        if (cblCompeteAction.SelectedIndex == 0)
                        {
                            this.Invoke((Action) delegate()
                            {
                                listView1.Items[isHandling].SubItems["States"].Text = "拷贝中";
                            });

                            File.Copy(output, copyto, true);
                        }
                        else if (cblCompeteAction.SelectedIndex == 1)
                        {
                            this.Invoke((Action) delegate()
                            {
                                listView1.Items[isHandling].SubItems["States"].Text = "剪切中";
                            });
                            if (File.Exists(copyto))
                            {
                                File.Delete(copyto);
                            }
                            File.Move(output, copyto);
                        }
                    }
                    catch { }
                }

                this.Invoke((Action) delegate()
                {
                    listView1.Items[isHandling].SubItems["States"].Text = "完成";
                });
            }
        }
コード例 #7
0
            /// <summary>
            /// Updates ID3v1 tag in MP3 format
            /// </summary> 
            /// 
            public static void UpdateID3v1Tag()
            {
                try
                {
                    //ExStart:UpdateID3v1Tag
                    // initialize Mp3Format class
                    Mp3Format mp3Format = new Mp3Format((Common.MapSourceFilePath(filePath)));

                    // create id3v1 tag
                    Id3v1Tag id3Tag = new Id3v1Tag();

                    // set artist
                    id3Tag.Artist = "A-ha";

                    // set title
                    id3Tag.Title = "Take on me";

                    // update ID3v1 tag
                    mp3Format.UpdateId3v1(id3Tag);

                    // and commit changes
                    mp3Format.Save();
                    //ExEnd:UpdateID3v1Tag
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }