【问题标题】:Using Pipe for input and output on FFMPEG?在 FFMPEG 上使用 Pipe 进行输入和输出?
【发布时间】:2015-03-03 04:33:18
【问题描述】:

我想使用 ffmpeg 将视频数据包转换为 mjpeg,理想情况下,我想通过管道传输 gob 数据包并通过管道接收输出。

我正在使用 C# 进程来调用 ffmpeg,如下所示:

-f h264 -i 管道:-an -f mjpeg -q:v 1 管道:

我使用流程 .StandardInput.BaseStream 在源数据流中进行管道传输,并从 .StandardOutput.BaseStream 获取返回的数据。

问题是,FFmpeg 不发送数据。它坐着,显然在等待。没有错误。没有任何内容被写入 StandardOutput。

如果我单独尝试每个管道,它工作正常。这些工作:

a) 传入源文件位置并通过管道获取返回的帧数据(字节写入标准输出)

b) 通过管道传入源字节并要求 Ffmpeg 将结果保存到文件

这不起作用:

c) 管道输入数据,并通过管道获取数据。

从@nmaier 之前对这个问题的回答 (Can I use ffmpeg to output jpegs to a memory stream instead of a file) 我认为 pipe-in​​/pipe-out 应该可以工作。但事实并非如此。

我做错了什么?

谢谢。

【问题讨论】:

    标签: c# ffmpeg pipe


    【解决方案1】:

    在一个程序中使用多个管道/多个方向似乎有一个警告。也许有一些你到目前为止还没有实现的多线程?

    当谷歌搜索时(尝试“windows匿名管道等待终止”或“windows匿名管道等待终止”)我发现了这个: http://blogs.msdn.com/b/oldnewthing/archive/2011/07/07/10183884.aspx

    这篇文章是关于使用管道时可能出现的死锁。

    【讨论】:

    • 谢谢。当我尝试将读取和写入操作放在不同的线程中时,我得到了部分文件的工作 - 当我删除所有等待时。我发现 ffmpeg 坐了一会,然后就开始行动了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2017-09-21
    • 2015-06-15
    • 2010-10-17
    • 1970-01-01
    • 2011-11-05
    • 2023-03-26
    相关资源
    最近更新 更多