2015-03-02 109 views
0

我想使用ffmpeg將視頻數據包轉換爲mjpeg,理想情況下,我想通過管道傳輸包並通過管道接收輸出。在FFMPEG上使用管道進行輸入和輸出?

我使用C#進程調用的ffmpeg這樣的:

-f H264 -i管:-an -f MJPEG -q:V 1管:在源數據中

我管流使用進程.StandardInput.BaseStream並從.StandardOutput.BaseStream獲取返回的數據。

問題是,FFmpeg不發送數據。它坐着,顯然在等待。沒有錯誤。沒有任何內容寫入StandardOutput。

如果我自己嘗試每個管道,它工作正常。這些工作:

一)通過在一個源文件位置和獲取經由管返回的幀數據(字節寫入StandardOutput)

b)中通過管並要求ffmpeg的保存結果向文件通過在源字節

這不起作用:

C)管道系統中的數據,並獲取數據了通過管道。

從以前對@nmaier給這個問題的回答(Can I use ffmpeg to output jpegs to a memory stream instead of a file)我認爲管道輸入/管道輸出應該起作用。但事實並非如此。

我在做什麼錯?

謝謝。

回答

1

在一個程序中使用多個管道/多個方向似乎有一個警告。也許有一些你現在還沒有實現的多線程?使用管道時 http://blogs.msdn.com/b/oldnewthing/archive/2011/07/07/10183884.aspx

這篇文章是關於可能出現的死鎖:

當谷歌搜索(嘗試「窗口匿名管道等到終止」或「窗口匿名管道等到終止」),我發現這一點。

+0

謝謝你。當我嘗試將讀取和寫入操作放在不同的線程中時,以及何時刪除了所有等待時,我得到了部分文件的部分工作。我發現ffmpeg坐了一會兒,然後進入行動。 – Sugrue 2015-03-03 10:20:06