我一直在玩v4l2,我终于设法连接到我的笔记本电脑的相机并将其设置为流式传输。
目前我将相框保存为1.jpg
,2.jpg
等。
在基本层面上思考,我需要一个用于那些jpeg的存储容器,然后视频播放器按顺序运行容器内容,然后我会收到视频。
我认为视频格式将成为我的容器。
如何创建和写入一个?
答案 0 :(得分:3)
最简单的方法是将JPEG图像保存为格式MJPEG的视频文件,这是一种包含一系列JPEG图像的简单视频格式。
您可以使用不同的即用型编码器将一系列JPEG图像转换为MJPEG(或任何其他格式)视频文件,例如ffmpeg。使用ffmpeg
,您可以使用以下命令执行此操作:
ffmpeg -r 2 -i "%02d.jpg" -vcodec mjpeg test.avi
如果你想在Go中进行,你可以使用简单的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())