2015-07-20 25 views

回答

2

注意有一些華而不實的ffmpeg bindings從在JuicyPixel圖像類型的視頻流圖像。已經有ticket用於製作fridayJuicyPixels發揮不錯 - 如果您真的有興趣以乾淨的方式完成此操作,我強烈建議您在週五處理此票的補丁。

另外,由於星期五的維護人員一直忙到9月份,我很樂意將您的更改與我的my own repository合併爲一般用途。

編輯:這很有趣。一種獲得懶惰圖像列表的方法是使用unsafeInterleaveIO

module LazyDemo where 

import Vision.Image.JuicyPixels 
import Vision.Image (RGBA) 
import Codec.FFmpeg 
import System.IO.Unsafe 

lazyStream :: FilePath -> IO [RGBA] 
lazyStream fp = do 
    initFFmpeg 
    (rd,close) <- imageReader fp 
    go rd close 
    where 
    go rd close = do 
     mi <- rd 
     case mi of 
      Nothing -> close >> return [] 
      Just i -> (toFridayRGBA i :) <$> unsafeInterleaveIO (go rd close) 
+0

尼斯thnx。我會看看 – fakedrake

+0

@fakedrake我製作了一個juicypixels到星期五轉換庫(https://github.com/TomMD/friday-juicypixels),它的工作原理與ffmpeg-light相當。感謝你的動力。 –

+0

哇,真棒!那麼如何在haskell中用ffmpeg製作一個懶惰的星期五圖像列表? – fakedrake

5

我不知道這樣的圖書館是否存在,但我懷疑不是。視頻編解碼器非常複雜。如果haskell存在,它很可能是一個ffmpeg包裝。無論如何,如果您只需要從某些視頻中提取幀,我會直接使用ffmpeg命令行工具。或者使用系統調用來動態執行它。

FFmpeg的命令是這個任務很簡單:

ffmpeg -i "input.mov" -an -f image2 "output_%05d.jpg" 

https://en.wikibooks.org/wiki/FFMPEG_An_Intermediate_Guide/image_sequence