2012-08-09 5 views
0

Java 프로그램을 작성 중이며 ogg 파일을 mp3 파일로 변환하고 싶습니다.
나는 그것을하기에 좋은 라이브러리를 찾으려고 많은 시간을 보냈지 만, 그 순간에는 성공하지 못했습니다.Java - ogg를 mp3로 변환

필자는 ogg 디코더 (jorbis?)와 mp3 인코더 (lameOnJ?)가 필요하다고 생각합니다.
또한 변환이 완료되면 파일 (아티스트/트랙 태그 등)에 태그를 설정해야합니다.

이것은 Windows 및 OS X 응용 프로그램입니다.
가능하면 사례와 함께 처리 방법에 대한 힌트를 제공해주세요.

감사

+1

무슨 문제입니까? 사용 가능한 각 단계를 수행 할 라이브러리가 있으며 이미 사용할 후보를 알아 냈습니다. 그들을 묶는 접착제 코드를 작성하기 만하면됩니다. – Durandal

+0

글쎄, 나는 자바에 상당히 익숙하지 않으며,이 글루 코드를 작성하는 좋은 예를 찾기가 어렵다. – jitowix

+1

* 아무도 당신을 위해 쓰지 않습니다 * (지불하지 않는 한). 그리고 당신이 필요로하는 어떤 예도 없을 것입니다. 그러나 각 단계에 대한 부분적인 솔루션 예제 (나누기 및 정복!)를 수행 할 수 있습니다. 첫 번째 단계부터 시작하여 ogg 파일을 디코딩하십시오. 가지고있는 경우 디코드 된 데이터를 인코더로 전달하도록 확장하십시오. 그리고 ... – Durandal

답변

0

당신은 선택을 많이 가지고 있고, 당신이 넣어하는 방법 많은 노력에 따라, 어떤 제약 당신이 실행 플랫폼에 대한했다.

많은 개발자는 외부 디코드/인코딩/레이블 실행 파일에 대한 System.exec() 호출을 수행하여 중간 파일을 디스크에 기록합니다. 이것은 다소 clunky하지만 일단 제대로 설정되면 작동합니다.

더 정교한 옵션은 찾은 것과 같은 라이브러리를 사용하는 것입니다. 파일 시스템을 사용하여 압축되지 않은 버전을 임시로 저장할 수 있습니다.

그러나 중간 단계를 저장하는 것을 피할 수 있으며 파이프 라이닝을 사용하면 더 빠르게 만들 수 있습니다. 디코더의 출력을 인코더의 입력으로 공급하고 둘 다 설정해야합니다.

세부 정보는 API에 따라 다릅니다. 운이 좋으면 청크로 작업 할 수 있으며, 단일 스레드로 관리 할 수 ​​있습니다.

스트림과 함께 작동하는 경우 손을 더러워서 스레드로 작업해야 할 수 있습니다. 인코더 용의 1 개의 thread, 디코더 용의 thread.

+0

왜 스트림으로 작업하려면 * 여러 스레드가 필요합니까 ??? – Durandal

+0

@Durandal은 하나의 API가 'OggDecoder.decode (InputStream in, OutputStream out)'동기 메소드를 가지고 있고 다른 API는'Mp3Encoder.encode (InputStream in, OutputStream out)'을 가지고 있다고 말한다. 하나를 다른쪽에 연결하려면 스레드가 필요하거나 중간 형식을 어딘가에 저장해야합니다. – slim

+0

아, 충분히 생각하지 못했습니다. 나는 네가 의미하는 것을 지금 본다. – Durandal