Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 通过STDIN以编程方式向ffmpeg发送字节以创建静态图像文件_Vb.net_Ffmpeg_Stdin - Fatal编程技术网

Vb.net 通过STDIN以编程方式向ffmpeg发送字节以创建静态图像文件

Vb.net 通过STDIN以编程方式向ffmpeg发送字节以创建静态图像文件,vb.net,ffmpeg,stdin,Vb.net,Ffmpeg,Stdin,我试图使用vb.net代码将单个像素信息作为字节发送到ffmpeg,目的是保存一个静止的DPX图像文件。我已经成功地读取了DPX文件,并通过STDOUT将它们输出到vb.net代码中 管道电影文件似乎有很多例子,但也存在差异,例如一些人使用image2pipe,而另一些人使用rawvideo。我不确定什么时候该用一个而不是另一个。我尝试过的各种方法导致ffmpeg返回错误,例如“数据包对于DPX头太小”或“解码流时出错#0:0:处理输入时发现无效数据”。据我所知,我不提供标题,只提供原始单个像素

我试图使用vb.net代码将单个像素信息作为字节发送到ffmpeg,目的是保存一个静止的DPX图像文件。我已经成功地读取了DPX文件,并通过STDOUT将它们输出到vb.net代码中

管道电影文件似乎有很多例子,但也存在差异,例如一些人使用image2pipe,而另一些人使用rawvideo。我不确定什么时候该用一个而不是另一个。我尝试过的各种方法导致ffmpeg返回错误,例如“数据包对于DPX头太小”或“解码流时出错#0:0:处理输入时发现无效数据”。据我所知,我不提供标题,只提供原始单个像素RGBRGBRGB。。。。值作为字节数组

通过命令行发送到ffmpeg的参数有:

-f image2pipe-pix_fmt rgb24-s 16x16-bits_per_raw_样本8-c:v dpx-i-\MyPath\MyFilename.dpx

我的vb.net代码如下:

Dim P As New Process
P.StartInfo.FileName = m_FFMPEGExecutable_PathFile
P.StartInfo.Arguments = (see above arguments)
P.StartInfo.UseShellExecute = False
P.StartInfo.CreateNoWindow = True
P.StartInfo.RedirectStandardInput = True
p.Start


'Test image: A single red, green, blue, black and white pixel followed by all black

Dim Tiny((16 * 16) - 1) As Byte

Tiny(0) = 255
Tiny(1) = 0
Tiny(2) = 0

Tiny(3) = 0
Tiny(4) = 255
Tiny(5) = 0

Tiny(6) = 0
Tiny(7) = 0
Tiny(8) = 255

For i As byte = 9 To ((16x16)-1)
   Tiny(i) = 255
Next

'Send the rgb byte array to ffmpeg:
P.StandardInput.BaseStream.Write(Tiny, 0, Tiny.Length)
P.StandardInput.Flush()
P.StandardInput.Close()

我尝试了上述ffmpeg参数的许多变体,但似乎无法避免这些错误。如果您有任何建议,包括关于何时使用image2pipe与rawvideo的信息,我们将不胜感激。

既然您发送的是原始比特流,请使用rawvideo。删除
-c:v dpx
您能解释一下原始比特流和image2pipe之间的区别吗?据我所知,两者都是r、g、b、字节流?原始比特流没有任何元数据。image2pipe可用于发送JPEG、PNG等容器格式..etcGyan,我按照您的建议做了(使用了rawvideo而不是image2pipe,并从参数中删除了“-c:v dpx”。这导致了略有不同的错误....pipe::流0中的输入数据包损坏[rawvideo@00000 25EBF58E0C0]缓冲区大小无效,数据包大小256<解码流时预期帧大小768错误#0:0:参数无效对于格式为rgb24的16x16图像,您应发送16x16x3字节。每个三元组中的第一个字节是R,然后是G,然后是B。您似乎只发送256字节。