# Mp3 Dateien bearbeiten und speichern



## GUI-Programmer (19. Feb 2014)

Hallo zusammen,

das Problem bei meinen Programm ist, dass sämtliche Änderungen, in diesem Fall nur die Änderung der Titelnummer, an meinen Mp3 Dateien nicht durchgeführt werden. Was muss ich tun, damit diese Änderungen gespeichert werden?

Zur Info:
Das Programm soll alle Mp3 Dateien innerhalb eines Ordners auswählen und nach dem Änderungsdatum entsprechend eine Titelnummer zuweisen.


```
import java.awt.EventQueue;
import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import org.jaudiotagger.audio.mp3.MP3File;
import org.jaudiotagger.tag.FieldKey;
import org.jaudiotagger.tag.id3.AbstractID3v2Tag;


public class TrackNumberAdder implements Comparator<Object> {
	
	private Map<File, Long> mapTimes;
	
	public static void main(String[] args) {
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch(ClassNotFoundException | InstantiationException
				| IllegalAccessException | UnsupportedLookAndFeelException ex) {
			ex.printStackTrace();
		}
		
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				new TrackNumberAdder();
			}
		});
	}
	
	public TrackNumberAdder() {
		JFileChooser filechooser = new JFileChooser();
		filechooser.setCurrentDirectory(new File("D:/Dateien/Musik"));
		filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
		filechooser.setMultiSelectionEnabled(false);
		filechooser.showDialog(null, "Auswählen");
		
		//File directory = new File("D:/Dateien/Musik/TheSoundYouNeed Playlist");
		File directory = filechooser.getSelectedFile();
		if(directory == null) directory = filechooser.getCurrentDirectory();
		File[] files = directory.listFiles();
		
		mapTimes = new TreeMap<File, Long>();
		for(int i=0; i<files.length; i++) {
			mapTimes.put(files[i], files[i].lastModified());
		}
		
		Map<File, Long> mapTimesSorted = new TreeMap<File, Long>(this);
		mapTimesSorted.putAll(mapTimes);
		
		Object[] filesSorted = mapTimesSorted.keySet().toArray();
		for(int i=0; i<filesSorted.length; i++) {
			try {
				//System.out.println((i+1) + "" + ((File) filesSorted[i]));
				MP3File mp3 = new MP3File((File) filesSorted[i]);
				AbstractID3v2Tag tag = mp3.getID3v2Tag();
				tag.setField(FieldKey.TRACK, ""+(i+1));
				mp3.commit();
				mp3.save();
				//System.out.println(tag.getFirst(FieldKey.TRACK));
				Logger.getLogger("org.jaudiotagger").setLevel(Level.ALL);
				//boolean succesfull = fileMp3.renameTo(new File(fileMp3.getParentFile(), name));
			} catch(Exception ex) {
				ex.printStackTrace();
			}
			
		}
		
	}

	@Override
	public int compare(Object o1, Object o2) {
		return mapTimes.get(o1).compareTo(mapTimes.get(o2));
	}
}
```

[EDIT]Viel von den Teil, bei dem die Mp3 Dateien bearbeitet werden hab ich aus einem anderen Programm von mir kopiert, was funktioniert hat (auf Win7).
Jetzt hab ich Win8 (und anderer PC, denke (und hoffe) aber dass es mit dem OS nichts zu tun hat![/EDIT]


----------



## GUI-Programmer (20. Feb 2014)

Neue Kenntnisse:
Mein Programm funktioniert mit anderen Mp3-Dateien! Lediglich die Dateien von der "TheSoundYouNeed Playlist" (ODESZA - Sun Models (feat. Madelyn Grant) - YouTube) die mit FreeYoutubeToMp3Converter heruntergeladen wurden funktionieren nicht!

Kann es an den unterschiedlichen Mp3-Tags liegen? Brauch ich einen andere Bibliothek asl jaudiotagger?


----------



## GUI-Programmer (21. Feb 2014)

siehe auch: http://www.java-forum.org/net-techn...dateien-bearbeiten-speichern.html#post1010304


----------



## Bungamo (18. Mai 2014)

YouTube to MP3 Converter - Video2MP3 kann das sehr gut... ist halt keine java version


----------

