Linux에서는 다음과 같이 할 수 있습니다.
(bash)
ffmpeg -i foo.mp3 -f wav - | opusenc --bitrate 64 - bar.opus
이는 WAV 데이터를 Opus에 전달하기 전에 디스크에 쓸 필요가 없으므로 대신 메모리에서 즉시 인코딩이 수행된다는 의미이므로 깔끔합니다.
나는 둘 다 가지고 있고 ffmpeg
Windows opusenc
에 설치했으며 Powershell에 파이프가 있으므로 비슷한 작업을 수행할 수 있을 것으로 예상하여 다음을 시도하고 있습니다.
(PS)
> ffmpeg -y -i .\foo.mp3 -f wav - | .\opusenc.exe --bitrate 64 - bar.opus
내가 기대하는 것: ffmpeg는 인코딩을 위해 wav 오디오를 opusenc에 직접 파이핑해야 합니다.
대신에 무슨 일이 일어나는가?오직opusenc에 데이터를 전달하지 않고 ffmpeg를 실행합니다. 이는 PS 프로세스의 지속적인 RAM 증가와 opusenc의 출력이 없음을 나타냅니다.
답변1
cmd.exe
Powershell 대신 일반을 사용하십시오 . 똑같은 명령이 cmd에서는 작동하지만 PS에서는 작동하지 않습니다.
> ffmpeg -y -i .\foo.mp3 -f wav - | .\opusenc.exe --bitrate 64 - bar.opus