2009-02-11 25 views
18

有沒有人有已知的可靠方法從一系列圖像文件創建視頻?在發佈這個問題之前,在你拒絕搜索答案之前,以及在你發佈諸如「使用FFMPEG」之類的簡單消息之前,請閱讀本消息的其餘部分。從C#中的圖像製作視頻的工作方式

我試圖創建一個視頻,只要它被廣泛支持,從一系列圖像(.jpg,.bmp等)中獲取什麼格式並不重要。我的平臺是Windows Server 2008,64位。如果我可以從我的C#程序中製作視頻,那很好,但我並不反對將一系列圖像文件寫入目錄,然後發射一個外部程序以從這些圖像製作視頻。

唯一的約束是:它必須在我的Windows Server 2008系統上工作,並且可以編寫腳本。也就是說,不需要操作員干預的GUI程序。

我在StackOverflow上發現了一些類似的問題,並嘗試了幾種解決方案,所有解決方案都有不同程度的挫折,而且沒有任何解決方案像成功。

FFMPEG看起來像一個偉大的程序。也許是在Linux上。我下載的兩個Windows版本已損壞。給定此命令行:

ffmpeg -r 1 -f image2 -i jpeg\*.jpg video.avi 

其中一個版本讀取圖像,然後由於數據執行預防而崩潰。另一個讀取第一個文件,然後吐出一條錯誤消息,指出「找不到適合jpeg/image2.jpg文件的編解碼器」。那很有幫助。無論如何,FFMPEG在Windows下看起來像一個非啓動器。

以前發帖的一個答案推薦Splicer。它看起來像很不錯的代碼。我編譯了這些示例並嘗試運行,但得到了一些關於未找到文件的神祕錯誤消息。它看起來像一個COM類沒有註冊。我想我需要安裝一些東西(DirectShow,也許,雖然我認爲已經安裝了)。根據需要,我可能很難在服務器上安裝它。 (「什麼?爲什麼你需要在服務器上?」)

另一個答案建議來自Code Project的AviFile庫。這看起來很簡單:圍繞Windows AviFile子系統的一個包裝。除了包創建的AVI文件似乎具有所有幀,但只有第一幀顯示在Windows Media Player中播放AVI時。那麼,如果您嘗試創建壓縮視頻,則該程序會引發異常。

所以,我想知道是否有一個好的,可靠的方式來做我想做的事情:在Windows系統上,通過一系列圖像創建一個AVI或其他常見的視頻文件格式API或使用外部程序。任何幫助?

+0

嘗試使用ffmpeg命令而不使用-f image2或使用-f jpeg,即'ffmpeg -r 1 -i jpeg/* .jpg video.avi'或'ffmpeg -r 1 -f jpeg -i jpeg/*。jpg video.avi' – configurator 2009-02-11 23:22:52

+0

@configurator:without -f image2,我得到相同的結果。使用-f jpeg,我會得到「未知輸入或輸出格式:jpeg」。 – 2009-02-12 00:07:29

回答

10

經過一段時間,看看x264和VideoLan,我回到了拼接器。事實證明,這個神祕的錯誤消息是由於我的代碼中有錯誤。

它看起來像拼接器將做我想做的:以編程方式從一系列圖像創建視頻。

感謝所有回覆。

1

在Windows上處理視頻(編碼和回放)是一個真正的泥潭。而.NET根本不會幫助你 - 你總是要麼是PInvoking/COM-interoping本地API,要麼是使用別人構建的.NET包裝器來做同樣的事情。

無論如何,我不能說我已經使用過它,但好的打賭似乎是x264 library that is part of the videolan project。這爲您提供了一個獨立的C庫,您可以使用PInvoke並且不必擔心在服務器上安裝和DirectShow垃圾。據我瞭解,它會生成可在Flash中播放的H.264格式視頻。

6

你可以使用VideoLan,我推薦它。

我已經在C#應用程序的直接經驗與VideoLAN的做這兩件事情:

  1. 嵌入在我的C#應用​​VLC瀏覽器(有3-4個C#「包裝」爲VLC veiwer) 。
  2. 通過發送命令行參數在單獨的進程中使用vlc.exe。

VideoLan具有命令行界面的事實是一件好事。並且VLC支持禁用任何可視元素的命令行選項;所以VLC GUI不會彈出,也不會出現命令行窗口。因此,在C#應用程序中,您可以將視頻相關工作排除在VLC客戶端之外。 C#有Process類,可以爲你管理你的vlc.exe實例。它最終是一個非常整潔的解決方案。

0

我用mplayer的MENCODER在Linux上創建AVI(與編解碼器MSMPEG4/MP3,通過與Windows Media Player默認讀取)從TGA文件是這樣的:

mencoder mf://*.tga -mf fps=25:type=tga \ 
    -audiofile /tmp/test.mp3 -oac copy \ 
    -of lavf -ovc lavc \   
    -lavcopts vcodec=msmpeg4v2:mbd=2:mv0:trell:cbp:last_pred=3:vbitrate=3000 \ 
    -o /tmp/test.avi 

我知道的mplayer確實有一個Windows版本。

0

您可以將您想要包含在視頻中的所有圖像複製到剪貼板,並將其導入到Windows Live Movie Maker(當然是動態!),並將它爲你編譯!

所有這些都可以通過代碼完成,但這樣,您不必自己創建它。正如你所說,該平臺是Windows和所有Windows譜曲已安裝的Windows Live Movie Maker中,所以它不應該是使用應用程序的人一個問題,除非

一)他們卸載的Windows Live Movie Maker中

b)他們使用的計算機運行在Windows版本超過8或9歲...

相關問題