자바 로 mp3 파일 재생 시간 과 tag 정 보 를 가 져 옵 니 다.

mp3 파일 에서 mp3 재생 시간 을 받 아야 합 니 다.몇 시간 을 괴 롭 히 고 커 브 길 을 돌아 서 대충 기록 해 보 세 요.
먼저 mp3 fenge 라 는 mp3 파일 을 분할 하 는 오픈 소스 항목 을 찾 았 습 니 다.  
http://code.google.com/p/mp3fenge/
API 로 trackLength 를 받 아 많은 파일 처리 가 잘못 되 었 습 니 다.그의 프로젝트 에서 jaudiotagger 라 는 700 여 K 의 가방 을 보고 mp3 파일 을 분석 하 는 주요 처리 라 이브 러 리 라 고 추측 했다.그러나 이 가방 의 사용법 을 대충 찾 아 보 았 지만 찾 지 못 해 다른 해석 가방 을 찾 았 다.
한 시간 동안 여러 개의 가방 을 시험 해 보 았 다.  mp3spi1.9.5.zip  jid3lib-0.5.4.zip 에 문제 가 있 습 니 다.
인터넷 클래식 코드 로.

AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(file);
Map<?, ?> properties = fileFormat.properties();
Long ms = (Long) properties.get("duration");

줄곧 잘못 을 보고 하 다.또 많은 댓 글 을 보고 jmf 를 설치 해 야 한 다 며 jmf-2 를 다운로드 했다.1_1e-alljava.zip 설치 가 잘못 되 었 습 니까?가장 얄 미 운 것 은 Oacle 홈 페이지 에서 jmf 가 mp3 형식 을 지원 한 다 는 것 이다.
http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html
인용 하 다.
MP3 support for JMF
We are excited to announce MP3 support for JMF! Please proceed to the download page to get your hands on this highly anticipated addition to JMF.
다운로드 페이지 
http://www.oracle.com/technetwork/java/javase/download-137625.html
인용 하 다.
Unzip the JavaMP3plugin.zip in the JRE directory of your choice.
The included jar file (mp3plugin.jar) contains a Java Sound plugin as well as a Java Media Framework plugin for playing MPEG-2 Layer 3 Audio.
download 링크 에 들 어가 서 자바 MP3 plugin.zip 의 다운 로드 를 찾 을 수 없습니다.
구 글 은 한참 동안 자바 MP3 plugin 의 다운로드 와 자 료 를 찾 지 못 하고 그만 두 기만 하면 된다.
마지막 으로 냉정 하 게 jaudiotagger 가방 의 자 료 를 찾 아 프로젝트 홈 페이지 를 찾 습 니 다.
http://www.jthink.net/jaudiotagger/
jaudiotagger-2.0.4-20111207.115108-15 버 전 다운로드
간단 한 몇 줄 코드

	public static int getMp3TrackLength(File mp3File) {
		try {
			MP3File f = (MP3File)AudioFileIO.read(mp3File);
			MP3AudioHeader audioHeader = (MP3AudioHeader)f.getAudioHeader();
			return audioHeader.getTrackLength();	
		} catch(Exception e) {
			return -1;
		}
	}

됐어!
원래 해석 할 수 없 었 던 mp3 파일 테스트 가 모두 통과 되 었 습 니 다.JMF 를 담 을 필요 도 없 이 이 가방 하나만 포함 하면 된다.
또한,jaudiotagger 는 jdk 의 logging 을 사용 합 니 다.jdk log 의 전체 단 계 를 설정 하지 않 고 사용 합 니 다.

		AudioFileIO.logger.setLevel(Level.SEVERE);
		ID3v23Frame.logger.setLevel(Level.SEVERE);
		ID3v23Tag.logger.setLevel(Level.SEVERE);

이 코드 들 은 jaudiotagger 가 많은 log 정 보 를 출력 하 는 것 을 피 할 수 있 습 니 다.
요약:  자 료 를 찾 으 려 면 먼저 홈 페이지 를 찾 아 보 세 요.저 는 처음에 jaudiotagger 의 중국어 자 료 를 찾 으 려 고 했 는데 적당 한 내용 을 찾 지 못 하고 프로젝트 를 마구 찾 았 습 니 다.
게으름뱅이 에 게 주 는 테스트 코드

	public static void  test1() throws Exception {
		File [] dirs = new File[] {
				new File("F:/myvoices"),
				new File("F:/music")
		};
		
		for(File dir : dirs) {
			File [] fs = dir.listFiles();
			for(File file : fs) {
				int length = Mp3Util.getMp3TrackLength(file);
				if(length <= 0) {
					System.err.println("###  " + file.getName() + "=" + Mp3Util.getMp3TrackLength(file));	
				} else {
					System.out.println(file.getName() + "=" + Mp3Util.getMp3TrackLength(file));
				}
				
			}
		}
	}


좋은 웹페이지 즐겨찾기