FFMPEG를 사용하여 WAV로 변환하여 LAME으로 전송하시겠습니까?

FFMPEG를 사용하여 WAV로 변환하여 LAME으로 전송하시겠습니까?

출력을 LAME으로 파이프할 수 있도록 AAC 파일을 WAV로 변환하려고 합니다. 나는 구체적으로 다음과 같은 일을 하려고 합니다.

find . -maxdepth 1 -type f -iname "*.m4a" | sort | while read file; do
    ffmpeg -i "$file" -acodec pcm_s16le -ac 2 - | lame -b 256 -m s -q 0 - output.mp3
done

다음 오류가 발생합니다.

Unable to find a suitable output format for 'pipe:'
Warning: unsupported audio format

-acodec출력을 지정하는 방법이 있나요 ? 이제 맨페이지를 읽어보세요.

FFMPEG에서 MP3로 변환할 수 있다는 것을 알고 있지만 그렇게 하고 싶지는 않습니다. ;)

답변1

님의 팁에 감사드립니다.미아티의 답변, 나는 다음을 생각했습니다.

ffmpeg -i file.m4a -f wav -acodec pcm_s16le -ac 2 - | \
    lame -m s -b 320 -q 0 --replaygain-accurate - file.mp3

stdout으로 출력할 때 형식을 설정해야 합니다.

답변2

이것은 흔한 실수입니다. FFmpeg는 stdin에 욕심이 많습니다. 읽기 루프에서 FFmpeg를 실행하는 경우 이를 꺼야 합니다.

ffmpeg -nostdin

답변3

달리면 어떻게 되나요?

ffmpeg -i file.m4a -acodec pcm_s16le -ac 2 file.wav

그것은 나에게 잘 작동합니다.

문제가 발생하면 이전 오류가 의미가 있으며 아마도 aac 디코딩 또는 wav 인코딩을 지원하지 않을 것입니다. 그러면 파이프는 어떤 형식으로 포맷해야 할지 모르기 때문에 실패합니다.
이 시점에서 가능한 해결책은 지원되는 형식으로 ffmpeg를 컴파일하는 것입니다. (나는 그것이 무료가 아니라고 믿기 때문에 aac를 추측하고 있습니다)

이것에 따라 -f를 사용해보십시오페이지, 출력이 stdout(또는 -)으로 설정된 경우 컨테이너를 수동으로 포맷해야 합니다. 게시물에는 matroska(또는 .mkv 컨테이너)를 사용하라고 나와 있습니다.

ffmpeg -i file.m4a -acodec pcm_s16le -f matroska -ac 2 -

관련 정보