2015-12-21 115 views
0

我想通過使用Gstreaamer從視頻源保存RAW格式(PGM)中的多個文件。通過感謝gst-inspect工具,我可以使用不同的插件來源和接收器,但是我無法找到正確的方法來實現我的目標。我使用mfw_v4lsrc作爲源視頻,ffenc_pgm編碼和filesink保存文件。Gstreamer視頻到PGM文件

這是我的命令行: gst-launch mfw_v4lsrc device =/dev/video0 name = source! video/x-raw-yuv,width = 250,height = 250! ffenc_pgm! filesink location = test.pgm

我一直停留在無法將源代碼鏈接到ffenc_pgm。

我能夠獲得現場並保存爲jpeg。但爲了我的目標,我需要你的幫助。

感謝

回答

0

它可以是因爲你的源元素不能產生ffenc_pgm期望的格式(它似乎只想要灰度格式),或者因爲250x250的分辨率限制你強加的是,再次,你的來源元素可能無法產生。

你可以嘗試將轉換器,以幫助有:

gst-launch mfw_v4lsrc device=/dev/video0 name=source ! videoscale ! video/x-raw-yuv, width=250, height=250 ! ffmpegcolorspace ! ffenc_pgm ! filesink location=test.pgm 

也,你可能想用multifilesink替換文件接收如果你想要的是每一個緩衝文件,文件接收將創建一個單獨的文件。我不知道如何pgm文件的工作,所以我不能建議。

最後一個提示:請轉到gstreamer 1.x系列,0.10已過時並且已宣告超過3年。

+0

嗨thiagoss,對不起,我遲到了。我會盡快嘗試你的解決方案。謝謝 – deletMe

0

好的,

通過使用該:

GST-發射-v mfw_v4lsrc設備=的/ dev/video0的NUM-緩衝器= 9! ffmpegcolorspace! video/x-raw-gray,width = 248,height = 248,format =(fourcc)I420! ffenc_pgm! multifilesink location =「frame%d.pgm」

我有9個pgm文件,使用xnview進行驗證。但是,這些文件的編碼灰度等於255,但我需要在1024(每個像素2個字節)上編碼,並使用P5幻數。我不在ffmpegcolorspace或ffenc_pgm中找到如何做到這一點...

+0

ffenc_pgm不考慮其接收器上的最大灰度值。爲此,我將遷移到gstreamer-1.x,就像@thiagoss所說的那樣。事實上,avenc_pgm(取代gstreamer的1.x版本中的ffenc_pgm)負責處理其接收器上的bpp。所以它工作。 – deletMe