从相机框架创建视频

时间:2016-11-21 07:57:53

标签: video go video-encoding mjpeg

我一直在玩v4l2,我终于设法连接到我的笔记本电脑的相机并将其设置为流式传输。

目前我将相框保存为1.jpg2.jpg等。

在基本层面上思考,我需要一个用于那些jpeg的存储容器,然后视频播放器按顺序运行容器内容,然后我会收到视频。

我认为视频格式将成为我的容器。

如何创建和写入一个?

1 个答案:

答案 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.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())