У меня есть .wmv файл, который я хочу, чтобы преобразовать в .wav файл и я использую FFmpeg для того же, команда выглядит следующим образом:Как использовать выход FFMPEG как аргумент командной строки для исполняемого файла
ffmpeg -i file.wmv -ar 8000 -sample_fmt s16 -f wav pipe:1
труба: 1 выдает выходной файл волны в STDOUT. Я хочу захватить этот волновой файл из STDOUT и передать его в качестве аргумента командной строки для моего исполняемого файла, называемого foo. Я хочу сделать преобразование из wmv в wav на лету, а не сохранять WAV-файл. вещей я попытался следующие, но ни один из них, кажется, работают:
./foo $(ffmpeg -i file.wmv -ar 8000 -sample_fmt s16 -f wav pipe:1)
./foo $(<(ffmpeg -i file.wmv -ar 8000 -sample_fmt s16 -f wav pipe:1))
ffmpeg -i file.wmv -ar 8000 -sample_fmt s16 -f wav pipe:1 | xargs ./foo
ffmpeg -i file.wmv -ar 8000 -sample_fmt s16 -f wav - | ./foo -
Почему бы просто не пропустить трубку и не читать вашу программу с stdin? – AlG
Дизайн исполняемого файла не входит в мой контроль – pku
Как насчет использования перенаправления процесса bash? Второй пример, но только с '<(ffmpeg ...)', а не '$ (' и ')'? Результат этого будет выглядеть примерно так: ./foo/dev/fd/63', где fd заполняется выходом команды. – ghoti