编写未压缩的AVI视频

时间:2011-10-04 00:21:36

标签: c++ video

是否有任何简单的小型库或代码示例可以用c ++编写未压缩的avi视频文件?
我找到的每个资源都使用视频用于Windows,我需要它是可移植的。

我尝试查看AVI容器文档,但看起来非常麻烦。

3 个答案:

答案 0 :(得分:0)

我自己没有这样做,但我建议使用libavformatffmpeg(LGPLv2.1 / GPLv2 +)的一部分。

答案 1 :(得分:0)

如果你想要一些超级简单的东西,那么将BMP作为编号序列写入磁盘,然后通过ffmpeg或类似的东西调用system()

ffmpeg -i picture_%04d.bmp -r 15 -vcodec rawvideo -y output.avi

注意:-r参数表示您希望最终电影的帧速率。

您可以通过调用ffmpeg所基于的libavformat / libavcodec库来获得相同的结果,但这可能不符合您的“小”和“简单”要求。

答案 2 :(得分:0)

总是OpenCV,它是多平台的,并且相对容易将数据推入。

或 - 您始终可以将视频数据传输到另一个可执行文件。

例如,在unix中你可以这样做:

在你的计划中:

char myimage[640*480*4];
// read data into myimage
fputs(myimage,1,640*480*4,stdout);

在运行程序的脚本中:

./myprogram | \
mencoder /dev/stdin -demuxer rawvideo -rawvideo w=640:h=480:fps=30:format=rgba \
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=9000000 \
-oac copy -o output.avi

(请注意,这会压缩视频 - 未压缩只是更改mencoder命令行的问题)

我相信你也可以用这种方式使用ffmpeg,或x264。您也可以从程序中启动编码器,并写入管道(如果使用库,则整个过程非常简单) - 这应该适用于Windows,Linux或Mac(对mencoder命令稍作修改 - 线)。

显然,除了分发mencoder可执行文件之外,没有许可问题,因为您没有链接到任何代码或编译任何代码。

虽然不是您想要的,但它确实具有第二个处理器将自动用于编码的优势。