精华内容
下载资源
问答
  • 修改音乐文件属性
    2021-03-12 23:08:39

    最近需要用java读取音频文件(mp3,flac格式的文件)的详细属性信息,比如:包括采样率(SampleRate)、制作格式或制作技术(Format)、单曲名(TITLE)、单曲艺术家(ARTIST)、专辑名(ALBUM)、专辑艺术家(ALBUM_ARTIST)、音轨号(TRACK)、语言(LANGUAGE)、版权方(COPYRIGHT)等等,并统一修改。研究了好久,发现有个第三方的开源jar,很好用。

    JAudiotagger

    官网地址:http://www.jthink.net/jaudiotagger

    API DOC:http://www.jthink.net/jaudiotagger/javadoc/index.html

    下载地址:https://repo1.maven.org/maven2/org/jaudiotagger/2.0.3/

    使用示例:

    使用起来,很简单,读取MP3文件的Title和歌唱家属性,并修改:

    Java

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    privatevoidreadMP3File(Filefile){

    StringfileName=file.getName();

    if(!fileName.endsWith(".MP3")&&!fileName.endsWith(".mp3")){

    return;

    }

    /**

    * 自定义 标题  作者  专辑

    */

    String_author="周杰伦";

    String_title="青花瓷";

    String_album="《范特西》";

    MP3FileReaderreader=newMP3FileReader();

    try{

    AudioFileaudioFile=reader.read(file);

    Tagtag=audioFile.getTag();

    booleanupdate=false;

    StringARTIST=tag.getFirst(FieldKey.ARTIST);

    if(StringUtils.isEmpty(ARTIST)){

    tag.setField(FieldKey.ARTIST,_author);

    update=true;

    }

    StringTITLE=tag.getFirst(FieldKey.TITLE);

    if(StringUtils.isEmpty(TITLE)){

    tag.setField(FieldKey.TITLE,_title);

    update=true;

    }

    StringALBUM=tag.getFirst(FieldKey.ALBUM);

    if(StringUtils.isEmpty(ALBUM)){

    tag.setField(FieldKey.ALBUM,_album);

    update=true;

    }

    /**

    * 如果有修改,写入文件

    */

    if(update){

    MP3FileWriterwriter=newMP3FileWriter();

    writer.writeFile(audioFile);

    }

    }catch(Exceptione){

    e.printStackTrace();

    }

    }

    同样,对于无损音乐文件也是一样的使用方式,只是,把Reader类 和 Writer类换成Flac的封装:

    Java

    1

    2

    3

    FlacFileReaderreader=newFlacFileReader();

    AudioFileaudioFile=reader.read(file);

    Tagtag=audioFile.getTag();

    Java

    1

    2

    FlacFileWriterwriter=newFlacFileWriter();

    writer.write(audioFile);

    对于其他的属性和信息,大家可以参考官方文档。

    参考文章:https://www.cnblogs.com/once/p/3734755.html

    更多相关内容
  • 个人比较喜欢听小说,但是下载的小说文件名字都有问题,特此编写了一个MP3文件属性修改器,批量修改的,值得收藏哦
  • 批量修改mp3、flac的属性。在播放器播放MP3时候,文件的title、artist等信息需要正确设置才能产生last.fm的播放记录。本工具可以按照简单的规律,批量设置文件属性。 第二版 ...

    批量修改mp3、flac的属性。在播放器播放MP3时候,文件的title、artist等信息需要正确设置才能产生last.fm的播放记录。本工具可以按照简单的规律,批量设置文件的属性。 

     

     

    第二版

     

    展开全文
  • 批量修改mp3、flac的属性。在播放器播放MP3时候,文件的title、artist等信息需要正确设置才能产生last.fm的播放记录。本工具可以按照简单的规律,批量设置文件属性。第二版
  • 毛毛虫自制音频需要将音频名称保存成RECxxxx格式(这种格式不方便自己区分音频内容),为了自己区分方便,需要将音频歌曲名称写入音频文件属性详细信息的标题中。 因此要达到目的,需要完成以下需求: 1)MP4文件...

    最近super simple song很火,本人有sss的mp4视频文件和歌词本,为了让歌词本可以点读,需要自制毛毛虫点读的音频,但是sss的歌曲有180多首,所以想通过程序批量完成。
    毛毛虫自制音频需要将音频名称保存成RECxxxx格式(这种格式不方便自己区分音频内容),为了自己区分方便,需要将音频歌曲名称写入音频文件属性详细信息的标题中。

    因此要达到目的,需要完成以下需求:
    1)MP4文件批量转换成MP3文件,通过魔影工厂即可批量转换的。
    2)MP3文件改名
    3)MP3文件属性修改
    下面的程序及是批量完成文件改名和属性修改

    import os
    import eyed3
    
    # artist 参与创作的艺术家
    # album 专辑,唱片集
    # title 标题
    def modifyMP3Property(path, artist, album, title):
        filename = os.path.basename(path).split('.')[0]
        try:
            audiofile = eyed3.load(path)
            if audiofile != None:
                audiofile.initTag()
                audiofile.tag.artist = u'%s' % artist
                audiofile.tag.album = u'%s' % album
                audiofile.tag.title = u'%s' % title
                audiofile.tag.save()
        finally:
            print()
    
    def reName():
        path=input("请输入路径(例如D:\\\\picture):")
        name=input("请输入开头名:")
        start=input("请输入开始数:")
        fileType=input("请输入后缀名(如 .jpg、.txt等等):")
        print("正在生成以"+name+start+fileType+"迭代的文件名")
        count=0
        filelist=os.listdir(path)
        filelist.sort(key=lambda filename:int(filename.split('.')[0]))
        for files in filelist:
            oldPath=os.path.join(path,files)
            if os.path.isdir(oldPath):
                continue
            modifyMP3Property(oldPath, title=files, artist=files, album=files)
            newPath=os.path.join(path,name+str(count+int(start))+fileType)
            os.rename(oldPath,newPath)
            count+=1
        print("共修改了"+str(count)+"个文件")
    
    reName()
    

    程序运行界面如下
    运行界面
    sss文件修改前
    sss
    sss文件修改后
    在这里插入图片描述

    展开全文
  • 主要介绍了Python修改MP3文件的方法,可实现删除MP3中图片文件的功能,需要的朋友可以参考下
  • 批量地方便修改MP3文件属性,例如歌手,专辑,时间,风格等
  • 用C#修改Mp3文件属性

    2019-07-22 23:50:00
    最近在处理一批下载的评书mp3文件时,需要把它们的一些属性修改为有规律的样式,以便自己播放时知道是播放的那首。 要修改属性如下: 修改的方法我是使用的...
     

    最近在处理一批下载的评书mp3文件时,需要把它们的一些属性做修改为有规律的样式,以便自己播放时知道是播放的那首。

    要修改的属性如下:

    image

    修改的方法我是使用的 http://www.cnblogs.com/TianFang/archive/2009/09/27/1574722.html  介绍的 使用 WindowsAPICodePack 的方法来修改。

    但是上述地址给出的函数有个小bug,且具体如何用代码实现也没有说明,所以整理了这篇博客,

    WindowsAPICodePack 在下面地址可以下载:

    http://code.msdn.microsoft.com/WindowsAPICodePack

    我下载的是 Windows API Code Pack 1.0.1  中的

    WindowsAPICodePack.zip 
    source code, 6927K, uploaded Nov 19

    这个是源文件, 下载后打开可以看到 WindowsAPICodePack.sln 文件, 用 Visual Studio 编译后,我们可以得到下面2个文件:

    Microsoft.WindowsAPICodePack.dll

    Microsoft.WindowsAPICodePack.Shell.dll

    这就是我们项目中要引用的两个文件。

    引用这两个文件后,再在项目中增加一个文件,内容如下(注意把namespace修改为你自己的):

    这个文件中也就是我说的http://www.cnblogs.com/TianFang/archive/2009/09/27/1574722.html  介绍的有小bug的文件,有错误的部分看下面我的注释。文件内容如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.WindowsAPICodePack.Shell;
    using Microsoft.WindowsAPICodePack.Shell.PropertySystem;
    using System.Reflection;
    
    namespace _52PS_WpfApplication
    {
        public class MediaTags
        {
            #region Mp3文件属性
             
            /// 标题
            /// 
            [MediaProperty("Title")]
            public string Title { get; set; }
    
            /// 
            /// 子标题
            /// 
            [MediaProperty("Media.SubTitle")]
            public string SubTitle { get; set; }
    
            /// 
            /// 星级
            /// 
            [MediaProperty("Rating")]
            public uint? Rating { get; set; }
    
            /// 
            /// 备注
            /// 
            [MediaProperty("Comment")]
            public string Comment { get; set; }
    
            /// 
            /// 艺术家
            /// 
            [MediaProperty("Author")]
            public string Author { get; set; }
    
            /// 
            /// 唱片集
            /// 
            [MediaProperty("Music.AlbumTitle")]
            public string AlbumTitle { get; set; }
    
            /// 
            /// 唱片集艺术家
            /// 
            [MediaProperty("Music.AlbumArtist")]
            public string AlbumArtist { get; set; }
    
            /// 
            /// 年
            /// 
            [MediaProperty("Media.Year")]
            public uint? Year { get; set; }
    
            /// 
            /// 流派
            /// 
            [MediaProperty("Music.Genre")]
            public string Genre { get; set; }
    
            /// 
            /// #
            /// 
            [MediaProperty("Music.TrackNumber")]
            public uint? TrackNumber { get; set; }
    
            /// 
            /// 播放时间
            /// 
            [MediaProperty("Media.Duration")]
            public string Duration { get; private set; }
    
            /// 
            /// 比特率
            /// 
            [MediaProperty("Audio.EncodingBitrate")]
            public string BitRate { get; private set; }
            #endregion
    
            public MediaTags(string mediaPath)
            {
                //var obj = ShellObject.FromParsingName(mp3Path);   //缩略图,只读
                //obj.Thumbnail.Bitmap.Save(@"R:\2.jpg");
    
                Init(mediaPath);
            }
    
            void Init(string mediaPath)
            {
                using (var obj = ShellObject.FromParsingName(mediaPath))
                {
                    var mediaInfo = obj.Properties;
                    foreach (var properItem in this.GetType().GetProperties())
                    {
                        var mp3Att = properItem.GetCustomAttributes(typeof(MediaPropertyAttribute), false).FirstOrDefault();
                        var shellProper = mediaInfo.GetProperty("System." + mp3Att);
                        var value = shellProper == null ? null : shellProper.ValueAsObject;
    
                        if (value == null)
                        {
                            continue;
                        }
    
                        if (shellProper.ValueType == typeof(string[]))    //艺术家,流派等多值属性
                        {
                            properItem.SetValue(this, string.Join(";", value as string[]), null);
                        }
                        else if (properItem.PropertyType != shellProper.ValueType)    //一些只读属性,类型不是string,但作为string输出,避免转换 如播放时间,比特率等
                        {
                            properItem.SetValue(this, value == null ? "" : shellProper.FormatForDisplay(PropertyDescriptionFormat.Default), null);
                        }
                        else
                        {
                            properItem.SetValue(this, value, null);
                        }
                    }
                }
            }
    
            public void Commit(string mp3Path)
            {
                var old = new MediaTags(mp3Path);
    
                using (var obj = ShellObject.FromParsingName(mp3Path))
                {
                    var mediaInfo = obj.Properties;
                    foreach (var proper in this.GetType().GetProperties())
                    {
                        var oldValue = proper.GetValue(old, null);
                        var newValue = proper.GetValue(this, null);
    
                        if (oldValue == null && newValue == null)
                        {
                            continue;
                        }
    
                        // 这里做了修改  郭红俊 20091202
                           // 原先在旧值存在,新值没有给出时,会有空对象引用的bug
                        //if (oldValue == null || !oldValue.Equals(newValue))
    
                        // 新的逻辑 新值存在时, 则替换旧值
                        if ((newValue != null) && (newValue.ToString().Trim().Length > 0) && (newValue != oldValue))
                        {
                            var mp3Att = proper.GetCustomAttributes(typeof(MediaPropertyAttribute), false).FirstOrDefault();
                            var shellProper = mediaInfo.GetProperty("System." + mp3Att);
                            Console.WriteLine(mp3Att);
    
                            if (newValue == null) newValue = string.Empty;
    
                            SetPropertyValue(shellProper, newValue);
                        }
                    }
                }
            }
    
            #region SetPropertyValue
            static void SetPropertyValue(IShellProperty prop, object value)
            {
                if (prop.ValueType == typeof(string[]))        //只读属性不会改变,故与实际类型不符的只有string[]这一种
                {
                    string[] values = (value as string).Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                    (prop as ShellProperty<string[]>).Value = values;
                }
                if (prop.ValueType == typeof(string))
                {
                    (prop as ShellProperty<string>).Value = value as string;
                }
                else if (prop.ValueType == typeof(ushort?))
                {
                    (prop as ShellProperty<ushort?>).Value = value as ushort?;
                }
                else if (prop.ValueType == typeof(short?))
                {
                    (prop as ShellProperty<short?>).Value = value as short?;
                }
                else if (prop.ValueType == typeof(uint?))
                {
                    (prop as ShellProperty<uint?>).Value = value as uint?;
                }
                else if (prop.ValueType == typeof(int?))
                {
                    (prop as ShellProperty<int?>).Value = value as int?;
                }
                else if (prop.ValueType == typeof(ulong?))
                {
                    (prop as ShellProperty<ulong?>).Value = value as ulong?;
                }
                else if (prop.ValueType == typeof(long?))
                {
                    (prop as ShellProperty<long?>).Value = value as long?;
                }
                else if (prop.ValueType == typeof(DateTime?))
                {
                    (prop as ShellProperty).Value = value as DateTime?;
                }
                else if (prop.ValueType == typeof(double?))
                {
                    (prop as ShellProperty<double?>).Value = value as double?;
                }
            }
            #endregion
    
            #region MediaPropertyAttribute
            [AttributeUsage(AttributeTargets.Property, Inherited = false, AllowMultiple = true)]
            sealed class MediaPropertyAttribute : Attribute
            {
                public string PropertyKey { get; private set; }
                public MediaPropertyAttribute(string propertyKey)
                {
                    this.PropertyKey = propertyKey;
                }
    
                public override string ToString()
                {
                    return PropertyKey;
                }
            }
            #endregion
        }
    
    }

     

    使用这个文件的一个简单范例如下:

    这个范例修改程序运行时目录下指定规范名字mp3文件的标题属性,当然其他属性也是类似的。

            private void btn_2_Click(object sender, RoutedEventArgs e)
            {
                MediaTags mt = new MediaTags(Environment.CurrentDirectory);
    
                for (int i = 1; i <= 16; i++)
                {
                    string fileName = string.Format("{0}\\童林传_{1:000}.mp3", Environment.CurrentDirectory, i);
                    mt.Title = string.Format("童林传 {0:000}",i);
                    mt.Author = "单田芳";
                    mt.Commit(fileName);
                }
    
            }

     

    参考资料:

    用C#修改Mp3文件属性 
    http://www.cnblogs.com/TianFang/archive/2009/09/27/1574722.html

    转载于:https://www.cnblogs.com/MaxWoods/archive/2010/02/01/1661341.html

    展开全文
  • 修改MP3文件摘要
  • Android 10以上,修改文件属性的问题

    千次阅读 2022-02-10 17:47:29
    最近有个需求:PC端传过来的文件,需要保持原来的LastModified time。 自然而然的想到了用file.setLastModified(), 实际情况是虽然返回true,但是没有修改成功。一个三星android12的手机除外。 通过研究,发现不同...
  • python修改歌曲属性

    2019-12-24 00:15:39
    将徐涛的mp3文件读取进来,然后修改mp3的具体属性,譬如说修改歌曲名,歌手信息等 代码 import os import eyed3 path = os.getcwd() files= os.listdir(path) for file in files: tp = file[:-3] if tp != "mp3": ...
  • (电脑入门到精通网 www.58116.cn)1、文件属性(电脑入门到精通网 www.58116.cn)1)打开“我的文档”,选择一个文件,瞄准图标点右键,选择“属性”命令; (电脑入门到精通网 www.58116.cn)(电脑入门到精通网 ...
  • 音频文件标签编辑器 Metatogger 中文版 音频文件标签编辑器 Metatogger 中文版 Metatogger 允许您更正或完成音频文件的标签。为此,它具有允许更正或完成音频文件标签的功能: 批量编辑标签,并支持多个标签(具有...
  • VBA修改MP3的属性信息(包括专辑名、作家等),压缩包里有DLL复制到C:\windows目录里,运行xls中的程序(alt+F11打开),程序只是一个例子,下面有注释说明怎么操作其他属性
  • ogg音频文件有艺术家,标题,专辑等属性, 请问有c#如何进行修改, 找了好久也没找到有ogg的开发库,MP3格式的倒是很容易处理。 抱歉没C币,各位有知道的还望指点一下
  • python快速更改文件格式
  • 菲菲更名软件工具 批量更改文件名-扩展名-PDF-音乐-图片信息-属性.rar
  • 文件属性及资源文件的使用

    千次阅读 2015-02-07 13:22:41
    一、C#文件属性1、什么是文件属性文件属性可以用来指示项目系统对应文件执行的操作。具体的操作见下文。Visual Basic和Visual C#的文件都具有4个属性:“FileName”、“BuildAcition”、“CustomTool”、”...
  • 我们手机电脑上除了存放音乐音频文件之外,还可能存放一些英语听力音频、老师知识点讲解音频、会议记录音频等,这些第三方或者自制的音频文件一般是没有艺术家,专辑,类型,标题,流派等音频信息的,而当我们把这些第...
  • 文件类型: Linux中的文件类型和Windows有明显的区别,最大的就...普通文件可以是源代码、可执行文件、文本图片音频或者视频等,其实就是Windows的那种最基本的文件(你看目录、链接、设备文件都知道,还剩下什么...
  • 修改采样率 sox 8k_16bit.wav -r 16000 16k_16bit.wav 修改量化精度 sox 16k_16bit.wav -b 8 16k_8bit.wav sox 2.wav -r 16000 -b 8 8k_8bit1.wav sox命令链接
  • 支持文件属性更改;支持文件时间修改;支持多文件夹同时处理;支持音乐、图像改名前预览等功能。 它的主要特性包括: 1、操作简单,易上手; 2、采用先进的编辑技术; 3、支持改名预览; 4、转换不分格式; 5...
  • C++读取音频文件mp3、flac的曲名、歌手、专辑等ID3v2标签 (libzplay) 音乐的标签信息,以前用ID3v1来储存,直接存放文件最后128字节里,每一个属性的空间是固定大小的。现在的ID3v2则把标签存放在文件开头,每一属性...
  • [Audio] 音频基本属性及概念

    千次阅读 2018-07-05 10:07:34
    近期在做一个语音识别及控制的产品,需对接音频数据采集和处理,关于这方面的知识还是比较欠缺和零散的,借此机会,对音频这块的知识进行学习和梳理,仅供自己参考。 ...
  • MP3属性修改

    2012-03-11 15:02:48
    MP3类型文件属性修改 用于文档的具体时间具体类型等你觉得可以更改的地方都可以更改
  • HTML5音频audio属性

    2021-06-12 02:17:50
    audio 的控制函数主要有:load() 加载音频、视频软件,通常不必调用,除非是动态生成的元素,用来在播放前预加载play() 加载并播放音频、视频文件,除非文件已经暂停在其他位置,否则默认重头开始播放pause() 暂停...
  • 编辑mp3信息

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,211
精华内容 30,484
关键字:

修改音乐文件属性