我一直在玩v4l2,我終於設法連接到筆記本電腦的相機並將其設置爲流。從相機鏡頭創建視頻
此刻,我的幀保存爲1.jpg
,2.jpg
等
在基本層面上思考,我需要這些JPEG文件的存儲容器,然後在視頻播放器中運行序列中的容器內容和我視頻。
我認爲視頻格式將成爲我的容器。
如何創建和寫入一個?
我一直在玩v4l2,我終於設法連接到筆記本電腦的相機並將其設置爲流。從相機鏡頭創建視頻
此刻,我的幀保存爲1.jpg
,2.jpg
等
在基本層面上思考,我需要這些JPEG文件的存儲容器,然後在視頻播放器中運行序列中的容器內容和我視頻。
我認爲視頻格式將成爲我的容器。
如何創建和寫入一個?
最簡單的做法是將JPEG圖像保存在格式爲MJPEG的視頻文件中,該格式爲包含一系列JPEG圖像的簡單視頻格式。
您可以使用不同的隨時可用編碼器將一系列JPEG圖像轉換爲MJPEG(或任何其他格式)視頻文件,例如ffmpeg。使用ffmpeg
,你可以用下面的命令做到這一點:
ffmpeg -r 2 -i "%02d.jpg" -vcodec mjpeg test.avi
如果你想這樣做的走了,你可以使用死簡單github.com/icza/mjpeg
包(披露:我是作者)。
讓我們看一個例子,如何打開JPEG文件1.jpg
,2.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())
嘿,我對你建立的軟件包感到非常興奮。我剛下班回家就試了一下。我得到一個AVI文件,但它不起作用。 VLC報告以下錯誤。 '[00007fe028009478] avi demux error:沒有爲軌道0設置關鍵幀「 如果你想檢查我的代碼: [link](https://bitbucket.org/coder8/cam) – user3017869
@ user3017869你必須只要您打算添加新的圖像幀,請保持打開「AviWriter」,並在完成後關閉它。另外,你可以用[mplayer](http://www.mplayerhq.hu/design7/news.html)播放視頻嗎?因爲我用mplayer測試過,沒有錯誤('sudo apt install mplayer')。 – icza
@ user3017869添加了一個包含圖像和結果視頻的示例程序。請檢查:[示例](https://github.com/icza/mjpeg/tree/master/example) – icza
完成了我的MJPEG作家庫。請參閱編輯答案。 – icza