Чтобы понять суть, почему первая команда работает, а вторая - нет. Они создают файлы разного размера с различным содержанием:
ffmpeg -i test.wav -f ogg -acodec libvorbis test.a.ogg
ffmpeg -i test.wav -f ogg -acodec libvorbis - > test.b.ogg
test.a.ogg будет играть правильно и не будет проблем. test.b.ogg начинается в середине исходного аудио и имеет остановки и пропуски в аудио. Также не указывается длина трека.
Я хочу на лету перекодировать исходные файлы в ogg для программы, которую я пишу, и пытаюсь передать стандартный вывод из ffmpeg в мою программу. Помещение результатов в промежуточный файл снижает производительность, поскольку перекодировка должна выполняться по требованию.