从相机帧创建视频
Create video from camera frames
我一直在玩 v4l2,我终于设法连接到笔记本电脑的摄像头并将其设置为流式传输。
目前我将帧保存为 1.jpg
、2.jpg
等
在基本层面上思考,我需要一个存储容器来存储这些 jpeg,然后视频播放器按顺序运行容器内容,然后我得到视频。
我假设视频格式将成为我的容器。
如何创建和写入一个?
最简单的方法是将 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())
我一直在玩 v4l2,我终于设法连接到笔记本电脑的摄像头并将其设置为流式传输。
目前我将帧保存为 1.jpg
、2.jpg
等
在基本层面上思考,我需要一个存储容器来存储这些 jpeg,然后视频播放器按顺序运行容器内容,然后我得到视频。
我假设视频格式将成为我的容器。
如何创建和写入一个?
最简单的方法是将 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())