2016-11-21 61 views
2

我一直在玩v4l2,我終於設法連接到筆記本電腦的相機並將其設置爲流。從相機鏡頭創建視頻

此刻,我的幀保存爲1.jpg2.jpg

在基本層面上思考,我需要這些JPEG文件的存儲容器,然後在視頻播放器中運行序列中的容器內容和我視頻。

我認爲視頻格式將成爲我的容器。

如何創建和寫入一個?

+0

完成了我的MJPEG作家庫。請參閱編輯答案。 – icza

回答

1

最簡單的做法是將JPEG圖像保存在格式爲MJPEG的視頻文件中,該格式爲包含一系列JPEG圖像的簡單視頻格式。

您可以使用不同的隨時可用編碼器將一系列JPEG圖像轉換爲MJPEG(或任何其他格式)視頻文件,例如ffmpeg。使用ffmpeg,你可以用下面的命令做到這一點:

ffmpeg -r 2 -i "%02d.jpg" -vcodec mjpeg test.avi 

如果你想這樣做的走了,你可以使用死簡單github.com/icza/mjpeg包(披露:我是作者)。

讓我們看一個例子,如何打開JPEG文件1.jpg2.jpg,...,10.jpg成電影文件:

checkErr := func(err error) { 
    if err != nil { 
     panic(err) 
    } 
} 

// Video size: 200x100 pixels, FPS: 2 
aw, err := mjpeg.New("test.avi", 200, 100, 2) 
checkErr(err) 

// Create a movie from images: 1.jpg, 2.jpg, ..., 10.jpg 
for i := 1; i <= 10; i++ { 
    data, err := ioutil.ReadFile(fmt.Sprintf("%d.jpg", i)) 
    checkErr(err) 
    checkErr(aw.AddFrame(data)) 
} 

checkErr(aw.Close()) 
+0

嘿,我對你建立的軟件包感到非常興奮。我剛下班回家就試了一下。我得到一個AVI文件,但它不起作用。 VLC報告以下錯誤。 '[00007fe028009478] avi demux error:沒有爲軌道0設置關鍵幀「 如果你想檢查我的代碼: [link](https://bitbucket.org/coder8/cam) – user3017869

+0

@ user3017869你必須只要您打算添加新的圖像幀,請保持打開「AviWriter」,並在完成後關閉它。另外,你可以用[mplayer](http://www.mplayerhq.hu/design7/news.html)播放視頻嗎?因爲我用mplayer測試過,沒有錯誤('sudo apt install mplayer')。 – icza

+0

@ user3017869添加了一個包含圖像和結果視頻的示例程序。請檢查:[示例](https://github.com/icza/mjpeg/tree/master/example) – icza