2014-07-08 1 views
3

midi 파일을 ogg 또는 mp3로 변환하려고합니다. 결국 이것은 리눅스 웹 서버에서 발생하지만 현재는 Windows 7 컴퓨터를 사용하고 있습니다. 나는 tmidity를 사용하여 midi를 wav로 변환 한 다음 sox 또는 ffmpeg을 사용하여 wav를 ogg/mp3로 변환합니다.midi to ogg - 파이프 라인 왜곡

(소심이 file.wav를 만들고, 아래의 첫 번째 행) I 프로세스가 잘 작동하는 중간 파일을 사용할 때

timidity.exe file.mid -Ow 
sox.exe file.wav file.ogg 

그러나, (아래로) 파이프 삭스에 소심 출력을 할 때, 결과 파일 OGG는 끔찍

timidity.exe file.mid -Ow -o - | sox.exe -t wav - file.ogg 

을 왜곡하고 나는 경고를 얻을 수있다

sox.exe WARN wav: Premature EOF on .wav input file 

sof를 ffmpeg (및 적절한 명령 행 옵션)로 대체하거나 출력 형식으로 mp3로 ogg를 대체 할 때도 동일한 왜곡 문제가 발생합니다.

그래서 내가 뭘 잘못하고 있니? 경고 자체에 대해서는

감사합니다,

크리스

답변

2

, 당신은 잘못 아무것도하지 않고 있습니다. 또한 겁 매뉴얼 페이지에서이 설명은 무엇 일어나고

Warning: -: Illegal seek: Can't make valid header 

같은 것을 읽고 겁에서 경고를 볼 수 있습니다 : 출력이 겁 경우가 아닌 검색 가능한 파일로 이동, 또는 경우

++ 파일을 닫기 전에 차단 된 경우 파일 헤더에 RIFF 및 데이터 블록 길이 필드에 0xffffffff가 포함됩니다.

RIFF는 일반적으로 파일 확장명이 인 인코딩 형식입니다. timidity가 RIFF 파일을 작성하면 파일의 길이를 알 수 없으므로 헤더에 일부 자리 표시 자 쓰레기를 작성하고 데이터 쓰기로 이동합니다. 데이터가 끝나면 파일의 길이를 알 수 있으므로 파일의 시작 부분으로 돌아가서 헤더의 해당 정크를 덮어 씁니다. 파이프에 쓸 때, 되돌아 가서 아무것도 다시 쓸 방법이 없습니다. 다운 스트림 프로그램은 자리 표시 자 쓰레기를 처리해야합니다. 또한 위도 메뉴얼 페이지에서 :

인기있는 사운드 변환 유틸리티 sox는 잘못된 형식의 파일을 읽을 수 있으므로 sox로 직접 파이프하여 다른 포맷으로 변환 할 수 있습니다.

따라서 귀하가 언급 한 메시지입니다. Sox는 주방장이 파일을 잘못 준비했음을 알리고 있지만 SOX는 피키가 아니기 때문에 언제든지 먹을 수 있습니다. 삭스는 분명 수동적이다. 누가 알았 겠어?

경고 메시지는 이제 사용자가 이미 알고있는 내용이므로 무시할 수 있습니다. 또는, 당신은 원시 형식을 사용하여 명시 적으로 겁을 이야기하고 서로 잘 재생하는 방법 삭스 수 있습니다 왜곡에 관해서는

timidity file.midi -Or1Ssl -s44.1 -o- | sox -t raw -b 16 -e signed -r 44.1k -c 2 - file.ogg 

, Windows 시스템의 오디오 라이브러리의 단점에 의해 부분적으로 발생할 수 있습니다 .문제의 파이프 라인 인 .exe 확장은 Linux 시스템에서 눈에 띄는 왜곡없이 출력을 생성합니다. 파이프 라인에서 잘 정의 된 원시 형식을 사용하면이 문제를 해결하는 데 도움이 될 수 있습니다. 오그 출력을 위해, 당신은 지금 겁에서 직접 그것을 얻을 수

참고 :

timidity file.midi -o file.ogg -Ov