gpt4 book ai didi

c# - 如何使用ffmpeg从视频文件中提取图像流

转载 作者:行者123 更新时间:2023-12-04 23:31:39 25 4
gpt4 key购买 nike

我想使用 ffmpeg 从视频文件中提取图像流。

我知道我可以使用这些参数将它们直接提取到硬盘驱动器:

-i - -qscale 1 h:\out\img-%05d.jpg

但我想直接提取到流中。

到目前为止,这是我的代码:

private void ExtractImagesFromVideo(byte[] data,string _args)
{
try
{
serverBuild = new Process();
serverBuild.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
serverBuild.StartInfo.Arguments = _args;
serverBuild.StartInfo.FileName = Environment.CurrentDirectory + @"\ffmpeg.exe";
serverBuild.StartInfo.UseShellExecute = false;
serverBuild.StartInfo.RedirectStandardOutput = true;
serverBuild.StartInfo.RedirectStandardError = true;
serverBuild.StartInfo.RedirectStandardInput = true;
serverBuild.StartInfo.CreateNoWindow = true;
serverBuild.StartInfo.LoadUserProfile = false;
serverBuild.EnableRaisingEvents = true;
serverBuild.Start();

using (BinaryWriter bw = new BinaryWriter(serverBuild.StandardInput.BaseStream))
{
bw.Write(data);
}

mStandardOutput = serverBuild.StandardOutput.BaseStream;
mStandardOutput.BeginRead(mReadBuffer, 0, mReadBuffer.Length, StandardOutputReadCallback, null);
serverBuild.WaitForExit();
byte[] _data = mStandardOutputMs.ToArray();
mStandardOutput.Close();

}
catch (Exception _ex)
{

}
finally
{
serverBuild.Dispose();
}
}

我这样打电话:
     string _argsOut = @"-i pipe:0 -qscale 1 -f mjpeg pipe:1 ";
ExtractImagesFromVideo(data, _argsOut);

它卡在这条线上:
bw.Write(data);

谢谢

最佳答案

前几天,我在尝试使用 FFMPEG 从视频中提取单个图像时不小心这样做了。

这是您想要的命令行:“-i input.flv -f image2 -vf fps=fps=1 out%d.png”

input.flv 为源,fps=fps=1 将视频每秒生成一张图像,out%d.png 将是输出文件。文件名和文件扩展名之间需要“%d”,因为这将创建如下模式:out1.png、out2.png、out3.png 等。

关于c# - 如何使用ffmpeg从视频文件中提取图像流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20197424/

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