mplayer를 사용하여 PCM wav를 만드는 방법은 무엇입니까?

mplayer를 사용하여 PCM wav를 만드는 방법은 무엇입니까?

spexenc를 사용하여 휴대폰의 오디오북을 다시 인코딩하고 싶습니다. 첫 번째 단계는 mplayer를 사용하여 파일을 다시 인코딩하는 것입니다.

for i in *.mp3; do
    mplayer -ao pcm:waveheader "$i" -af pan=1:0.5:0.5,resample=22050 -ao pcm:file="$i.wav";
done

온라인에서 찾았어요. 그러나 출력 파일은 pcm wav가 아닙니다.

file *.wav
RIFF (little-endian) data, WAVE audio, mono 22050 Hz

xiph.org의 참조 wav는 pcm입니다.

file wb_male.wav 
RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 16000 Hz

spexenc는 마지막 PCM WAV를 인코딩하지만 mplayer 파일은 인코딩하지 않습니다. 왜 안 돼? "pcm"이라는 오디오 출력이 pcm 파일을 출력하지 않습니까? 어떻게 고치나요? fifo의 이름을 지정하지 않고 wav를 speexenc에 직접 파이프하는 쉬운 방법이 있습니까?

답변1

이것MPlayer 매뉴얼 페이지다음 구문을 사용하십시오.

mplayer -ao pcm:file=test.wav test.avi

샘플 속도 제한과 같은 작업을 수행하려면 -srate옵션(예: -srate 44100Redbook CD Audio)을 추가할 수 있습니다.

그러나 설치한 경우 ffmpeg실제로 그렇게 하도록 설계되었으므로 사용하는 것이 좋습니다.

답변2

mplayer -ao pcmmp3에서 생성된 wav 파일은 PCM 형식입니다. 그것은 mp3 디코더가 자연스럽게 생성하는 것이기 때문에 부동 소수점 PCM입니다. file이것을 말해야 하지만 부동 소수점 PCM 형식을 모릅니다.

mp3 디코더는 부동 소수점을 생성하고 -ao pcm수신되는 형식을 기록하므로 형식을 변경하려면 그 사이에 af format필터가 필요합니다. 서명된 16비트 리틀 엔디안(아마도 원하는 것임)의 경우 -af format=s16le이렇게 하면 됩니다.

답변3

pcm 출력으로 mplayer를 실행하면 가장 빠른 방법이 표시됩니다.

Info: Faster dumping is achieved with -benchmark -vc null -vo null -ao pcm:fast

그래서

mplayer in.mp3 -benchmark -vc null -vo null -ao pcm:fast:file=out.wav -af format=s16le

결과:

$ file out.wav
RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 48000 Hz

이것이 충분하나요? sox 또는 audacity를 사용하여 스테레오를 모노로 변환할 수 있습니다.

관련 정보