gpt4 book ai didi

c# - 如何设置 ffmpeg 管道输出?

转载 作者:行者123 更新时间:2023-12-02 22:20:36 24 4
gpt4 key购买 nike

我需要将 ffmpeg 输出读取为管道。
有一个代码示例:

    public static void PipeTest()
{
Process proc = new Process();
proc.StartInfo.FileName = Path.Combine(WorkingFolder, "ffmpeg");
proc.StartInfo.Arguments = String.Format("$ ffmpeg -i input.mp3 pipe:1");
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();

FileStream baseStream = proc.StandardOutput.BaseStream as FileStream;
byte[] audioData;
int lastRead = 0;

using (MemoryStream ms = new MemoryStream())
{
byte[] buffer = new byte[5000];
do
{
lastRead = baseStream.Read(buffer, 0, buffer.Length);
ms.Write(buffer, 0, lastRead);
} while (lastRead > 0);

audioData = ms.ToArray();
}

using(FileStream s = new FileStream(Path.Combine(WorkingFolder, "pipe_output_01.mp3"), FileMode.Create))
{
s.Write(audioData, 0, audioData.Length);
}
}

它是来自 ffmpeg 的日志,第一个文件被读取:

Input #0, mp3, from 'norm.mp3': Metadata: encoder : Lavf58.17.103 Duration: 00:01:36.22, start: 0.023021, bitrate: 128 kb/s Stream #0:0: Audio: mp3, 48000 Hz, stereo, fltp, 128 kb/s Metadata: encoder : Lavc58.27



然后管道:

[NULL @ 0x7fd58a001e00] Unable to find a suitable output format for '$' $: Invalid argument



如果我运行“-i input.mp3 pipe:1”,则日志为:

Unable to find a suitable output format for 'pipe:1' pipe:1: Invalid argument



如何设置正确的输出? ffmpeg 应该如何知道输出格式是什么?

最佳答案

每当您在 ffmpeg 中使用管道输出时,都需要 -f fmt参数以避免您看到的错误。

您可以通过键入 ffmpeg -formats 来获取可能的格式列表。 .

例如,如果你想要一个 wav 文件,添加 -f wav .

在您的示例中,参数应该是:
-i input.mp3 -f wav pipe:1
您可以将 wav 替换为 flac 或您喜欢的任何其他音频格式。

关于c# - 如何设置 ffmpeg 管道输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52303867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com