상세 컨텐츠

본문 제목

mp3 parser metadata 확인 (mp3 info 확인) java

프로그램 언어/Java

by husks 2015. 6. 4. 14:00

본문

반응형

mp3는 음원파일 이외에도 해당 노래의 정보를 담은 메타 데이터가 있습니다.


아티스트, 타이틀, 장르등의 정보를 가지고 있습니다.


해당 mp3에서 정보를 확인 하는 소스 입니다. (라이브러리에 첨부되어있는 jar 파일을 추가해 주세요.)


tika-core-1.8.jar

tika-parsers-1.4.jar


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.parser.mp3.Mp3Parser;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

/**
 * @author jaehyun.jung
 *
 */
public class AudioParser {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		String fileLocation = "C:/tmp/music/과속스캔들 OST ['08] - 01. Jazz For Morning.mp3";

		try {

			InputStream input = new FileInputStream(new File(fileLocation));
			ContentHandler handler = new DefaultHandler();
			Metadata metadata = new Metadata();
			Parser parser = new Mp3Parser();
			ParseContext parseCtx = new ParseContext();
			parser.parse(input, handler, metadata, parseCtx);
			input.close();

			// List all metadata
			String[] metadataNames = metadata.names();

			for(String name : metadataNames){
				System.out.println(name + ": " + metadata.get(name));
			}

			// Retrieve the necessary info from metadata
			// Names - title, xmpDM:artist etc. - mentioned below may differ based
			System.out.println("----------------------------------------------");
			System.out.println("Title: " + metadata.get("title"));
			System.out.println("Artists: " + metadata.get("xmpDM:artist"));
			System.out.println("Composer : "+metadata.get("xmpDM:composer"));
			System.out.println("Genre : "+metadata.get("xmpDM:genre"));
			System.out.println("Album : "+metadata.get("xmpDM:album"));

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (TikaException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}



반응형

관련글 더보기

댓글 영역